web 服务对比
Linux 平台
- PHP,Python:nginx,tengine(淘宝),apache
- Jave:tomcat,Jboss,IBM WebSphere
Windows 平台: IIS(.net)
Nginx 的优点: 性能高, 并发高, 静态网站, 动态网站(PHP,python)
在对比其他 Web 软件的情况下 nginx 的性能更加好! 在国内广泛使用
Nginx
十分轻量级的 HTTP 服务器
是一个高性能的 HTTP 和反向代理服务器
官方网站: http://nginx.org/ https://nginx.org/
Nginx 以及现代化软件设计: 模块化设计, 每个模块实现的功能不一样, 并且每个模块都是相互独立的, 为了满足不同场景的需求来安装不同的模块.
Nginx 分为标准模块 (官方) 以及第三方开发模块, 标准模块有几十个, 在安装 Nginx 时, 默认不加模块
在源码编译安装时可使用./configure --help 来查看 nginx 标准模块
Nginx 标准模块
--with-http_ssl_module 开启 SSL 加密功能, 开启 HTTPS(要想启用模块系统环境必须安装 openssl-devel 依赖包)
--with-stream TCP/IP 调度器模块
--with-http_stub_status_module 查看 nginx 服务器状态模块
源码安装 Nginx
安装依赖包
# yum -y install gcc pcre-devel openssl-devel zlib-devel
gcc: 用于 C/C++ 语言的编译
pcre-devel: 兼容正则表达式, nginx 需要用到正则, 比如地址重写
openssl-devel: 主要用于加密网站 https
zlib-devel: 对 http 包的内容做 gzip 格式的压缩
创建 nginx 用户, 使用 nginx 用户来运行 nginx 主要目的为了安全, 不是必须操作
#useradd -s /sbin/nolgin nginx
安装 Nginx
- #tar -xf nginx-1.10.3.tar.gz #解压 nginx 源码包
- #cd nginx-1.10.3 #进入 nginx1.10.3 目录
- #./configure --user=nginx --group=nginx --with-http_ssl_module #检查系统环境, 指定安装用户及用户组, 安装 http_ssl 模块
- #make && make install 编译并安装
- #ls /usr/local/nginx/ 安装完毕后查看安装目录
Nginx 目录结构
如果在源码安装时没有选择安装目录, 默认安装在 / usr/local/nginx 下
/usr/local/nginx 主目录
/usr/local/nginx/sbin 主程序
/usr/local/nginx/conf 配置文件
/usr/local/nginx/logs 日志
/usr/local/nginx/html 网页目录
Nginx 命令用法
/usr/local/nginx/sbin/nginx 启动服务
/usr/local/nginx/sbin/nginx -s stop 关闭服务
/usr/local/nginx/sbin/nginx -s reloac 重新加载配置文件, 在不重启服务的情况下重新加载(不能在关闭服务的时候操作)
/usr/local/nginx/sbin/nginx -V 查看软件信息(能看到怎么安装的 configure arguments: --user=nginx --group=nginx --with-http_ssl_module)
当然可以做个软连接放到 PATH 路径下, 方便在命令行执行! ln -s /usr/local/nginx/sbin/nginx /sbin
验证 Nginx 状态
验证 Nginx 需要通过监听以及服务来查看, systemctl 不能查看
- ps -ef | grep nginx
- netstat -anptu | grep 80
- ss -anptu | grep nginx
- curl http://192.168.20.5 #访问 nginx
平滑升级 Nginx
任何升级都是由风险的! 升级前一定要备份!
升级主要是把 /usr/local/nginx/sbin/nginx 这个主程序给替换掉, 其他的配置文件, 网页目录, 日志目录都不需要操作;
升级步骤
1, 检查 Nginx 版本, 并备份主程序
- # nginx -V
- nginx version: nginx/1.10.3 #nginx 版本时 1.10.3
- built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
- built with OpenSSL 1.0.2k-fips 26 Jan 2017
- TLS SNI support enabled
- configure arguments: --user=nginx --group=nginx --with-http_ssl_module
- # mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_1.10.3 #备份主程序
2, 解压新版本 nginx, 并 cd 到目录下
- #tar -xf nginx-1.12.2.tar.gz
- #cd nginx-1.12.2/
3, 和安装步骤一致,./config 必须和安装时候的操作一样, 如果不知道可使用 nginx -V 来查看
#./configure --user=nginx --group=nginx --with-http_ssl_module
4, 源码编译 make, 但是不安装!
#make
5, 编译完之后, 进入到源码包的 objs 目录下, 有 nginx 主程序, 把主程序替换老的 nginx 主程序
- [[email protected] nginx-1.12.2]# cd objs/
- [[email protected] objs]# ls
- autoconf.err Makefile nginx nginx.8 ngx_auto_config.h ngx_auto_headers.h ngx_modules.c ngx_modules.o src
- [root[email protected] objs]# cp nginx /usr/local/nginx/sbin/
6, 在 1.12.2 目录下执行升级脚本 make upgrade, 也可以不执行这个命令, 这个是一个脚本, kill nginx 进程然后在重新启动 nginx 也是可以的
- nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
- nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
- sleep 1
- test -f /usr/local/nginx/logs/nginx.pid.oldbin
- kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
7, 检查版本
- # nginx -V
- nginx version: nginx/1.12.2
- built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
- built with OpenSSL 1.0.2k-fips 26 Jan 2017
- TLS SNI support enabled
- configure arguments: --user=nginx --group=nginx --with-http_ssl_module
升级成功, 从 1.10.3 升级到 1.12.2
注意事项:
1, 升级前一定要备份老的主程序!
2, 在源码编译的时候不要执行 make install!
3,objs 目录是在执行 make 命令之后源码转换成二进制所放的目录, 一般主程序都放在该目录下!
来源: http://www.bubuko.com/infodetail-3377280.html