合肥市网站建设_网站建设公司_Angular_seo优化
2025/12/25 15:03:07 网站建设 项目流程

nginx官网

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

访问 nginx官网: https://nginx.org/en/download.html

image-20250319190209655

nginx官网提供了三个版本,一个是主线版本,更新最快;一种是稳定版,还有以前的旧版本。

提供两种安装包,一种是linux的源码包,需要自己进行编译,另一种是windows的二进制压缩包,可以直接使用。

nginx的编译安装

准备编译环境

[root@iZuf69dkx8oofy4z2dr2vkZ ~]# yum install gcc*        # 这里安装了更新的安装包,所以需要使用 --skip-broken 选项跳过,继续安装未安装的包
alinux3-os                                                                                          779 kB/s | 3.8 kB     00:00    
alinux3-updates                                                                                     1.0 MB/s | 4.1 kB     00:00    
alinux3-updates                                                                                      84 MB/s |  32 MB     00:00    
alinux3-module                                                                                      1.2 MB/s | 4.2 kB     00:00    
alinux3-plus                                                                                        840 kB/s | 3.0 kB     00:00    
alinux3-plus                                                                                         84 MB/s |  30 MB     00:00    
alinux3-powertools                                                                                  772 kB/s | 3.0 kB     00:00    
Docker CE Stable - x86_64                                                                           144 kB/s | 3.5 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                                                      1.0 MB/s | 4.4 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                                                       67 MB/s |  14 MB     00:00    
Extra Packages for Enterprise Linux Modular 8 - x86_64                                              817 kB/s | 3.0 kB     00:00    
Package gcc-10.2.1-3.8.al8.x86_64 is already installed.
Error: Problem 1: conflicting requests- nothing provides gcc(major) = 8 needed by gcc-go-8.5.0-25.el8.x86_64 from epelProblem 2: conflicting requests- nothing provides gcc(major) = 8 needed by gcc-objc++-8.5.0-25.el8.x86_64 from epelProblem 3: conflicting requests- nothing provides gcc(major) = 8 needed by gcc-objc-8.5.0-25.el8.x86_64 from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
[root@iZuf69dkx8oofy4z2dr2vkZ ~]# yum install make
Last metadata expiration check: 0:00:08 ago on Wed 19 Mar 2025 09:06:21 PM CST.
Package make-1:4.2.1-11.0.1.al8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@iZuf69dkx8oofy4z2dr2vkZ ~]#

安装依赖

[root@iZuf69dkx8oofy4z2dr2vkZ ~]# yum install -y pcre pcre-devel
[root@iZuf69dkx8oofy4z2dr2vkZ ~]# yum install -y zlib zlib-devel
[root@iZuf69dkx8oofy4z2dr2vkZ ~]# yum install -y openssl openssl-devel
  • PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。
  • 注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。
  • zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。
  • OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

下载源码包

下载nginx并解压解压nginx

[root@iZuf69dkx8oofy4z2dr2vkZ ~]# wget https://nginx.org/download/nginx-1.26.3.tar.gz
--2025-03-19 21:04:23--  https://nginx.org/download/nginx-1.26.3.tar.gz
Resolving nginx.org (nginx.org)... 3.125.197.172, 52.58.199.22, 2a05:d014:5c0:2600::6, ...
Connecting to nginx.org (nginx.org)|3.125.197.172|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1260179 (1.2M) [application/octet-stream]
Saving to: ‘nginx-1.26.3.tar.gz’nginx-1.26.3.tar.gz              100%[==========================================================>]   1.20M   252KB/s    in 4.9s    2025-03-19 21:04:29 (252 KB/s) - ‘nginx-1.26.3.tar.gz’ saved [1260179/1260179][root@iZuf69dkx8oofy4z2dr2vkZ ~]# tar -zxvf nginx-1.26.3.tar.gz 
[root@iZuf69dkx8oofy4z2dr2vkZ ~]# ll
drwxr-xr-x  8  502 games    4096 Feb  5 19:22 nginx-1.26.3
-rw-r--r--  1 root root  1260179 Feb  5 19:22 nginx-1.26.3.tar.gz
[root@iZuf69dkx8oofy4z2dr2vkZ ~]#

配置编译参数

使用 configure 命令配置编译参数,并生成 makeFile 文件

[root@iZuf69dkx8oofy4z2dr2vkZ ~]# cd nginx-1.26.3/
[root@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# ./configure         # 检测你的电脑环境是否支持安装
[root@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# ./configure --help  # 查看有哪些选项可以设置
[root@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# ./configure \       # 设置需要的选项
> --prefix=/usr/local/nginx \
> --sbin-path=/usr/local/nginx/sbin/nginx \
> --conf-path=/usr/local/nginx/conf/nginx.conf \
> --error-log-path=/usr/local/nginx/logs/error.log \
> --http-log-path=/usr/local/nginx/logs/access.log \
> --pid-path=/usr/local/nginx/logs/nginx.pid \
> --with-http_stub_status_module \
> --with-http_ssl_module \
> --with-http_gzip_static_module \
> --with-pcre=============省略================nginx path prefix: "/usr/local/nginx"nginx binary file: "/usr/local/nginx/sbin/nginx"nginx modules path: "/usr/local/nginx/modules"nginx configuration prefix: "/usr/local/nginx/conf"nginx configuration file: "/usr/local/nginx/conf/nginx.conf"nginx pid file: "/usr/local/nginx/logs/nginx.pid"nginx error log file: "/usr/local/nginx/logs/error.log"nginx http access log file: "/usr/local/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@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# make
make -f objs/Makefile
make[1]: Entering directory '/root/nginx-1.26.3'
省略====================
[root@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# make install
省略====================

安装之后,在安装目录生成的文件

image-20250319213016352

image-20250319213738343

启停nginx

启动nginx服务器

进入到Nginx的sbin目录,启动Nginx

[root@iZuf69dkx8oofy4z2dr2vkZ nginx]# cd sbin
[root@iZuf69dkx8oofy4z2dr2vkZ sbin]# ./nginx
[root@iZuf69dkx8oofy4z2dr2vkZ sbin]#    ps aux | grep nginx
root      604139  0.0  0.0   8380   800 ?        Ss   21:36   0:00 nginx: master process ./nginx
nobody    604140  0.0  0.0  10924  4708 ?        S    21:36   0:00 nginx: worker process
root      604142  0.0  0.0 221528   964 pts/0    S+   21:36   0:00 grep --color=auto nginx
[root@iZuf69dkx8oofy4z2dr2vkZ sbin]# ./nginx -s stop
[root@iZuf69dkx8oofy4z2dr2vkZ sbin]#
  • ./nginx启动nginx
  • ./nginx -c /usr/local/nginx/conf/nginx.conf

-c指定加载的nginx配置文件,如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定

启动后查看nginx进程

ps aux|grep nginx
image

访问nginx

使用浏览器访问nginx服务器的80端口(记得放开80端口),可以看到nginx欢迎页面

image-20250319213942979

关闭nginx

  • 方式1,快速停止:./nginx -s stop

此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

  • 方式2,完整停止(建议使用):./nginx -s quit

此方式停止步骤是待nginx进程处理任务完毕进行停止。

将编译安装nginx交给systemctl来控制

[root@iZuf69dkx8oofy4z2dr2vkZ nginx-1.26.3]# cd /etc/systemd/system/
[root@iZuf69dkx8oofy4z2dr2vkZ system]# vim nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true[Install]
WantedBy=multi-user.target
[root@iZuf69dkx8oofy4z2dr2vkZ system]# systemctl daemon-reload
[root@iZuf69dkx8oofy4z2dr2vkZ system]# systemctl start nginx
[root@iZuf69dkx8oofy4z2dr2vkZ system]# systemctl stop nginx

运行失败:需要检查一下脚本里面语法对不对,特别是-f-t-s中间有没有少空格

[root@iZuf69dkx8oofy4z2dr2vkZ system]# systemctl start nginx
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
[root@iZuf69dkx8oofy4z2dr2vkZ system]#

报错

make阶段报错

第一个错误:

objs/src/core/ngx_murmurhash.o]

原因只复制粘贴了 ./configure \ 后面的全部没有了,导致报错
解决办法,使用完整的 configure 命令创建 makeFile 文件

第二个错误:ngx_murmurhash.o failed

image

解决办法:找到Makefile文件将 -Werror删除即可

第三个报错:‘struct crypt_data’没有名为‘current_salt’的成员

image

image

两种解决办法:把这一行注释掉;或者更换高版本

这里更换为1.16版本 更换之后不报错。。。

安装报错报错:

make: *** 没有规则可制作目标“build”,由“default” 需求。

未安装编译环境和依赖库,安装之后重新生成makefile文件

使用过程中报错:

报错1:open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

编辑配置文件nginx.conf

添加pid /var/run/nginx/nginx.pid;

然后创建 /var/run/nginx/ 目录

然后启动nginx

image

报错2:启动nginx之后报错:Failed to start SYSV: http service..但是可以正常访问,还有别的告警,忘记截图了。。只有当时复制出来的一点

查看nginx服务状态

systemctl status nginx.serviceFailed to start SYSV: http service..(code=exited, status=1/FAILURE)

重启一下就行了。。

参考

nginx 启动报错 “/var/run/nginx/nginx.pid" failed” 解决方法 - 风止雨歇 - 博客园

Nginx启动异常及解决方案:Failed to start SYSV: NGINX is an HTTP(S) server, HTTP(S) reverse proxy_Java初学者-CSDN博客

yum安装nginx

配置yum源之后,可以直接使用yum命令安装nginx

[root@iZuf69dkx8oofy4z2dr2vkZ system]# yum search nginx    # 搜索一下nginx包yum install nginx

查看当前nginx开启了哪些选项

./nginx -v          # 查看nginx的版本信息./nginx -V          # 查看更加详细的信息,包括开启了哪些编译参数

编译安装和yum安装都可以使用这个方法查看,自己编译安装的nginx,开启的选项少一些,yum安装的,开启的选项多一些。

通过信号指令来控制Nginx进程

  • Nginx 可以通过 kill 命令发送信号给 Nginx 进程。语法如下:
    kill -XXX pid
    
    XXX:信号名(如 QUITHUP 等)。pid是Nginx的进程号
常用的信号 作用
QUIT 处理完当前请求后,优雅地关闭 Nginx 进程。
HUP 重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx。
USR1 用于Nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个新的日志文件时,可以使用这个信号来控制。
USR2 平滑升级可执行程序,用于升级 Nginx 二进制文件。
WINCH 从容关闭工作进程,通常与 USR2 信号配合使用,用于升级 Nginx。
  • 要不间断服务地重新启动Nginx:可以通过发送 HUP 信号来实现平滑重启:
    kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
    
    • HUP 信号会让 Nginx 重新加载配置文件,并启动新的工作进程,同时优雅地关闭旧的工作进程,确保服务不中断。

linux #nginx #编译安装

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询