Nginx
讀作engine x
, 是一個免費的、開源的、高效能的HTTP
和反向代理服務,主要負責負載一些訪問量比較大的站點;Nginx
可以作為一個獨立的Web
服務,也可以用來給Apache
或是其他的Web
服務做反向代理;- 相比於
Apache
,Nginx
可以處理更多的併發連線,而且每個連線的記憶體佔用的非常小; - 本教程將會教您如何在
Centos 7
的伺服器上安裝和管理Nginx
。
- 確保可以用
sudo
許可權登入登陸伺服器; - 確保沒有其他程式在佔用
Http
:80
和Https
:443
,防止埠被佔用,Nginx
無法正常啟動。
-
EPEL
倉庫中有Nginx
的安裝包。如果你還沒有安裝過EPEL
,可以通過執行下面的命令來完成安裝:sudo yum install epel-release
;上面程式碼的意思是以 sudo 許可權執行安裝 epel-release,如果你當前登入的使用者不是 root,則會提示你輸入密碼來執行,輸入密碼時是看不到輸入的內容的,所以不用擔心,繼續輸入就行。然後回車繼續執行,後面的命令中如果包含 sudo 則都表明是剛提到的意思,不再重複解釋。
-
安裝
Nginx
:sudo yum install nginx
;- 如果這是您第一次從
EPEL
倉庫中安裝軟體,yum
可能會提示您匯入EPEL GPG key
:Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-9.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Is this ok [y/N]:
- 類似於上面的內容,遇到這種情況,輸入
y
,然後Enter
(回車) 即可繼續安裝。
-
安裝完成以後,可以通過以下命令來設定開機啟動和執行
Nginx
服務:sudo systemctl enable nginx
;- 執行以上命令以後,會輸出類似以下的內容,表示建立了一個軟連線來關聯 Nginx,不用擔心,並不是報錯了,下一步就可以啟動 Nginx 了;
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
- 啟動
Nginx
:sudo systemctl start nginx
; - 通過執行以下命令,來檢查
Nginx
的執行狀態:sudo systemctl status nginx
; - 然後會輸出型別下面的內容:
● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-08-23 14:36:29 CST; 5s ago Process: 1392 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 1388 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 1387 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 1395 (nginx) CGroup: /system.slice/nginx.service ├─1395 nginx: master process /usr/sbin/nginx └─1396 nginx: worker process
-
如果你的伺服器開啟了防火牆,則需要同時開啟 80(HTTP)和 443(HTTPS)埠:
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
-
驗證 Nginx 是否成功啟動,可以在瀏覽器中開啟
http://:{Your_IP_Address}
,您將看到預設的Nginx
歡迎頁面,類似於下圖所示:- 注:Nginx 的預設歡迎頁有好幾種樣式,和你安裝的版本有關,所以大家只用關注這個頁面的大標題就行了
Welcome to nginx!
- 注:Nginx 的預設歡迎頁有好幾種樣式,和你安裝的版本有關,所以大家只用關注這個頁面的大標題就行了
- 啟動
Nginx
:sudo systemctl start nginx
; - 停止
Nginx
:sudo systemctl stop nginx
; - 重啟
Nginx
:sudo systemctl restart nginx
; - 修改
Nginx
配置後,重新載入:sudo systemctl reload nginx
; - 設定開機啟動
Nginx
:sudo systemctl enable nginx
; - 關閉開機啟動
Nginx
:sudo systemctl disable nginx
;
- 通過以上方式安裝的
Nginx
,所有相關的配置檔案都在/etc/nginx/
目錄中; Nginx
的主配置檔案是/etc/nginx/nginx.conf
;- 為了使
Nginx
配置更易於維護,建議為每個服務(域名)建立一個單獨的配置檔案; - 每一個獨立的
Nginx
服務配置檔案都必須以.conf
結尾,並儲存在/etc/nginx/conf.d
目錄中。您可以根據需求,建立任意多個獨立的配置檔案; - 獨立的配置檔案,建議遵循以下命名約定,比如你的域名是
kaifazhinan.com
,那麼你的配置檔案的應該是這樣的/etc/nginx/conf.d/kaifazhinan.com.conf
,如果你在一個伺服器中部署多個服務,當然你也可以在檔名中加上Nginx
轉發的埠號,比如kaifazhinan.com.3000.conf
,這樣做看起來會更加友好; - 如果你的配置中有很多重複的程式碼,那麼建議你建立一個
/etc/nginx/snippets
資料夾,在這裡面存放所有會被複用的程式碼塊,然後在各個需要用到的Nginx
的配置檔案中引用進去,這樣可以更方便管理和修改; Nginx
日誌檔案(access.log
和error.log
)位於/var/log/nginx/
目錄中。建議為每個獨立的服務配置不同的訪問許可權和錯誤日誌檔案,這樣查詢錯誤時,會更加方便快捷;- 你可以將要部署的程式碼檔案,儲存在任何你想的位置,但是一般推薦存放在下列位置中的其中一個:
/home/<user_name>/<site_name>
/var/www/<site_name>
/var/www/html/<site_name>
/opt/<site_name>
/usr/share/nginx/html
- 首先恭喜你,你已經成功的在
CentOS 7
上安裝了Nginx
服務,你現在可以在你的伺服器中通過Nginx
部署你的服務程式碼啦,如果你打算在伺服器中部署多個服務,你可能需要閱讀這篇文章 How To Set Up Nginx Server Blocks on CentOS 7(待翻譯)。 - 哦,對了,安全證照(
HTTPS
)是當今所有網站的『必備』功能。所以你可以閱讀這篇文章 Secure Nginx with Let's Encrypt on CentOS 7(待翻譯) 來學習如何通過Let’s Encrypt SSL
生成免費的安全證照。