Nginx网站服务与LNMP架构部署
1.Nginx服务基础
Nginx的简介
一款高性能,轻量级Web服务软件
1.稳定性高
2.系统资源消耗低
3.对HTTP并发连接的处理能力高
单台物理服务器可支持30000-50000个并发请求
2.编译安装Ngiax
安装支持软件
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
创建运行用户,组
useradd -M -s /sbin/nologin nginx
编译安装Nginx
cd /opt
tar xzf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make -j3 && make install
为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行“nginx”命令就可以调用Nginx的主程序
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3.Nginx的运行控制
检查配置文件
nginx -t //配置文件语法检查
启动,停止Nginx
nginx //启动服务
killall -1 nginx //安全重启 killall -s HUP nginx
killall -3 nginx //停止服务 killall -s QUIT nginx
使用Nginx服务脚本
为了使Nginx服务的启动,停止,重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。
vi /etc/init.d/nginx
#!/bin/bash
# chkconfig: 35 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|relad}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
这样一来,就可以通过Nginx脚本来启动,停止,重启,重载Nginx服务器了,方法是在执行时添加相应的start,stop,restart,reload参数。
4.配置文件nginx.conf
在Nginx服务器的主配置文件/usr/local/nginx/conf/nginx.conf中,包括全局配置,I/O事件配置和HTTP配置这三大块内容,配置语句的格式为“关键字 值;”(末尾以分号表示结束),以“#”开始的部分表示注释
1.全局配置
由各种配置语句组成,不使用特定的界定标记,全局配置部分包括Nginx服务的运行用户,工作进程数,错误日志,PID存放位置等基本设置。
#user nobody; //运行用户
worker_processes 1; //工作进程数
#error_log logs/error.log; //错误日志文件的位置
#pid logs/nginx.pid; //PID文件的位置
上述配置中,worker_processes表示工作进程数。若服务器有多块CPU或者使用多核处理器,可以参考CPU核心总数来指定工作进程数,如设为8;如果网站访问量需求不大,一般设为1就够用了。其他三项均已有注释,表示采用默认设置,例如,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody。
2.I/O事件配置
使用“events{ }” 界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置。对于2.6及以上版本的内核,建议使用epoll模型以提高性能;每个进程的连接数应根据实际需要来定,一般在10000以下(默认为1024)
events {
use epoll; //使用epoll模型
worker_connections 4096; //每进程处理4096个连接
}
若工作进程数为8,每个进程处理4096个连接,则允许Nginx正常提供服务的连接数已超过3万个,(4096✖8=32768),当然具体还要看服务器硬件,网络带宽等物理条件的性能表现。
3.HTTP配置
使用“http { }” 界定标记,包括访问日志,HTTP端口,网页目录,默认字符集,链接保持,以及后面要讲到的Web主机,PHP解析等一系列设置,其中大部分配置语句都包含在子界定标记“server { }”内。
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; //访问日志位置
sendfile on; //支持文件发送(下载)
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; //连接保持超时
#gzip on;
server { //Web服务的监听配置
listen 80; //监听地址及端口
server_name localhost; //网站名称(FQDN)
charset utf-8; //网页的默认字符集
ac