Nginx安裝方式探究

Ubuntu 16.04(阿里雲ECS),Nginx 1.10.3 (Ubuntu)

 

本文探究兩種安裝方式:

1.源碼安裝(手動)

2.APT安裝(自動)

 

源碼安裝(手動)

步驟簡介:

下載、解壓、./configure、make、make install(好像可以不要),,後面還要把nginx命令添加到環境變量PATH中、設置隨機啓動等工作

 

下載:$ wget http://nginx.org/download/nginx-1.15.2.tar.gz

解壓:$ tar -zxvf nginx-1.15.2.tar.gz

進入解壓後的Nginx目錄,執行./configure ...、make、make install進行安裝。

安裝到了/home/username/server/nginx中,安裝目錄下包括配置文件conf子目錄下的nginx.conf。

在/etc/profile文件中將家目錄下nginx添加到環境變量中:export命令

在/etc/rc.local文件(本地的Ubuntu 18.04中沒有找到)設置Nginx隨機啓動:/home/username/server/nginx/sbin/nginx

重啓後,可以看到Nginx服務已經啓動了:ps -ef | grep nginx。

 

其中,./configure這一步是重難點,它具有很多參數,用來配置將要安裝什麼樣的Nginx——包含什麼模塊、具備什麼功能,請參考下文:

Nginx 服務器安裝及配置文件詳解

 

--prefix選項指定安裝目錄(必須吧?),不過,自己並不很清楚要把軟件要安裝在哪裏,於是就安裝在了家目錄下,可是,後面的操作就比較麻煩了。

 

上面鏈接文檔中關於./configure的部分截圖:

 

之前自己參考了另一篇博文(Linux下Nginx安裝的方法(pcre和openssl))進行源碼安裝,結過,在和使用APT安裝後的Nginx對比後發現其好像太簡單了

爲什麼會這麼說呢?因爲nginx命令的-V(大寫V)選項的輸出結果太簡單了:

1 $ nginx -V
2 nginx version: nginx/1.14.0
3 built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
4 configure arguments: --prefix=/home/ben/server/nginx/ --with-openssl=/usr/lib/ssl/

 

而使用APT安裝後,執行nginx -V得到的是什麼呢?見下圖:

好多內容,好完整!不過,其版本爲1.10.3,比使用源碼的要低。

這和阿里雲ECS的Ubuntu 16.04配置的APT源(/etc/apt/sources.list)有關係吧!

要升級的話,看來需要自己配置源,然後重新安裝?或者,升級apt upgrade。

 

疑問:pcre和Nginx的正則匹配有關係,openssl呢?和使用Nginx支持HTTPS有關係?

 

APT安裝(自動)

步驟簡介:

使用sudo apt update檢查可安裝軟件列表;

使用apt-cache search nginx | grep nginx查看可以安裝的Nginx服務器,找到下面的:

nginx - small, powerful, scalable web/proxy server

使用sudo apt install nginx進行安裝(輸入y確認安裝);

 

注意,參考上面的源碼安裝使用的參考文檔,在安全前得確保pcre、openssl已經安裝成功(具體原因不是很清楚)。其中,參考文檔裏面安裝了openssl-dev,但在APT源中沒有找到,據說在Ubuntu中是用libssl-dev:

 

安裝完畢後,使用nginx -V可以查看到本文前面一張圖的信息,其中的configure arguments更多,顯得更完整了。

對了,其中還有--with-pcre-jit、--with-http_ssl_module、--with-stream_ssl_module、--with-mail_ssl_module等。

 

猜測:可以把這個configure arguments複製到源碼安裝的./configure那裏吧?這樣的話,源碼安裝和APT安裝後的結果應該就一致了。

 

在驚歎nginx -V命令的結果如此多之後,仔細查看其結果,發現其中包含了Nginx服務器啓動後的配置文件、日誌文件、PID文件的信息:

/etc/nginx/目錄、/var/log/nginx/目錄、/run/nginx.pid文件

至於其中的其它幾個路徑,自己並不是太懂。

 

關於Nginx的配置,自己前面寫了一篇博文介紹APT安裝Nginx的,當然,新手之作,就不是那麼完全了。

 

另外,在使用APT安裝Nginx之後,Nginx程序已經被添加到Linux服務中了,使用下面的命令可以查看其狀態:

service --status-all

上圖使用了grep nginx只是查找nginx服務的信息。可以看到,在紅色的nginx前面的中括號中是加號(+),這表示Nginx服務已經啓動了,沒有啓動則爲減號(-)。

 

說明,自己對Linux服務程序還是不太清楚,需要dig,在/etc/init.d/目錄中的腳本都是服務吧?寫好腳本,使用update-rc.d命令安裝服務就可以了——前面看的資料是這樣的。

 

知道Nginx程序被設置爲Nginx服務了,那麼,服務的啓動、停止、重啓、重載呢?使用service nginx命令可以看到下面的結果:

$ service nginx
Usage: nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}

這些命令的具體用法其實是寫在/etc/init.d/nginx腳本中的,熟悉shell編程的話,可以仔細看看——目前自己的功力是不夠的,但卻更需要讀懂它!

 

前面自己使用的多的命令是service nginx -s reload,多了一個-s,可上面的Usage中卻沒有提及。

 

原來,使用nginx -h命令可以獲得相關信息啊!其中的-s選項表示 發送信號給master進程執行stop、quit、reopen、reload等操作。

 

APT安裝方式怎麼卸載呢?

sudo apt remove nginx,或者,sudo apt-get remove/purge nginx?自己沒有試過,TBD。不知道這樣的方式卸載是否能卸載乾淨。會存在什麼問題呢?因爲對Linux尚不精通,就不再多說了。

 

安裝完Nginx後,只需要在/etc/nginx/目錄下修改Nginx的配置就可以了,修改完畢後,執行sudo nginx -s reload重載Nginx訪問。

 

順便說一下,可以使用curl命令來測試Nginx提供的內容是否符合預期,這樣就不需要通過瀏覽器來打開頁面進行驗證了,很棒的工具!如有文件下載功能,還可以使用wget命令進行測試!是的,這兩個命令也得精通!使用curl時,感覺就像用上了爬蟲工具!

 

08-08 14:29補充:

APT安裝後的網頁文件從哪兒來的呢?答案可以從/etc/nginx/nginx.conf中找到——server下的root顯示爲/var/www/html、index爲index.html index.htm index.nginx-debian.html,而在/var/www/html目錄中發現了一個index.nginx-debian.html,此即爲Nginx服務器默認展示的首頁,修改後,或添加一個index.html到其中,首頁立即改變。

 

08-08 14:36補充: 

Nginx服務啓動後,存在一個mast進程和若干個worker進程,worker進程的數量由Nginx的配置決定。

需要注意的是,master進程的用戶顯示爲root,worker進程的用戶顯示爲www-data,也是由配置文件決定。

查看Nginx的進程信息:

$ ps -ef | grep nginx
root 3152 1 0 12:25 ? 00:00:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 3170 3152 0 12:25 ? 00:00:00 nginx: worker process

配置文件:

$ cat /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;

 

兩種安裝方式比較

1.源碼安裝比較繁瑣(和自己不精通./configure有很大關係),安裝後還要自己配置添加環境變量、配置隨機啓動等;而APT安裝較爲簡單——如果沒有配置APT源的話就更是簡單了,本文沒有介紹;

2.源碼安裝可以增強對Linux的瞭解、探索,期間會遇到不少問題,適合新手——在解決問題的過程中提高了對Linux及被安裝的熟悉程度;而APT安裝方式的效果則沒有這麼好了;

3.源碼安裝的軟件可以直接選擇最新的軟件版本——只要支持所選操作系統;而APT安裝方式則受制於APT源提供的——可以添加、更新;

 

在經歷過源碼安裝後,對Linux更加熟悉後,目前自己選擇使用APT方式來安裝Nginx。

 

後記

需要精通shell編程,否則,啓動腳本都讀不懂;

需要熟悉Linux各種目錄的用法,否則,源碼安裝時都不知道把軟件安裝在哪裏; 

這個問題存在好幾天了,之前自己一直處於”漫漫長的困惑期“,看了很多資料,但都沒有明確的”答案“,於是,今天自己勤快了一點,重新安裝了Nginx,纔對這個問題有了更深刻的印象;

寫博文很重要,可以整理、複習,傳播自己的有效經驗,以及記錄自己的困惑;

要是沒寫這篇博文,估計自己還要困惑下去,無法做出決定,是的,做決定!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章