CentOS 下编译安装 Nginx

yum rpm安装Nginx真的so easy 现在我来教你如何编译安装nginx 其实也很简单

1.下载解压

cd /usr/local/src
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1/

2.执行编译安装命令:

./configure --prefix=/usr/local/nginx
错误信息:
checking for OS
+ Linux 3.10.0-327.el7.x86_64 x86_64
checking for C compiler ... not found
./configure: error: C compiler cc is not found
解决方法:安装gcc
yum -y install gcc

错误信息:
./configure: error: the HTTP rewrite module requires the PCRE library.
解决方法:安装pcre-devel
yum install pcre-devel

错误信息:
./configure: error: the HTTP gzip module requires the zlib library.
解决方法:安装zlib-devel
yum install zlib-devel

再次执行
./configure --prefix=/usr/local/nginx

正确的结果显示:

CentOS 下编译安装 Nginx

3.执行make && make install

make && make install

现在在/usr/local下就有了nginx安装目录

4.如何启动Nginx

cd /usr/local/nignx
启动nginx:
./sbin/nginx

5.Nginx目录介绍:

cd /usr/local/nignx
会发现nginx安装目录下会发现有四个目录其中
conf:配置目录
html 网页文件
logs 日志文件
sbin 主要的二进制程序文件
启动nginx的时候可能会遇到很多问题 比如80端口被占用 可以通过:
netstat -antp 查看是哪个程序占用了80
然后
kill -9 进程PID 杀死进程 或者
pkill -9 httpd 杀死该程序的所有进程 我这里模拟的杀死httpd的所有进程
也有可能出现80端口没有开放的事情 如何查看80是否开放?
firewall-cmd –query-port=80/tcp 返回no说明80端口没开放
firewall-cmd –add-port=80/tcp 开放80端口号

6.Nginx的关闭和重启

如何重启nginx呢? ps aux | grep nginx //首先查看一下nginx的进程有哪些

CentOS 下编译安装 Nginx

你会发现怎么两个nginx 第一个是master主进程 第二个是子进程 真正干活的是第二个worker子进程
master负责管理这些子进程!

重启nginx我们可以使用nginx当中的信号量

第一种:-INT
ps aux | grep nginx

CentOS 下编译安装 Nginx
可以看到nginx的主进程的PID

kill -INT 7450 //直接干死nginx主进程 直截了当

然后进入到

cd /usr/local/nginx
./sbin/nginx

完成nginx的重启工作!

这种方式很暴力 万一用户在下单 刚付完钱 但是数据没入库 就歇菜了!太暴力了!

第二种:quit
优雅的关闭进程 即等请求结束后再关闭
ps aux | grep nginx

CentOS 下编译安装 Nginx
可以看到nginx的主进程PID

kill -quit 7450 //优雅的杀掉主进程 等到请求结束再关闭

然后进入到

cd usr/local/nginx
./sbin/nginx

完成nginx的重启工作

这种方式比较优雅!等请求结束后再杀死nginx的主进程!

第三种:hup
hup是你改了nginx的配置文件 重读配置文件 它会实现平滑重启
假设nginx的主进程还是7450
这个时候你修改了配置文件 需要重新启动
只需执行:

kill -hup 7450 //会平滑重启 在完成前边请求的前提下重新取读取配置文件 完成平滑重启 客户无感知!

整个过程不断线 nginx的主进程PID不变 因为没杀死进程啊!平滑的去重读了nginx的配置文件而已整个过程不断线 nginx的主进程PID不变 因为没杀死进程啊!平滑的去重读了nginx的配置文件而已

其他的重启 关闭 nginx的方式:

CentOS 下编译安装 Nginx

进入nginx的安装目录

cd /usr/local/nginx 
./sbin/nginx -s stop //关闭nginx服务
./sbin/nginx -s reload //相当于重读配置文件 其他类似 自己去试试吧!

总结一下:

1.检测配置语法
/usr/local/nginx/sbin/nginx -t

2.启动服务
/usr/local/nginx/sbin/nginx

3.重载服务
/usr/local/nginx/sbin/nginx -s reload
pkill -HUP nginx

4.关闭服务
/usr/local/nginx/sbin/nginx -s stop
pkill nginx

7.Nginx的排查错误机制:

./sbin/nginx -t  //这条命令会告诉你 你的nginx配置文件是否配置正确  不正确又错在了哪里

8.设置开机启动Nginx

cd /lib/systemd/system/
vim nginx.service    //没有就是新建
[Unit]
Description=nginx service
After=network.target 

[Service] 
Type=forking 
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true 

[Install] 
WantedBy=multi-user.target

[Unit]:服务的说明

Description:描述服务
After:描述服务类别
[Service]:服务运行参数的设置

Type=forking:后台运行的形式
ExecStart:服务的具体运行命令
ExecReload:重启命令
ExecStop:停止命令
PrivateTmp=True:表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径。
[Install]:
运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3。

设置开机启动:设置开机启动:
systemctl enable nginx

重启测试

init 6 
systemctl status nginx.service

访问浏览器,成功!
可能会用到的命令:

systemctl start nginx.service          //启动
systemctl stop nginx.service           //停止
systemctl restart nginx.service        //重新启动
systemctl status nginx.service         //查看状态
systemctl enable nginx.service         //设置开机启动
systemctl disable nginx.service        //停止开机启动
systemctl list-units --type=service    //查看所有已启动的

访问ip地址出现如图所示就成功啦:
CentOS 下编译安装 Nginx

声明一点:
php和nginx的集合的时候容易出错的地方:
如图所示 红线处写成你php文件所在的位置 不要用系统默认的$script哈!如果你想知道$script是啥东西 你自己去百度nginx下如何支持echo语法!

CentOS 下编译安装 Nginx

本作品采用《CC 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!