如何在CentOS 7上通过编译源码来安装配置NGINX
零 机器信息
[root@gxbigdatadev ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
[root@gxbigdatadev ~]# uptime
10:16:48 up 17 days, 22:19, 4 users, load average: 0.12, 0.04, 0.05
[root@gxbigdatadev ~]#
[root@gxbigdatadev ~]# uname -rm
3.10.0-693.el7.x86_64 x86_64
[root@gxbigdatadev ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
[root@gxbigdatadev ~]# free -m
total used free shared buff/cache available
Mem: 7822 5549 188 42 2084 1893
Swap: 0 0 0
[root@gxbigdatadev ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 498G 14G 485G 3% /
devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs tmpfs 3.9G 42M 3.8G 2% /run
tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.9G 180M 1.7G 10% /boot
tmpfs tmpfs 783M 56K 783M 1% /run/user/1000
/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/t1/CentOS 7 x86_64
tmpfs tmpfs 783M 0 783M 0% /run/user/0
[root@gxbigdatadev ~]# 一 下载解压
到NGINX官网,下载最新版本的NGINX 1.24。https://nginx.org/en/download.html
[root@gxbigdatadev ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz --2023-04-28 10:23:58-- https://nginx.org/download/nginx-1.24.0.tar.gz Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6, ... Connecting to nginx.org (nginx.org)|3.125.197.172|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1112471 (1.1M) [application/octet-stream] Saving to: 'nginx-1.24.0.tar.gz' 100%[========================================================================================================================================>] 1,112,471 629KB/s in 1.7s 2023-04-28 10:24:01 (629 KB/s) - 'nginx-1.24.0.tar.gz' saved [1112471/1112471] [root@gxbigdatadev ~]# tar -zxvf nginx-1.24.0.tar.gz nginx-1.24.0/ nginx-1.24.0/auto/ ... nginx-1.24.0/auto/cc/sunc [root@gxbigdatadev ~]#
二 编译源码
进入到解压后的源代码路径下,执行./configure –prefix=/etc/nginx –with-http_ssl_module来编译源码。如果遇到因为操作系统缺少必要的软件包,则根据提示先安装系统软件包,再重新执行编译。
[root@gxbigdatadev ~]# cd nginx-1.24.0/ [root@gxbigdatadev nginx-1.24.0]# ll total 816 drwxr-xr-x. 6 1001 1001 4096 Apr 28 10:24 auto -rw-r--r--. 1 1001 1001 323312 Apr 11 09:45 CHANGES -rw-r--r--. 1 1001 1001 494234 Apr 11 09:45 CHANGES.ru drwxr-xr-x. 2 1001 1001 168 Apr 28 10:24 conf -rwxr-xr-x. 1 1001 1001 2611 Apr 11 09:45 configure drwxr-xr-x. 4 1001 1001 72 Apr 28 10:24 contrib drwxr-xr-x. 2 1001 1001 40 Apr 28 10:24 html -rw-r--r--. 1 1001 1001 1397 Apr 11 09:45 LICENSE drwxr-xr-x. 2 1001 1001 21 Apr 28 10:24 man -rw-r--r--. 1 1001 1001 49 Apr 11 09:45 README drwxr-xr-x. 9 1001 1001 91 Apr 28 10:24 src [root@gxbigdatadev nginx-1.24.0]# ./configure --prefix=/etc/nginx --with-http_ssl_module checking for OS + Linux 3.10.0-693.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler ... creating objs/Makefile Configuration summary + using system PCRE library + using system OpenSSL library + using system zlib library nginx path prefix: "/etc/nginx" nginx binary file: "/etc/nginx/sbin/nginx" nginx modules path: "/etc/nginx/modules" nginx configuration prefix: "/etc/nginx/conf" nginx configuration file: "/etc/nginx/conf/nginx.conf" nginx pid file: "/etc/nginx/logs/nginx.pid" nginx error log file: "/etc/nginx/logs/error.log" nginx http access log file: "/etc/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" [root@gxbigdatadev nginx-1.24.0]#
三 安装配置
源码编译之后,如果没有问题,则可以执行make && make install来安装NGINX软件。
[root@gxbigdatadev nginx-1.24.0]# make && make install
...
test -d '/etc/nginx/logs' \
|| mkdir -p '/etc/nginx/logs'
make[1]: Leaving directory `/root/nginx-1.24.0'
[root@gxbigdatadev nginx-1.24.0]# 四 设置自动启动
通过执行下述配置脚本来设置NGINX服务随着OS的启动而自动启动:
cat <<EOF>/etc/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/etc/nginx/sbin/nginx
ExecReload=/etc/nginx/sbin/nginx -s reload
ExecStop=/etc/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
[root@gxbigdatadev nginx-1.24.0]# cat <<EOF>/etc/systemd/system/nginx.service
> [Unit]
> Description=nginx
> After=network.target
>
> [Service]
> Type=forking
> ExecStart=/etc/nginx/sbin/nginx
> ExecReload=/etc/nginx/sbin/nginx -s reload
> ExecStop=/etc/nginx/sbin/nginx -s quit
> PrivateTmp=true
>
> [Install]
> WantedBy=multi-user.target
> EOF
[root@gxbigdatadev nginx-1.24.0]#
[root@gxbigdatadev nginx-1.24.0]# systemctl daemon-reload
systemctl start nginx
systemctl enable nginx [root@gxbigdatadev nginx-1.24.0]# systemctl start nginx
[root@gxbigdatadev nginx-1.24.0]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /etc/systemd/system/nginx.service.
[root@gxbigdatadev nginx-1.24.0]# systemctl status nginx
● nginx.service - nginx
Loaded: loaded (/etc/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-04-28 10:32:34 CST; 13s ago
Main PID: 18192 (nginx)
CGroup: /system.slice/nginx.service
├─18192 nginx: master process /etc/nginx/sbin/nginx
└─18193 nginx: worker process
Apr 28 10:32:34 gxbigdatadev.localdomain systemd[1]: Starting nginx...
Apr 28 10:32:34 gxbigdatadev.localdomain systemd[1]: Started nginx.
[root@gxbigdatadev nginx-1.24.0]# 五 添加配置文件路径
重建/etc/nginx/conf.d,专门用于存放配置文件。然后,再在/etc/nginx/conf/nginx.conf主配置文件中,添加这个路径,并重启NGINX。
[root@gxbigdatadev ~]# cd /etc/nginx/
[root@gxbigdatadev nginx]# mkdir -p conf.d
[root@gxbigdatadev nginx]# pwd
/etc/nginx
[root@gxbigdatadev nginx]# ll
total 4
drwx------. 2 nobody root 6 Apr 28 10:32 client_body_temp
drwxr-xr-x. 2 root root 4096 Apr 28 10:53 conf
drwxr-xr-x. 2 root root 6 Apr 28 10:49 conf.d
drwx------. 2 nobody root 6 Apr 28 10:32 fastcgi_temp
drwxr-xr-x. 2 root root 40 Apr 28 10:28 html
drwxr-xr-x. 2 root root 58 Apr 28 10:32 logs
drwx------. 2 nobody root 6 Apr 28 10:32 proxy_temp
drwxr-xr-x. 2 root root 19 Apr 28 10:28 sbin
drwx------. 2 nobody root 6 Apr 28 10:32 scgi_temp
drwx------. 2 nobody root 6 Apr 28 10:32 uwsgi_temp
[root@gxbigdatadev nginx]# vi conf/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
include conf.d/*; #添加这一行,保存退出
http {
include mime.types;
[root@gxbigdatadev nginx]# nginx -t
nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/conf/nginx.conf test is successful
[root@gxbigdatadev nginx]# nginx -s reload
[root@gxbigdatadev nginx]# 六 完整脚本
wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure --prefix=/etc/nginx --with-http_ssl_module make && make install cat <<EOF>/etc/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/etc/nginx/sbin/nginx ExecReload=/etc/nginx/sbin/nginx -s reload ExecStop=/etc/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target EOF ### systemctl daemon-reload systemctl start nginx systemctl enable nginx systemctl status nginx



一条评论
Pingback: