RedHat 7 編譯安裝Nginx 1.12並配置WEB站點
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
RedHat 7 編譯安裝Nginx 1.12並配置WEB站點