Nginx网站服务LNMP搭建论坛
Nginx
一款高性能、轻量级Web服务软件
稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高,单台物理服务器可支持30000-50000个并发请求
Nginx模块
核心模块:HTTP模块、EVENT模块和MAIL模块
基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块
Nginx+FastCGI运行原理
FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每.次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。
Nginx 不支持对外部程序的直接调用或者解析,所有的外部程序(包括 PHP)必须通过FastCGI 接口来调用。FastCGI 接口在 Linux 下是 socket(这个 socket 可以是文件 socket, 也可以是 ip socket)。 wrapper 为了调用 CGI 程序,还需要一个 FastCGI 的 wrapper(wrapper 可以理解为用于启动另一个程序的程序),这个 wrapper 绑定在某个固定 socket 上,如端口或者文件 socket。当 Nginx 将 CGI 请求发送给这个 socket 的时候,通过 FastCGI 接口,wrapper 接收到请求,然后 Fork(派生)出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着 wrapper 再将返回的数据通过 FastCGI 接口,沿着固定的 socket传递给 Nginx;最后 Nginx 将返回的数据(html 页面或者图片)发送给客户端。
Nginx部署过程
首先安装依赖包准备生产环境
yum -y install \
gcc \
gcc-c++ \
make \
pcre-devel \
zlib-devel
useradd -M -s /sbin/nologin nginx ##添加nginx用户
tar zxvf 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 && make install ##编译安装
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
nginx -t ##配置文件语法检查
nginx ##启动服务
netstat -anpt | grep nginx
vi /etc/init.d/nginx ##创建可执行脚本
#!/bin/bash
# chkconfig: 35 90 20
# description: Nginx http server
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|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
修改配置文件
vi /usr/local/nginx/conf/nginx.conf
user nginx nginx; #程序用户
worker_processes 4; #进程号
error_log logs/error.log info; #开启记录错误日志
pid logs/nginx.pid; #开启进程指定进程文件
http {
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;
##开启记录全局访问日志(可不开,单独开启主机访问日志也可)
server {
charset utf-8; #主机设置开启支持utf-8编码
access_log logs/host.access.log main; #开启主机访问日志