標籤:

《寫給大忙人看的技術書》NGINX 安裝

《寫給大忙人看的技術書》NGINX 安裝

來自專欄 CODE ZATAN

RHEL/CentOS 通過包(Packages)安裝 NGINX

要安裝最新的 NGINX 版本,請在 /etc/yum.repos.d/nginx.repo 中添加以下內容,以添加 NGINX 主線倉庫(mainline repository)

[nginx]name=nginx repobaseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1

OS 部分用 rhelcentos 替換,OSRELEASE 部分替換為 5 , 6 或 7 ,以便對應正確的版本。

不知道自己是什麼系統版本的,可以通過運行 cat /etc/redhat-release ,查看你本機的系統版本信息。

倉庫添加完畢後,更新包,然後開始安裝 NGINX。

yum updateyum install nginx

詳細信息,請參閱 nginx.org/en/linux_pack上的官方文檔。

通過編譯安裝

首先我們需要安裝包構建工具和額外的 Extra Packages For Enterprise Linux(EPEL)倉庫:

sudo yum install yum-utils epel-release mock

然後更新/etc/yum.repos.d/nginx.repo,添加額外的倉庫源:

[nginx-source]name=nginx source repobaseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/gpgcheck=0 enabled=1

在這個例子中,我們使用CentOS 7作為演示。如何修改為其他版本的CentOS,參閱上一節用包安裝中的相關說明。

更新倉庫後,我們創建一個目錄用於編譯, 然後下載源代碼包(SRPM):

mkdir ~/nginxbuildcd ~/nginxbuildyumdownloader --source nginx

接下來,下載所需的包以完成編譯:

yum-builddep nginx

一旦下載了所有開發包,我們現在可以從SRPM中提取文件:

rpm2cpio nginx-1.9.10-1.el7.ngx.src.rpm | cpio -idmv

請注意,目錄名稱可能因您安裝的NGINX版本而異。例如,這裡是nginx-1.9.10,因為我安裝了NGINX 1.9.10。

您應該看到源文件的輸出類似於:

如果我們想要更新配置並應用補丁或更改其中一個默認值,那麼可以通過編輯文件來完成。

我們現在可以使用 mock 從源代碼重建這些文件,這是一個用於構建包的工具。 mock 的優點是所有開發依賴項都包含在 chrooted 環境中,因此它不會使主安裝變得混亂。可以清理和刪除這個 chrooted 環境,而不會對主機系統產生任何影響,如果您需要可重複的構建,這是很好的。

要編譯,只需要運行如下命令:

mock --buildsrpm --spec ~/nginxbuild/nginx.spec --sources ~/nginxbuild

這將生成SRPM,它們將與相關的日誌文件一起位於 /var/lib/moc/epel-7-x86_64/result目錄中。現在我們已經重建了SRPM,我們可以編譯它了。同樣,我們將使用mock,以便整齊地包含所有內容:

mock --no-clean --rebuild var/lib/mock/epel-7-x86_64/result/nginx-1.9.11-1.el7.ngx.src.rpm

根據你機器的處理能力,這可能需要五分鐘或更長時間才能完成。編譯完成後,你應該在 /var/lib/mock/epel-7-x86_64 目錄中看到生成的二進位 RPM 以及調試用的 RPM 。這是一個例子:

-rw-rw-r-- 1 demo mock 159K Feb 10 20:59 build.log-rw-r--r-- 1 demo mock 889K Feb 10 20:57 nginx-1.9.11-1.el7.ngx.src.rpm-rw-r--r-- 1 demo mock 803K Feb 10 20:59 nginx-1.9.11-1.el7.ngx.x86_64.rpm-rw-r--r-- 1 demo mock 3.1M Feb 10 20:59 nginx-debuginfo-1.9.11-1.el7.ngx.x86_64.rpm-rw-rw-r-- 1 demo mock 45K Feb 10 20:59 root.log-rw-rw-r-- 1 demo mock 1000 Feb 10 20:59 state.log

現在我們有了新的二進位文件,我們可以通過 yum 安裝它:

sudo yum install /var/lib/mock/epel-7-x86_64/result/nginx-1.9.11-1. ngx.x86_64.rpm

最好使用 yum 來安裝軟體包,因為它也可以安裝任何依賴項。

測試

無論你的安裝方法如何,一旦啟動並運行 NGINX ,你應該能夠通過IP地址加 / 或完全限定域名(FQDN)瀏覽它,並查看與此處顯示的內容非常相似的內容:

要啟動,停止和重新啟動 NGINX(如果使用官方二進位文件安裝),你可以使用標準的 Linux init 系統。不同的OS版本之間存在非常小的差異,因此確保正確使用正確的變數命令非常重要。

當Ubuntu從15.04切換到 systemd 作為默認的 init 系統時,請確保仔細檢查您正在使用的版本。

各版本的操作可參考以下表

NGINX 的某些配置修改將需要完全重啟 NGINX,而其他修改只需要重新載入配置。在大多數已修改配置文件的情況下,只需重新載入即可。 NGINX 將 fork 一組新的 worker 進程,並允許現有 workers 進程完成處理並乾淨地退出,這樣就可以避免停機。

我們可以在進行配置更改後檢查 NGINX 配置文件,以確保語法正確。為此,我們運行以下命令:

/usr/sbin/nginx -t

如果一切正確,你應該看到以下內容:

nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

如果有任何錯誤,請在錯誤提示對應的配置行檢查是否存在語法錯誤。


推薦閱讀:

nginx的dns緩存問題?
Apache Web伺服器的安裝(4個步驟)
服務發現與負載均衡
PHP項目在Nginx站點二級目錄時的偽靜態規則
Nginx反向代理和負載均衡

TAG:Nginx |