目录
2.3.3 nginx -s reload 重启nginx服务
2.3.4 nginx -s reopen 重新生成一个日志文件
什么是nginx?
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server
nginx是一个HTTP服务器,一个邮件服务器,反向代理服务器(负载均衡,缓存)第7层负载均衡,第4层的负载均衡
##########################################
1. nginx的安装
环境:centos 7.9.2009 系统
[root@www lianxi]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
nginx版本:nginx-1.21.6
##########################################
1.1 yum安装和编译安装的区别
1.1.1 yum安装的优点和缺点
yum安装的优点:
安装东西,方便快捷,不用考虑包依赖关系。
yum安装的缺点:
安装过程人为无法干预,不能按需安装。源里面有什么就安装什么。
yum安装目录不集中,但基本遵循Linux文件夹的作用去划分文件,比如配置文件通常在/etc下,
日志文件通常在/var/log下面
##########################################
1.1.2 编译安装的优点和缺点
源码安装的优点:
编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
编译安装目录集中,都在我们制定的安装路径下面。
源码安装的缺点:
由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题(可能需要花很多时间来踩坑解决包依赖关系),linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,升级系统,可能会导致以前手动装的东西,不能用。
##########################################
1.2 nginx编译安装脚本
[root@www lianxi]# cat onekey_install_xueshanfeihu_Geoip_v10.sh
#!/bin/bash
#解决软件的依赖关系,需要安装的软件包
yum install epel-release -y
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim geoip geoip-devel wget -y
#新建liming用户和组
id liming || useradd liming -s /sbin/nologin
#下载nginx软件
mkdir /liming99 -p
cd /liming99
wget https://nginx.org/download/nginx-1.21.6.tar.gz
#解压软件
tar xf nginx-1.21.6.tar.gz
#进入解压后的文件夹
cd nginx-1.21.6
#编译前的配置
./configure --prefix=/usr/local/scliming99 --user=liming --group=liming --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_gunzip_module
#如果上面的编译前的配置失败,直接退出脚本
if (( $? != 0));then
exit
fi
#编译
make -j 2
#编译安装
make install
#修改PATH变量
echo "PATH=$PATH:/usr/local/scliming99/sbin" >>/root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc
#firewalld and selinux
#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld
#临时停止selinux和永久停止selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
#开机启动
chmod +x /etc/rc.d/rc.local
echo "/usr/local/scliming99/sbin/nginx" >>/etc/rc.local
#修改nginx.conf的配置,例如:端口号,worker进程数,线程数,服务域名
sed -i '/worker_processes/ s/1/2/' /usr/local/scliming99/conf/nginx.conf
sed -i '/worker_connections/ s/1024/2048/' /usr/local/scliming99/conf/nginx.conf
sed -i -r '36c \\tlisten 80;' /usr/local/scliming99/conf/nginx.conf
sed -i -r '37c \\tserver_name www.liming.com;' /usr/local/scliming99/conf/nginx.conf
#killall nginx进程
killall -9 nginx
#启动nginx
/usr/local/scliming99/sbin/nginx
##########################################
1.3 nginx的常用模块
--prefix=/usr/local/scliming99 指定nginx的安装路径
--user=liming 指定启动nginx的用户
--group=liming 指定启动nginx的组
--with-threads 启动线性池的使用
--with-file-aio 支持在FreeBSD和linux上使用异步文件 I/O(aio)
--with-http_ssl_module 启用构建将HTTPS协议支持添加到HTTP服务器的模块的功能,默认情况下未构建此模块,需要OpenSSL库来构建和运行此模块
--with-http_v2_module 支持构建提供对HTTP/2支持的模块,默认情况下未构建此模块
--with-http_stub_status_module 支持构建ngx_http_stub_status_module 模块,该模块提供对基本状态信息的访问,默认情况下未构建此模块
--with-stream 支持构建用于通过TCP/UDP代理和负载平衡的流模块,默认情况下未构建此模块
##########################################
1.4 怎么样判断nginx是否启动
1.4.1 看端口
netst8t -anplut命令
[root@www lianxi]# netstat -anplut
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 999/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1163/master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 16221/nginx: master
tcp 0 36 192.168.44.130:22 192.168.44.1:51687 ESTABLISHED 20590/sshd: root@pt
tcp 0 0 192.168.44.130:22 192.168.44.1:55632 ESTABLISHED 20315/sshd: root@pt
tcp 0 0 192.168.44.130:22 192.168.44.1:54997 ESTABLISHED 20231/sshd: root@pt
tcp6 0 0 :::22 :::* LISTEN 999/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1163/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 672/chronyd
udp6 0 0 ::1:323 :::* 672/chronyd
##########################################
lsof -i:80 命令
[root@www lianxi]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 16221 root 6u IPv4 78419 0t0 TCP *:http (LISTEN)
nginx 19953 liming 6u IPv4 78419 0t0 TCP *:http (LISTEN)
nginx 19954 liming 6u IPv4 78419 0t0 TCP *:http (LISTEN)
##########################################
ss -anplut命令
[root@www lianxi]# ss -anplut
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=672,fd=5))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=672,fd=6))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=999,fd=3))
tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1163,fd=13))
tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=19954,fd=6),("nginx",pid=19953,fd=6),("nginx",pid=16221,fd=6))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=999,fd=4))
tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=1163,fd=14))
##########################################
1.4.2 看进程
ps -aux | grep nginx
[root@www lianxi]# ps aux | grep nginx
root 16221 0.0 0.2 48524 2120 ? Ss 02:07 0:00 nginx: master process /usr/local/scliming99/sbin/nginx
liming 19953 0.0 0.2 49400 2612 ? S 08:13 0:00 nginx: worker process
liming 19954 0.0 0.2 49400 2860 ? S 08:13 0:00 nginx: worker process
root 20698 0.0 0.0 112824 988 pts/0 R+ 18:12 0:00 grep --color=auto nginx
##########################################
1.4.3 直接访问web服务器
可以访问nginx就已经开启
##########################################
2. nginx常用命令
2.1 nginx -v 显示版本号
[root@www lianxi]# nginx -v
nginx version: nginx/1.21.6
##########################################
2.2 nginx -V 显示nginx的版本号和编译信息
[root@www lianxi]# nginx -V
nginx version: nginx/1.21.6
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/scliming99 --user=liming --group=liming --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_gunzip_module
##########################################
2.3 nginx -s
-s是一种信号(signal),是进程与进程之间通信的一种方式
2.3.1 nginx -s stop 关闭nginx进程
-s stop命令给正在运行的Nginx master进程发送TERM信号量来快速的关闭Nginx服务
收到TERM信号量的进程会自我终结
##########################################
2.3.2 nginx -s quit 关闭nginx进程
-s quit命令告诉Nginx正常处理完所有任务
(关闭监听接口,停止接收新的链接,把当前的所有连接全部处理完)再停止进程。也就是说nginx会先处理完当前的任务再结束进程
##########################################
2.3.3 nginx -s reload 重启nginx服务
修改了nginx的配置文件
相当于刷新服务
启用新的配置
不会中断业务 --》工作中一般使用重启
##########################################
2.3.4 nginx -s reopen 重新生成一个日志文件
2.3.5 进程与进程之间的几种通信方式:
号
管道
socket
信号量
消息队列
共享内存
##########################################
2.4 nginx -t
测试nginx.conf 配置文件是否有错误
[root@www lianxi]# nginx -t
nginx: the configuration file /usr/local/scliming99/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/scliming99/conf/nginx.conf test is successful
##########################################
2.5 捕捉信号脚本
当捕捉到 1 2 15 这三种信号的时候,执行命令 echo i am busy
[root@localhost signal]# cat sig.sh
i=1
trap "echo i am busy" 1 2 15
while :
do
((i++))
echo $i
sleep 1
done
##########################################