目录
1、安装准备
1.1、下载Nginx源码包
除了Apache,Linux系统中还常常使用另一款Web服务器软件Nginx,它显著的特点是对接高并发业务提供很好的支持。最新版本的nginx是以源代码形式发布的,可以到其官网
https://nginx.org/en/download.htm上下载相应的源代码包,有tar.gz和zip两种格式,这里下载tar.gz格式的源代码包
1.2、上传源码包
将下载好的压缩包上传至 /root目录中,使用MobaXterm可快速上传压缩包至虚拟机中,再移动至/usr/local/src下
mv /root/nginx-1.25.4.tar.gz /usr/local/src/
1.3、解压源码包
tar -xzvf nginx-1.25.4.tar.gz
解压后生成目录为下
这些目录的主要功能如下
auto:用于编译时的文件,以及相关lib库,编译时对对操作系统的判断等,都是为了辅助./configure命令执行的辅助文件。
conf:存放 Nginx 服务器配置文件
configure:命令,用于对即将安装的软件的配置,完成 makefile 编译文件的生成
contrib:存放由其他机构贡献的文档材料
html:存放 Nginx 欢迎页面
man:nginx命令的帮助文档,linux上可以使用man命令查看帮助
src:存放 Nginx 源码
1.4、关闭防火墙和SElinux
systemctl stop firewalld.service
vim /etc/selinux/config
SELINUX改为disable
setenforce 0 #关闭selinux
getenforce #查看selinux状态,为Permissive就是关闭状态
2、准备相关的依赖包以及环境(在Nginx解压目录下)
2.1、安装Nginx依赖的库
以下命令可直接安装
yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
或者
安装zlib库
yum -y install zlib zlib-devel
因为HTTPrewrite模块要求安装PCRE库,安装pcre库
yum -y install pcre pcre-devel
因为SSL模块要求OpenSSL库,安装openssl库
yum -y install openssl openssl-devel
2.2、安装源码编译
如果没有安装gcc-c++,可以安装以下开发包,可以一次性安装
yum -y groupinstall 'Development Tools'
使用configure命令时会验证环境,依赖包环境安装不全和没有编译工具则可能出现如下错误
2.3、执行脚本生成makefile
使用 configure 命令可以生成make命令需要的编译文件makefile
安装完如上编译工具后,再执行脚本
可以使用-help查看你需要配置的参数
以下为简单命令
./configure --prefix=/usr/local/nginx --with-http_ssl_module
3、编译安装
使用make&&make install执行编译安装命令,make 为编译命令,make install 为安装命令
make
make install
安装完毕后启动nginx同时可以查看Nginx进程
/usr/local/nginx/sbin/nginx
ps -ef |grep nginx
这个时候可以浏览器输入自己的IP验证Nginx欢迎页面,成功启动画面:
4、编写systemd单元文件管理nginx服务
Nginx作为服务程序,需要为其编写一个单元文件以便systemd能够管理它,在/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=/usr/local/nginx/logs/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.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
要让systemd重新识别此单元文件,通常执行systemctl daemon-reload命令重载配置,这样就可以使用systemd来管理nginx的启动、重启。
systemctl daemon-reload
systemctl restart nginx
systemctl status nginx.service #查看状态
可以看到nginx的状态为running~
本篇文章参考博客如下