一、Nginx服务基础
1.1 关于Nginx
Nginx在国内的应用较为广泛,是一款高性能、轻量级web服务软件,性能是Apache的2-3倍,由俄罗斯人开发,目前已被美国公司收购
稳定性高
系统资源消耗低(内存)
对HTTP并发连接的处理能力高:单台物理服务器可支持30000~50000个并发请求(实际上2-3万)
1.2 Nginx相对于Apache的优点
轻显级,同样是web服务,比Apache 占用更少的内存及资源;
高并发,Nginx处理请求是异步非塞的,而Apache则是阻塞型的,在高并发下Nginx 能保持低资源低病耗高性能;
高度模块化的设计;
编写模块相对简单;
社区活跃,各种高性能模块出品迅速;
1.3 Apache 相对于Nginx的优点
rewrite,比Nginx 的rewrite强大;
模块超多,基本想到的都可以找到;
少bug,Nginxbug相对较多;
超稳定存在就是理由,一般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理,
1.4 Nginx和Apache的差异
·Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;
·Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
·Nginx避免子进程的概念,Apache是基于子进程的;
·Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;
·Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
·Nginx支持热部著,Apache不支持热部著;
·Nginx对于静态文件处理具有更高效率,Apache相对一般;
·Nginx在反向代理场景具有明显优势,Apache相对一般。
二、Nginx部署
1.关闭防火墙,将安装nginx所需软件包传到/opt目录下
systemctl stop firewalld systemctl disable firewalld setenforce 0
nginx依赖包下载地址
链接:https://pan.baidu.com/s/1xPo60mP1bS18oiFTauEy1w
提取码:gk3o
2.安装依赖包
nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件
yum -y install pcre-devel zlib-devel gcc gcc-c++ make #pcre提供正则表达式 #zlib提供压缩功能 #gcc gcc-c++ make编译安装工具
3.创建运行用户、组
(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx #创建nginx 用户,设置为不可登录
4.编译安装Nginx
cd/opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ cd nginx-1.12.0/ ./configure \ --prefix=/usr/local/nginx \ #指定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 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号> 升级方法1 新版本升级: 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 #ssl是一种安全认证模块 make mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old cp objs/nginx /usr/local/nginx/sbin/nginx #kill -USR2 <PID号> 升级方法1 make upgrade 升级方法2 #或者先killall nginx,再/usr/local/nginx/sbin/nginx 升级方法3
Apache和nginx的默认端口都是80,所以他俩不可能同时开启,要么删一个,要么改端口
6.添加nginx服务
方法1:通过脚本
#!/bin/bash #chkconfig:35 99 20 #desc: this is nginx control scprit CMD="/usr/local/nginx/sbin/nginx" PID="/usr/local/nginx/logs/nginx.pid" #通过命令获取nginx的命令和PID case "$1" in start) $CMD ;; 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
方法2:通过system中创建服务
vim /lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target ----------------------------------------------------------- [Unit]:服务的说明 Description:描述服务 After:依赖,当依赖的服务启动之后再启动自定义的服务 [Service]服务运行参数的设置 Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 Privatermp=True表示给服务分配独立的临时空间 注意:启动、重启、停止命令全部要求使用绝对路径 [Install]服务安装的相关设置,可设置为多用户
此时服务已经起来
默认文件位置在/usr/local/nginx/html/