目录
4.2.1官网 :http://nginx.org/en/download.html
1.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发布。apache httpd
- Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。
2.Nginx和apache的优缺点
2.1nginx相对于apache的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞(可参考文章快速掌握NIO和BIO有何不同? - 知乎)的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能 NIO netty NIO
高度模块化的设计,编写模块相对简单
社区活跃,各种高性能模块出品迅速
2.2apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
Nginx 配置简洁, Apache 复杂
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程
3.Tengine介绍
3.1tengine
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。
3.2tengine和nginx性能测试
tengine和nginx性能测试(参考一下网址):
Tengine & Nginx性能测试 - The Tengine Web Server
1.Tengine相比Nginx默认配置,提升200%的处理能力。
2.Tengine相比Nginx优化配置,提升60%的处理能力。
tengine更详细参数解释详见:
http://tengine.taobao.org/nginx_docs/cn/docs/
4.nginx安装
4.1.安装源码编译以及Nginx依赖的库
yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
4.2下载nginx-1.20.1.tar.gz
4.2.1官网 :nginx: download
官网将压缩包分成三部分:
Mainline versionStable version 主线版本
Stable version 稳定的版本
Legacy versions 遗留版本
选择自己需要的版本进行下载(我下载的是nginx-1.20.1)
备注:可以选择
4.2.2上传nginx-1.20.1.tar.gz
下载至本地后通过Xftp上传至虚拟机中
4.3解压并配置
4.3.1解压
[root@nginx1 apps]# tar -zxvf nginx-1.16.1.tar.gz
4.3.2目录详解
进入解压后的nginx-1.20.1文件中
[root@nginx1 nginx-1.20.1]# ll
查看 Nginx 的目录。
查看 Nginx 的目录。
其中各个目录中存放的文件作用为:
l auto:存放 Nginx 自动安装的相关文件
l conf:存放 Nginx 服务器配置文件
l configure:命令,用于对即将安装的软件的配置,完成 makefile 编译文件的生成
l contrib:存放由其他机构贡献的文档材料
l html:存放 Nginx 欢迎页面
l man:manual,手册,存放 Nginx 帮助文档
l src:存放 Nginx 源码
4.3.3生成 makefile,编译并安装
指定安装目录和https访问支持:
[root@nginx1 nginx-1.20.1]# ./configure
--prefix=/opt/nginx
--with-http_ssl_module
--with-http_gzip_static_module
--error-log-path=/var/log/nginx/nginx.log
--pid-path=/var/log/nginx/pid
编译(make)并安装(make install)
[root@nginx1 nginx-1.20.1]# make && make install
安装目录/opt/nginx 中有一个 sbin 目录,其中存放着 nginx 的命令程序nginx。默认情况下,若要使用 nginx 命令,则必须要在/opt/nginx/sbin 目录中,或指定命令路径。
启动:(在sbin目录中)
./nginx
停止:
./nginx -s stop
重启:
./nginx -s reload
5.nginx 命令随处可用
为了能够在任意目录下均可直接执行 nginx 命令,可通过以下两种方式完成。
方式一 、 service命令
添加安装的nginx到服务列表:将如下内容添加到/etc/init.d/nginx脚本中,nginx需要具有可执行权限。注意替换自己系统的nginx路径。
[root@nginx1 nginx-1.16.1]# vim /etc/init.d/nginx
#!/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="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/nginx/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 2
esac
修改nginx文件的执行权限
chmod +x nginx
添加该文件到系统服务中去
chkconfig --add nginx
查看是否添加成功
chkconfig --list nginx
启动,停止,重新装载
service nginx start|stop|reload
设置开机启动
[root@nginx1 conf]# chkconfig nginx on
[root@nginx1 conf]# chkconfig
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
方式二:systemctl命令
步骤
1.进入**/usr/lib/systemd/system**
cd /usr/lib/systemd/system
2.创建nginx.service
touch nginx.service
3.vim编辑nginx.service,里面的路径根据自己实际情况修改
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/tengine/sbin/nginx #修改为自己系统对应的路径
ExecReload=/usr/local/tengine/sbin/nginx -s reload #修改为自己系统对应的路径
ExecStop=/usr/local/tengine/sbin/nginx -s quit #修改为自己系统对应的路径
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机自启
systemctl enable nginx.service
想关闭运行命令
systemctl disable nginx.service
服务命令
systemctl start nginx.service #开启
systemctl stop nginx.service #关闭
systemctl reload nginx.service #重新加载配置
systemctl status nginx.service #查看状态