《寫給大忙人看的技術書》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 部分用 rhel
或 centos
替換,OSRELEASE 部分替換為 5 , 6 或 7 ,以便對應正確的版本。
不知道自己是什麼系統版本的,可以通過運行 cat /etc/redhat-release ,查看你本機的系統版本信息。
倉庫添加完畢後,更新包,然後開始安裝 NGINX。
yum updateyum install nginx
詳細信息,請參閱 http://nginx.org/en/linux_packages.html#mainline上的官方文檔。
通過編譯安裝
首先我們需要安裝包構建工具和額外的 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 |