Linux(Centos)之安裝Nginx及注意事項

1.Nginx的簡單說明

  a.  Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器,期初開發的目的就是爲了代理電子郵件服務器室友:Igor Sysoev開發,源代碼符合BSD開源。其特色就是佔用內存少併發能力強,在天朝使用Nginx的大型網站已經有不少:百度、淘寶、騰訊等等...。html

  b.Nginx做爲Http服務器,有如下幾項基本特徵:linux

    b.1 處理靜態文件,索引文件以及自動索引,打開文件描述符緩衝。nginx

    b.2 無緩存的反向代理加速,簡單的負載均衡和容錯c++

    b.3 模塊化的結構,包括gzipping,byte ranges,chunked responses以及SSI-filter等filter,若是由FastCGI或其它代理服務器處理蛋液中存在的多個SSI,則這項處理能夠並行運行,而不須要相互等待。shell

    b.4 支持SSL和TLSSNI。vim

  c.Nginx官網:http://nginx.org/瀏覽器

  d.Nginx推薦學習網址:http://dreamfire.blog.51cto.com/418026/1140965緩存

2.準備工做

  a.上面簡單介紹了一下Nginx,你們若是想要了解更多關於Nginx的知識,請自行經過網絡學習。服務器

  b.工欲善其事必先利其器,下面咱們就在Linux下面簡單安裝一下Niginx,在安裝過程當中須要了一些問題,同步都會在博客中說出來。網絡

  c.Nginx的安裝依賴於如下三個包,意思就是在安裝Nginx以前首先必須安裝一下的三個包,安裝順序爲我寫的順序:

    c.1 SSL功能須要openssl庫,下載地址:http://www.openssl.org/

    c.2 gzip模塊須要zlib庫,下載地址:http://www.zlib.net/

    c.3 rewrite模塊須要pcre庫,下載地址:http://www.pcre.org/

  d.Nginx的安裝包:下載地址爲:http://nginx.org/en/download.html

  e.將上面下載的幾個軟件所有使用Xftp上傳到Linux系統中,上傳路徑和軟件如圖所示:

    

  f.操做須要的軟件以及系統以下:虛擬機(Vmware),虛擬機中安裝的Centos系統,Xshell,Xftp,以及上面的幾個包。

   g.下面開始按照上面說的按照順序開始安裝軟件。

3.安裝SSL功能須要openssl庫以及gzip模塊須要的zlib庫

  a(1).首先咱們安裝SSL功能須要的openssl庫插件,注意:安裝過程是按照我在linux下設置的文件路徑來安裝的,命令以下:

    a.1   tar -zxvf  soft/openssl-SNAP-20160104

    a.2   cd cd openssl-SNAP-20160104/

    a.3   ./config

    a.4   make

    a.5   make install

  b(1).安裝gzip模塊須要zlib庫的安裝方法和openssl安裝的方法如出一轍,也是分爲上面五個步驟,只不過是文件的名稱不同,命令簡單以下:

    b.1   tar -zxvf  soft/openssl-SNAP-20160104

    b.2   cd openssl-SNAP-20160104/

    b.3   ./configure 

    b.4   make

    b.5   make install

  b.若是沒有報錯,則說明安裝徹底完成了~。

4.安裝 rewrite模塊須要pcre庫

  a.安裝 rewrite模塊須要pcre庫的安裝方法和openssl安裝的方法如出一轍,也是分爲上面五個步驟,只不過是文件的名稱不同,命令簡單以下:

    a.1   tar -zxvf soft/pcre-8.38.tar.gz

    a.2   cd pcre-8.38/

    a.3   ./configure 

    a.4   make

    a.5   make install

  b.在執行./configure的出現錯誤了,致使不能繼續往下執行,報錯內容爲:

    error: You need a C++ compiler for C++ support,看到這句話咱們就已經猜到了應該是c++包信息,而linux中沒有,那麼首先安裝一下這個包信息便可,安裝命令爲:

    b.1  yum install -y gcc gcc-c++

  c.當安裝完上面的c++包以後,在此運行,發現消息已經顯示安裝成功了,當基於上面的東西所有安裝完成以後,就須要安裝Nginx服務了。

5.安裝 Nginx服務

  a.安裝 rewrite模塊須要pcre庫的安裝方法和openssl安裝的方法如出一轍,也是分爲上面五個步驟,只不過是文件的名稱不同,命令簡單以下:

    a.1   tar -zxvf soft/nginx-1.9.9.tar.gz

    a.2   cd nginx-1.9.9/

    a.3   ./configure --with-pcre=../pcre-8.38/ --with-zlib=../zlib-1.2.8/ --with-openssl=../openssl-SNAP-20160104/

    a.4   make

    a.5   make install

  b.在執行./configure的出現錯誤了,致使不能繼續往下執行,報錯內容爲:

    error: You need a C++ compiler for C++ support,看到這句話咱們就已經猜到了應該是c++包信息,而linux中沒有,那麼首先安裝一下這個包信息便可,安裝命令爲:

    b.1  yum install -y gcc gcc-c++

  c.當安裝完上面的c++包以後,在此運行,發現消息已經顯示安裝成功了。博文到這裏若是安裝的時候沒有遇到錯誤的話說明已經安裝成功了,下面咱們就是測試Nginx是否安裝成功。

6.監測Nginx是否安裝成功

  a.當上面的全部步驟完成以後,則說明Nginx安裝已經完成,那麼咱們如何來肯定是否安裝成功了呢?經過如下命令來肯定便可。

    a.1  cd /usr/local/nginx/sbin/

    a.2 ./nginx -t

  b. 當我執行第二個命令(./nginx -t)的時候出錯了,報沒有權限的錯誤。如圖所示:

    

    備註:根據錯誤提示,咱們就可以看出來,是說/usr/local/nginx下沒有權限,解決辦法也很簡單,咱們給文件賦值權限。

  c.以下圖所示,配置權限(配置權限須要切換到root用戶下)以後,執行上面兩個步驟,若是linux中以下圖所示:則說明安裝已成功。

    

  d.當確認安裝完成以後,首先就須要啓動和查看Nginx默認安裝的端口是多少,兩個命令分別以下:

    (1)  ./nginx

    (2)  netstat -ntlp  ,  Nginx默認端口爲80

  e.開放80端口,讓其外部環境能夠訪問(若是不開放80端口,外部環境訪問不了),命令以及截圖以下:

    vim /etc/sysconfig/iptables

    備註:這裏我使用vim更改防火強信息以後,在從新啓動防火牆的時候出現了錯誤,錯誤信息爲:Try `iptables-restore -h' or 'iptables-restore --help' for more information,這個錯誤信息提示咱們不能從新啓動防火牆,那怎麼辦呢?測試了一下已寫命令的方式去更改,發現更改爲功了,如圖所示:

      

  f.當上面的工做完成以後,咱們在外部瀏覽器中瀏覽:http://IP,出現如圖所示,則說明安裝已徹底完成。

    

 

7.將Nginx設置爲開機自動啓動

 

  a.當上面6步完成以後,說明安裝已經徹底成功了,可是每次開機咱們面臨的一個問題,就是每次都要執行命令(1: cd /usr/local/nginx/sbin/   2:./nginx -t),那麼這時候有這個須要,設置開機自啓動,開機自動啓動的命令爲:將Nginx的啓動命令添加到/etc/rc.local,命令以下:

    echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /etc/rc.local

  b.而後將Linux關機重啓測試一下,若是http://IP還可以訪問,則說明配置成功了,我這邊已測試,配置徹底成功。

 

8.使用server命令啓動nginx服務

   a.  如今以爲啓動命令太麻煩,雖然開機能夠自啓動,可是每次改動要從新啓動nginx的話,要麼輸入命令,要麼開機,都還不是很好,那麼咱們能不能創造一個更好的方式呢?固然能夠,咱們能夠經過設置System V腳本。

  b.腳本代碼以下所示:

  1 #!/bin/sh 
  2 # 
  3 # nginx - this script starts and stops the nginx daemon 
  4 # 
  5 # chkconfig: - 85 15 
  6 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ 
  7 #   proxy and IMAP/POP3 proxy server 
  8 # processname: nginx 
  9 # config: /etc/nginx/nginx.conf 
 10 # config: /etc/sysconfig/nginx 
 11 # pidfile: /var/run/nginx.pid 
 12 # Source function library. 
 13 . /etc/rc.d/init.d/functions 
 14 # Source networking configuration. 
 15 . /etc/sysconfig/network 
 16 # Check that networking is up. 
 17 [ "$NETWORKING" = "no" ] && exit 0 
 18     nginx="/usr/local/nginx/sbin/nginx" 
 19     prog=$(basename $nginx) 
 20     NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" 
 21 [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx 
 22     lockfile=/var/lock/subsys/nginx 
 23  
 24 start() { 
 25     [ -x $nginx ] || exit 5 
 26     [ -f $NGINX_CONF_FILE ] || exit 6 
 27     echo -n $"Starting $prog: " 
 28     daemon $nginx -c $NGINX_CONF_FILE 
 29     retval=$? 
 30     echo 
 31 [ $retval -eq 0 ] && touch $lockfile 
 32     return $retval 
 33 } 
 34  
 35 stop() { 
 36     echo -n $"Stopping $prog: " 
 37     killproc $prog -QUIT 
 38     retval=$? 
 39     echo 
 40 [ $retval -eq 0 ] && rm -f $lockfile 
 41     return $retval 
 42     killall -9 nginx 
 43 } 
 44  
 45 restart() { 
 46     configtest || return $? 
 47     stop 
 48     sleep 1 
 49     start 
 50 } 
 51  
 52 reload() { 
 53     configtest || return $? 
 54     echo -n $"Reloading $prog: " 
 55     killproc $nginx -HUP 
 56     RETVAL=$? 
 57     echo 
 58 } 
 59  
 60 force_reload() { 
 61     restart 
 62 } 
 63  
 64 configtest() { 
 65     $nginx -t -c $NGINX_CONF_FILE 
 66 } 
 67  
 68 rh_status() { 
 69     status $prog 
 70 } 
 71  
 72 rh_status_q() { 
 73     rh_status >/dev/null 2>&1 
 74 } 
 75  
 76 case "$1" in 
 77     start) 
 78         rh_status_q && exit 0 
 79         $1 
 80     ;; 
 81     stop) 
 82         rh_status_q || exit 0 
 83         $1 
 84     ;; 
 85     restart|configtest) 
 86         $1 
 87     ;; 
 88     reload) 
 89         rh_status_q || exit 7 
 90         $1 
 91     ;; 
 92     force-reload) 
 93         force_reload 
 94     ;; 
 95     status) 
 96         rh_status 
 97     ;; 
 98     condrestart|try-restart) 
 99         rh_status_q || exit 0 
100     ;; 
101     *) 
102         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 
103         exit 2 
104 esac 
server命令的代碼

  c.建立命令以下,手先跳轉到/etc/init.d下建立nginx啓動腳本文件,命令以下;

    c.1 cd /etc/init.d/

    c.2 vim nginx  建立一個新的nginx文件,將上面的命令代碼copy到裏面,而後保存

  d.修改腳本權限,命令以下:chmod 755 nginx

  e.將腳本文件加入到chkconfig中  chkconfig --add nginx

 

  f.設置nginx開機在3和5級別自動啓動  chkconfig --level 35 nginx on

  g.測試nginx腳本文件是否可以正常使用,命令以下,我均已測試,所有可使用。

    g.1  /etc/init.d/nginx restart

    g.2  /etc/init.d/nginx reload

    g.3   /etc/init.d/nginx stop 

     

    到這裏咱們這片筆記就完成了,能幫助你們就幫到,幫不到你們,謝謝你們了,這只是學習筆記,不用較真某些東西,謝謝~~~~

      後面有機會我還會再說這塊的,如何將一個網站部署到nginx下去~~~~

            天天的努力都是爲了將來更夠更好~~~~~

相關文章
相關標籤/搜索