Tengine
Nginx和Tengine
Nginx
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器-也是一个 IMAP/POP3/SMTP 代理服务器。
•第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布-因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
官方测试nginx能够支撑5万并发链接-并且cpu、内存等资源消耗却非常低-运行非常稳定
2011年6月1日-nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器-并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发-
其特点是占有内存少-并发能力强-事实上nginx的并发能力确实在同类型的网页服务器中表现较好-中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

功能:
Nginx和apache的优缺点
#### nginx相对于apache的优点:
#### apache 相对于nginx 的优点:
Nginx 配置简洁, Apache 复杂
最核心的区别在于apache是同步多进程模型-一个连接对应一个进程;
nginx是异步的-多个连接(万级别)可以对应一个进程
Nginx解决的问题
安装
准备工作
#### 操作系统
最好使用linux操作系统-课上使用VirtualBox或VMware虚拟机搭建centos6.x做实验。
系统依赖组件 gcc openssl-devel pcre-devel zlib-devel
安装:yum install gcc openssl-devel pcre-devel zlib-devel
#### Tengine下载和文档
#### Nginx官网和文档
上传Nginx压缩包到服务器-一般安装在/usr/local目录下
编译安装
``shell
./ configure --prefix=/安装路径make && make install
`
启动服务
脚本自启动
拷贝附件提供的Nginx启动脚本文件内容到/etc/init.d/nginx这个文件中
目录下如果没有这个文件的话需要手动创建
#### 修改可执行权限
chmod 777 nginx
#### 启动服务
service Nginx start 启动服务
service Nginx stop 停止
service Nginx status 状态
service Nginx reload 动态重载配置文件
#### 脚本内容:
`shell
#!/bin/sh## nginx - this script starts and stops the nginx daemon## chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse # proxy and IMAP/POP3 proxy server# processname: nginx# config: /etc/nginx/nginx.conf# config: /etc/sysconfig/nginx# pidfile: /var/run/nginx.pid # Source function library.. /etc/rc.d/init.d/functions # Source networking configuration.. /etc/sysconfig/network # Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/local/tengine/sbin/nginx"prog=$(basename $nginx) NGINX_CONF_FILE="/usr/local/tengine/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/\1/g' - options=$nginx -V 2>&1 | grep 'configure arguments:' for opt in $options; do if [ echo $opt | grep '.*-temp-path' ]; then value=echo $opt | cut -d "=" -f 2 if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done} start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval} stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval} restart() { configtest || return $? stop sleep 1 start} reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo} force_reload() { restart} configtest() { $nginx -t -c $NGINX_CONF_FILE} rh_status() { status $prog} rh_status_q() { rh_status >/dev/null 2>&1} case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2esac
`
Nginx配置解析
定义Nginx运行的用户和用户组
user www www;
进程数
建议设置为等于CPU总核心数。
worker_processes 8;
全局错误日志
全局错误日志定义类型-[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log