本文主要讲述Linux系统使用源代码安装Nginx系统,以及通过编写systemd单元文件来管理Nginx系统。
文章目录
-
- 安装nginx依赖包
- 下载并解压nginx安装包
- 安装nginx
- 启动nginx服务
- 创建nginx自启动脚本
1、安装Nginx依赖包
yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim
- pcre-devel: 这是Perl Compatible Regular Expressions(PCRE)库的开发文件。PCRE是一个用于处理正则表达式的库,很多软件(如Nginx、Apache等)都依赖于它。
- zlib-devel: 这是zlib压缩库的开发文件。许多软件需要这个库来支持数据压缩。
- openssl-devel: 这是OpenSSL库的开发文件。OpenSSL是一个强大的安全套接字层密码库,包含了各种主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
- gcc: 这是GNU Compiler Collection的缩写,是一个编译器套件,包括C、C++、Fortran等多种语言的编译器。它通常用于编译源代码。
2、下载并解压Nginx安装包
从Nginx官网下载Nginx源码包,这里下载的版本为1.20
wget http://nginx.org/download/nginx-1.20.2.tar.gz
解压Nginx源码
tar -xzvf nginx-1.20.2.tar.gz
3、安装Nginx
进入/root/nginx目录进行编译前配置(*为下载的nginx版本,例如刚刚下载的1.20版本)
cd /root/nginx*
执行命令:
./configure --prefix=/usr/local/nginx --with-http_ssl_module
- ./configure:这是 Nginx 源码中的一个脚本,用于准备编译环境,检查依赖项,并生成 Makefile 文件,该文件随后被用于编译 Nginx。
- --prefix=/usr/local/nginx:这个选项指定了 Nginx 安装后的基础目录。在这个例子中,Nginx 将被安装到 /usr/local/nginx 目录下。这包括二进制文件、配置文件、日志等。
- --with-http_ssl_module:这个选项告诉配置脚本启用 SSL 模块,使 Nginx 能够支持 HTTPS。SSL 模块是 Nginx 的一个可选模块,用于提供加密的 HTTP 连接。执行命令编译安装nginx
make && make install
-
这是两个命令,make 为编译命令,make install 为安装命令,可以分别执行。这里使用&&将两个命令连接执行,会在前面命令执行成功的前提下才会执行第二个命令。
4、启动Nginx服务
关闭防火墙
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
-
setenforce 0 用于临时将 SELinux 的状态设置为宽容模式(Permissive mode)。SELinux 是一个为 Linux 操作系统提供访问控制安全策略的机制,它允许管理员定义哪些进程可以访问哪些文件、目录和网络资源。执行 setenforce 0 会将 SELinux 的模式从当前的切换到 Permissive。
-
systemctl stop firewalld 这个命令会立即停止正在运行的firewalld服务
-
systemctl disable firewalld 禁用firewalld服务,使其在系统启动时不会自动运行进入到安装目录/usr/local/nginx,查看目录结构
cd /usr/local/nginx ls tree
进入/usr/local/nginx/sbin目录下,并使用命令启动nginx
cd /user/local/nginx/sbin/ ./ nginx
这里我在启动时出现了一个问题,如果发现其报下列错误,意思是因为80端口被占用导致Nginx启动失败。使用下面该命令对80端口进行摸排,结果显示80端口被占用着
netstat -ntlp | grep 80
-
使用下面这个命令,查找并终止占用指定TCP端口的进程,然后再重启Nginx即可完成成功运行。
fuser -k 80/tcp
监听80端口服务器
curl http://localhost:80
- curl:这是一个常用的命令行工具,用于发送HTTP请求。它可以用来获取或发送数据,并支持多种HTTP方法(如GET、POST等)。
- http://localhost:80:这是你想要访问的URL。
- :80:这是端口号。HTTP协议默认的端口号是80。
- http://:这表示你正在使用HTTP协议。
- localhost:这是一个特殊的域名,代表你自己的计算机
使用浏览器进行实测,输入localhost:80,出现如下界面,说明成功
5、创建Nginx自启动脚本
在/usr/lib/systemd/system或者/etc/systemd/system目录下创建一个nginx.service的文件,并且进入编辑它
vi /etc/systemd/system/nginx.service
Systemd服务一种以 .service 结尾的单元(unit)配置文件,用于控制由 systemd 控制或监视的进程。
设置以下内容:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
# ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /usr/local/nginx/logs/nginx.pid)"
# ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl daemon-reload #重新加载配置文件
systemctl start nginx #启动服务
systemctl enable nginx #加入开机启动
systemctl status nginx #查看服务当前状态