1. 程式人生 > >Nginx 安裝詳細(一)

Nginx 安裝詳細(一)

解決 實現 b- ng- grep ini 出現 inf 開機

1. 老規矩,來點開場白:Nginx簡單介紹

Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;Nginx可以作為一個HTTP服務器進行網站的發布處理,另外Nginx可以作為反向代理進行負載均衡的實現。

更多關於Nginx介紹以及作用請自行百度

2. 安裝Nginx基礎依賴包

[root@nginx ~]# yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel  -y 

3. 下載相關的軟件包

3.1 下載nginx穩定版

註:進入Nginx安裝包下載地址復制您想要的版本鏈接,我這裏以Nginx-1.14.0為例。

[root@nginx~]# cd /usr/local/src/                      
[root@ nginx src]# wget http://nginx.org/download/nginx-1.14.0.tar.gz 

3.2 下載nginx-sticky模塊(可選安裝,應用於集群)

作用:後端做負載均衡解決session sticky問題。

[root@nginx src]# wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/master.tar.gz

3.3 下載ngx_cache_purge模塊(可選安裝)

作用:將ngx_cache_purge編譯到到Nginx中,用來清除指定URL的緩存。

(官網地址:http://labs.frickle.com/nginx_ngx_cache_purge/)

[root@nginx src]# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz

技術分享圖片

4. 添加Nginx用戶和組

[root@nginx ~]# groupadd www                             
[root@nginx 
~]# useradd -g www www -s /sbin/nologin

註:創建nginx運行用戶www並加入到www組,不允許www用戶直接登錄系統。

5. 解壓Nginx源碼包並進入解壓目錄,進行編譯安裝

[root@nginx src]# tar zxf nginx-1.14.0.tar.gz     
# 註意3.2的可選項 [root@nginx src]# tar zxf ngx_cache_purge
-2.3.tar.gz
# 註意3.3的可選項 [root@nginx src]# tar zxf nginx
-goodies-nginx-sticky-module-ng-08a395c66e42.tar.gz [root@nginx src]# cd nginx-1.14.0/

註:‘=’號後面是自己安裝包的絕對路徑,和配置文件路徑。

[root@nginx-master nginx-1.14.0]# ./configure --prefix=/usr/local/nginx             
> --user=www --group=www                                                  
> --with-http_stub_status_module                                               
> --with-http_realip_module --with-http_ssl_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
# 註意3.2的可選項
> --with-pcre --add-module=/usr/local/src/ngx_cache_purge-2.3
# 註意3.3的可選項 > --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-08a395c66e42

技術分享圖片

執行完編譯後:

技術分享圖片

[root@nginx nginx-1.14.0]# make && make install

註:Nginx的所有模塊必須在編譯的時候添加,不能再運行的時候動態加載。

6. 優化Nginx程序的執行路徑

[root@nginx nginx-1.14.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/  
[root@nginx nginx-1.14.0]# nginx -t

如果出現以下問題:

技術分享圖片

需要創建此目錄:

[root@nginx nginx-1.14.0]# mkdir -p /var/tmp/nginx/client  

技術分享圖片

7. 配置Nginx開機自啟動等命令,方便我們管理Nginx

原始管理nginx的命令,不是很方便!

[root@nginx-master ~]# nginx              啟動nginx
[root@nginx-master ~]# nginx -s reload    重啟nginx
[root@nginx-master ~]# nginx -s stop      停止nginx

接下來設置常用的管理命令:

1) 創建開機啟動命令腳本文件:

[root@nginx ~]# vim /etc/init.d/nginx

2) 在這個Nginx文件中插入一下啟動腳本代碼:

-----------------------------------腳本如下 -----------------------------------
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
scriptNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can‘t reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $scriptNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
[root@nginx ~]# cd /etc/init.d/

3) 設置所有人都有對這個啟動腳本nginx文件的執行權限:

[root@nginx init.d]# chmod a+x nginx 

4) 把nginx加入系統服務中:

[root@nginx init.d]# chkconfig --add nginx 

5) 把服務設置為開機啟動:

[root@nginx init.d]# chkconfig nginx on

註:reboot重啟系統生效!

6) 重啟後,就可以執行如下命令進行管理了

systemctl start   nginx.service         # 啟動nginx
systemctl stop    nginx.service         # 結束nginx
systemctl restart nginx.service         # 重啟nginx
systemctl enable  nginx.service         # 開機啟動

8. 如果出現 Nginx 啟動不了,請嘗試以下方法

1) 如果之前安裝過httpd,側需要先卸載httpd,否則啟動失敗,除非修改Nginx啟動端口。

[root@nginx ~]# yum remove httpd -y 

2) 如果還是啟動不來,再試試這個方法:殺死Nginx相關的進程之後,啟動Nginx

[root@nginx ~]#ps -A | grep nginx                                         
[root@nginx ~]#kill -9 pid1                                              
[root@nginx ~]#kill -9 pid2

3) 如果還是不行,查看日誌信息解決。

9. 啟動Nginx並訪問測試

技術分享圖片

註:後續繼續更新Nginx優化及反向代理功能!

Nginx 安裝詳細(一)