如何通过源码编译在Linux系统上安装Nginx服务器?

2026-05-05 23:571阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1124个文字,预计阅读时间需要5分钟。

如何通过源码编译在Linux系统上安装Nginx服务器?

使用源代码安装nginx,可以深入理解Linux目录结构,今天我们来摒弃yum、rpm、dnf等傻瓜式操作,实战源代码编译安装nginx!准备工作+准备nginx源代码包:

使用源码的方式安装nginx,可以加深对linux目录的理解,今天就来放弃yum.. rpm.. dnf.. 这些在linux下较为“傻瓜”的操作方式,实战源码编译的方式安装nginx! ​准备工作

准备nginx源码包:

nginx.org/en/download.html

准备相关的依赖包以及环境:

gzip 模块需要 zlib 库www.zlib.net/rewrite

模块需要 pcre 库www.pcre.org/

若开启ssl 功能则需要 openssl 库www.openssl.org/source/

如果没有安装gcc-c++,需要安装它,运行如下命令:

yum install gcc-c++

安装完成:

用上传工具将安装包拷贝到Home的任意目录下

将这几个文件拷贝至/usr目录下:

sudo cp openssl-3.0.2.tar.gz /usr/ sudo cp pcre-8.45.tar.gz /usr/ sudo cp zlib-1.2.11.tar.gz /usr/ sudo cp nginx-1.20.2.tar.gz /usr/ 安装openssl-3.0.2:

回到/usr目录下运行:

sudo tar -zxvf openssl-3.0.2.tar.gz cd openssl-3.0.2 sudo ./config sudo make && make install

如果出现Can'tlocateIPC/Cmd.pm 这样的错误如下图

则根据这篇文章安装相关模块

(5条消息) 编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC_Sunlight_Rain_的博客-CSDN博客blog.csdn.net/sd4493091/article/details/122220902

安装pcre-8.45:

回到/usr目录下运行:

sudo tar -zxvf pcre-8.45.tar.gz cd pcre-8.45 sudo ./configure sudo make && make install 安装zlib-1.2.11:

回到/usr目录下运行:

sudo tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 sudo ./configure sudo make && make install

安装nginx

回到/usr目录下运行:

sudo tar zxvf nginx-1.20.2.tar.gz cd nginx-1.8.0 sudo ./configure

configure的时候会验证安装环境,若依赖包环境安装不全则可能出现如下错误

通过所有检测:

如何通过源码编译在Linux系统上安装Nginx服务器?

运行:

sudo make && make install

等待编译完成,运行whereis查看nginx安装目录:

运行下面语句,将执行二进制软链接到/usr/sbin/nginx目录下:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

安装成功

将nginx写入系统服务

运行下面语句在 /usr/lib/systemd/system/目录下建立服务描述文件nginx.service:

vi /usr/lib/systemd/system/nginx.service

输入下面内容并保存

[Unit] Description=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid # Nginx will fail to start if /run/nginx.pid already exists but has the wrong # SELinux context. This might happen when running `nginx -t` from the cmdline. # bugzilla.redhat.com/show_bug.cgi?id=1268621 ExecStartPre=/usr/bin/rm -f /run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=mixed PrivateTmp=true [Install] WantedBy=multi-user.target

运行如下命令,重新加载配置文件和.service文件:

sudo systemctl daemon-reload

可以看到 服务已经被加载进来了

之后就可以启用服务或者添加到启动项了

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

最后一步别忘了开启防火墙80端口的访问:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload

成功启动:

Troubleshooting

1. 如果端口被占用,则无法运行nginx,默认nginx是通过80端口访问的,所以需要排查端口占用的程序:

netstat -tunlp

2. 如果systemd有报错,可以通过如下命令查看

sudo journalctl -fu nginx.service

3. 默认情况下日志记录在syslog,如果看报错详细,可以通过如下命令查看

sudo cat /var/log/messages

4. 如果有类似Can't open PID file /run/nginx.pid这样的报错,需要修改nginx.service 中pid文件的路径为实际pid的路径,具体路径在nginx.conf中查看:

运行下面命令:

sudo vi /usr/lib/systemd/system/nginx.service

将ExecStartPre与PIDFile项改为如下:

ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid PIDFile=/usr/local/nginx/logs/nginx.pid

全文完

标签:方式

本文共计1124个文字,预计阅读时间需要5分钟。

如何通过源码编译在Linux系统上安装Nginx服务器?

使用源代码安装nginx,可以深入理解Linux目录结构,今天我们来摒弃yum、rpm、dnf等傻瓜式操作,实战源代码编译安装nginx!准备工作+准备nginx源代码包:

使用源码的方式安装nginx,可以加深对linux目录的理解,今天就来放弃yum.. rpm.. dnf.. 这些在linux下较为“傻瓜”的操作方式,实战源码编译的方式安装nginx! ​准备工作

准备nginx源码包:

nginx.org/en/download.html

准备相关的依赖包以及环境:

gzip 模块需要 zlib 库www.zlib.net/rewrite

模块需要 pcre 库www.pcre.org/

若开启ssl 功能则需要 openssl 库www.openssl.org/source/

如果没有安装gcc-c++,需要安装它,运行如下命令:

yum install gcc-c++

安装完成:

用上传工具将安装包拷贝到Home的任意目录下

将这几个文件拷贝至/usr目录下:

sudo cp openssl-3.0.2.tar.gz /usr/ sudo cp pcre-8.45.tar.gz /usr/ sudo cp zlib-1.2.11.tar.gz /usr/ sudo cp nginx-1.20.2.tar.gz /usr/ 安装openssl-3.0.2:

回到/usr目录下运行:

sudo tar -zxvf openssl-3.0.2.tar.gz cd openssl-3.0.2 sudo ./config sudo make && make install

如果出现Can'tlocateIPC/Cmd.pm 这样的错误如下图

则根据这篇文章安装相关模块

(5条消息) 编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC_Sunlight_Rain_的博客-CSDN博客blog.csdn.net/sd4493091/article/details/122220902

安装pcre-8.45:

回到/usr目录下运行:

sudo tar -zxvf pcre-8.45.tar.gz cd pcre-8.45 sudo ./configure sudo make && make install 安装zlib-1.2.11:

回到/usr目录下运行:

sudo tar -zxvf zlib-1.2.11.tar.gz cd zlib-1.2.11 sudo ./configure sudo make && make install

安装nginx

回到/usr目录下运行:

sudo tar zxvf nginx-1.20.2.tar.gz cd nginx-1.8.0 sudo ./configure

configure的时候会验证安装环境,若依赖包环境安装不全则可能出现如下错误

通过所有检测:

如何通过源码编译在Linux系统上安装Nginx服务器?

运行:

sudo make && make install

等待编译完成,运行whereis查看nginx安装目录:

运行下面语句,将执行二进制软链接到/usr/sbin/nginx目录下:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

安装成功

将nginx写入系统服务

运行下面语句在 /usr/lib/systemd/system/目录下建立服务描述文件nginx.service:

vi /usr/lib/systemd/system/nginx.service

输入下面内容并保存

[Unit] Description=The nginx HTTP and reverse proxy server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/run/nginx.pid # Nginx will fail to start if /run/nginx.pid already exists but has the wrong # SELinux context. This might happen when running `nginx -t` from the cmdline. # bugzilla.redhat.com/show_bug.cgi?id=1268621 ExecStartPre=/usr/bin/rm -f /run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=mixed PrivateTmp=true [Install] WantedBy=multi-user.target

运行如下命令,重新加载配置文件和.service文件:

sudo systemctl daemon-reload

可以看到 服务已经被加载进来了

之后就可以启用服务或者添加到启动项了

sudo systemctl start nginx.service

sudo systemctl enable nginx.service

最后一步别忘了开启防火墙80端口的访问:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent sudo firewall-cmd --reload

成功启动:

Troubleshooting

1. 如果端口被占用,则无法运行nginx,默认nginx是通过80端口访问的,所以需要排查端口占用的程序:

netstat -tunlp

2. 如果systemd有报错,可以通过如下命令查看

sudo journalctl -fu nginx.service

3. 默认情况下日志记录在syslog,如果看报错详细,可以通过如下命令查看

sudo cat /var/log/messages

4. 如果有类似Can't open PID file /run/nginx.pid这样的报错,需要修改nginx.service 中pid文件的路径为实际pid的路径,具体路径在nginx.conf中查看:

运行下面命令:

sudo vi /usr/lib/systemd/system/nginx.service

将ExecStartPre与PIDFile项改为如下:

ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid PIDFile=/usr/local/nginx/logs/nginx.pid

全文完

标签:方式