一, 安装环境
1, 操作系统版本: Red Hat Enterprise Linux Server release 7.2 (Maipo)
2,Nginx 版本: nginx-1.12.2.tar.gz
3,pcre 版本: pcre-8.42.tar.gz
4,zlib 版本: zlib-1.2.11.tar.gz
5,openssl 版本: openssl-1.0.2l.tar.gz
二, 安装说明
官网上关于 Nginx 的依赖包说明如下:
三, 安装过程
1, 安装 gcc:yum install gcc-c++ -y
2, 编译安装 pcre
- [root@nginx-web ~]# tar -zxf pcre-8.42.tar.gz
- [root@nginx-web ~]# cd pcre-8.42
- [root@nginx-web pcre-8.42]# ./configure
- [root@nginx-web pcre-8.42]# make
- [root@nginx-web pcre-8.42]# make install
3, 编译安装 zlib: 其实系统中已带有旧版 zlib-1.2.7 的包, 那要不要把它先卸载呢? 官网上的说明示例并没提到要先卸载旧版的 zlib, 而编译安装的 make install 过程我们可以看到它其实是把原有的文件删掉, 再拷贝新版的文件到原路径, 也就是会替换掉旧版的文件, 因此我觉得不用先卸掉旧版.
- [root@nginx-web ~]# tar -zxf zlib-1.2.11.tar.gz
- [root@nginx-web ~]# cd zlib-1.2.11
- [root@nginx-web zlib-1.2.11]# ./configure
- [root@nginx-web zlib-1.2.11]# make
- [root@nginx-web zlib-1.2.11]# make install
4, 编译安装 openssl: 其实系统中已带有 openssl-1.0.1e 的包, 但是如果不编译新版的 openssl 的话, 会导致编译 nginx 时提示找不到 openssl. 官网给的编译 openssl 的示例是使用 "./Configure darwin64-x86_64-cc --prefix=/usr" 选项, 但我编译安装时报错 "cc: error: x86_64: No such file or directory", 最后用 "./config --prefix=/usr --shared" 发现也可以.
- [root@nginx-web ~]# tar -zxf openssl-1.0.2l.tar.gz
- [root@nginx-web ~]# cd openssl-1.0.2l
- [root@nginx-web openssl-1.0.2l]# ./config --prefix=/usr --shared
- [root@nginx-web openssl-1.0.2l]# make
- [root@nginx-web openssl-1.0.2l]# make install
5, 创建 nginx 用户, 否则安装完 nginx 后启动会报错 [emerg] 35240#0: getpwnam("nginx") failed
6, 创建编译参数中用到的目录 mkdir -p /var/tmp/nginx/client/, 否则安装完 nginx 后启动会报该目录不存在
7, 编译安装 nginx
- [root@nginx-web ~]# tar -zxf nginx-1.12.2.tar.gz
- [root@nginx-web ~]# cd nginx-1.12.2
- [root@nginx-web nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx
- --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log
- --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module
- --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/
- --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
- --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
[root@nginx-web nginx-1.12.2]# make
[root@nginx-web nginx-1.12.2]# make install
8, 使用命令 / usr/local/nginx/sbin/nginx -t 检查配置文件语法, 并用命令 / usr/local/nginx/sbin/nginx 启动 nginx
9, 使用 / usr/local/nginx/sbin/nginx -V 查看版本
10, 使用浏览器访问, 成功显示默认站点
四, 测试 Nginx 启动脚本
1, 在 nginx 目录下创建 sh 子目录, 用来存放启动脚本
- root@nginx-web ~]# mkdir /usr/local/nginx/sh
- [root@nginx-web ~]# vi /usr/local/nginx/sh/nginx
- [root@nginx-web ~]# chmod +x /usr/local/nginx/sh/nginx
- [root@nginx-web ~]# cat /usr/local/nginx/sh/nginx
- #!/bin/bash
- NG="/usr/local/nginx/sbin/nginx"
- PIDF="/var/run/nginx/nginx.pid"
- case "$1" in
- start)
- $NG -t &> /dev/null
- if [ $? -eq 0 ];then
- $NG
- echo "Nginx service start success."
- else
- mkdir /var/run/nginx
- $NG -t &> /dev/null
- if [ $? -eq 0 ];then
- $NG
- echo "Nginx service start success."
- else
- $NG -t
- fi
- fi
- ;;
- stop)
- kill -s QUIT `cat $PIDF`
- echo "Nginx service stop success."
- ;;
- restart)
- cat $PIDF &> /dev/null
- if [ $? -eq 0 ];then
- $0 stop
- fi
- $0 start
- ;;
- reload)
- $NG -t &> /dev/null
- if [ $? -eq 0 ];then
- kill -s HUP `cat $PIDF`
- echo "reload Nginx config success."
- else
- $NG -t
- fi
- ;;
- *)
- echo "Usage: $0 {start|stop|restart|reload}"
- exit
- esac
2, 将启动脚本做软连接到系统环境变量路径 / usr/local/sbin, 这样执行脚本可以跟使用命令一样方便
- [root@nginx-web ~]# ln -s /usr/local/nginx/sh/nginx /usr/local/sbin/
- [root@nginx-web ~]# ll /usr/local/sbin/nginx
- lrwxrwxrwx 1 root root 25 Apr 9 20:58 /usr/local/sbin/nginx -> /usr/local/nginx/sh/nginx
3, 测试脚本, 功能正常
4, 将脚本加入 / etc/rc.d/rc.local 实现 nginx 的开机启动
五, 配置 WEB 站点
Nginx 配置文件简介: Nginx 配置文件主要分成四部分: main(全局设置),server(主机设置),upstream(负载均衡服务器设置) 和 location(URL 匹配特定位置的设置).main 部分设置的指令将影响其他所有设置; server 部分的指令主要用于指定主机和端口; upstream 指令主要用于负载均衡, 设置一系列的后端服务器; location 部分用于匹配网页位置. 这四者之间的关系式: server 继承 main,location 继承 server,upstream 既不会继承其他设置也不会被继承. 在这四个部分当中, 每个部分都包含若干指令, 这些指令主要包含 Nginx 的主模块指令, 事件模块指令, HTTP 核心模块指令, 同时每个部分还可以使用其他 HTTP 模块指令, 例如 Http SSL 模块, HttpGzip Static 模块和 Http Addition 模块等.
配置 WEB 站点主要用到 server 和 location 部分.
1, 在 / usr/local/nginx/conf/nginx.conf 中新增一个虚拟主机, 并在 / usr/local/nginx/www 下创建一个主页文件 index.html
2,reload 一下 nginx, 并做 hosts 解析
3, 测试访问虚拟主机 www.jianlong.com, 访问正常
4, 为上述虚拟主机设置别名, 然后 reload 一下 nginx, 并为别名 www.jl.com 做 hosts 解析
5, 使用别名测试访问, 访问正常
6, 配置重定向跳转, 再新增一个虚拟主机, reload 一下 nginx, 做好 hosts 解析后访问 jianlong.com 会自动跳转到 www.jianlong.com, 配置如下:
效果如下 (请点击查看 gif 图)
http://i2.51cto.com/images/blog/201804/20/549cefe66943fd262e408b91503bf84b.gif
来源: http://blog.51cto.com/jiangjianlong/2105585