提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Nginx
- 一、关于 Nginx
- Nginx和Apache的差异
- Apache的优势
- Nginx的优势
- 二. 编译安装Nginx服务
- 1.关闭防火墙
- 2.安装依赖包
- 3.创建运行用户、组
- 4.编译安装Nginx
- 5.检查、启动、重启、停止 nginx服务
- 三、添加 Nginx 系统服务
一、关于 Nginx
Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新
稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高(单台物理服务器可支持3w~5w个并发请求
Nginx和Apache的差异
- Nginx是一个基于事件的Web服务器,Apache是一个甚于流程的服务器
- Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求
- Nqinx避免子进程的概念,Apache是其于子进程的
- Ngnx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般
- Nqinx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件
- Nginx支持热部署,Apache不支持热部署
- Nginx对于静态文件处理县有更高效率,Apache相对一般
- Nginx在反向代理场景县有明点优势,Apache相对一般
Apache的优势
- Rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
- 模块多,基本想到的都可以找到
- 少bug, nginx的bug相对较多
- 超稳定
- Nginx处理动态请求是弱项,动态请求要Apache去做。
Nginx的优势
- 轻量级,nginx比apache 占用更少的内存及资源;
- 静态处理,Nginx 静态处理性能比 Apache 高 ;
- Nginx可以实现无缓存的反向代理加速,提高网站运行速度;
- Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于硬件;
- Nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;
- nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程;
- Nginx高度模块化,编写模块相对简单,且组件比Apache少
- 高并发下nginx 能保持低资源低消耗高性能;
- Nginx 配置简洁, Apache配置复杂;
二. 编译安装Nginx服务
1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装依赖包
#nginx的配置及运行需要pcre、zlib、openssl等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ mak
3.创建运行用户、组
useradd -M -s /sbin/nologin nginx
4.编译安装Nginx
cd /opt
tar zxvf nginx-1.24.0.tar.gz -C /opt/
cd nginx-1.24.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
#启用 http_stub_status_module 模块以支持状态统计
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #让系统识别nginx的操作命
5.检查、启动、重启、停止 nginx服务
nginx -t #检查配置文件是否配置正确
#启动
nginx
#停止
cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分割,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号
新版本升级:
tar -zxvf nginx-1.xx.xx.tar.gz
cd nginx-1.xx.xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
--with-http_ssl_module
make
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old
cp objs/nginx /usr/local/nginx/sbin/nginx
make upgrade #要保证当前 nginx 进程是通过 /usr/local/nginx/sbin/nginx 启动的,而不是通过查找环境变量中那个 nginx 命令启动的
#或者先 killall nginx ,再/usr/local/nginx/sbin/nginx
三、添加 Nginx 系统服务
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$COM
;;
stop)
kill -s QUIT $(cat $PID)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PID)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx #添加为系统服务
systemctl stop nginx
systemctl start nginx