跳至主要內容

在 Ubuntu 安裝 Nginx 伺服器(使用 APT 安裝)

Pamis Wang大约 3 分鐘伺服器NginxNginx 1.18UbuntuUbuntu 22.04

在 Ubuntu 安裝 Nginx 伺服器(使用 APT 安裝)

前言

Linux 主機上廣泛被使用的網頁伺服器有 Apache 或 Nginx ,
兩者有不同的適用情境與長處。

本文章會在 Ubuntu 22.04 透過官方的 APT 套件庫安裝 Nginx 伺服器,
並簡單介紹使用設定說明。

安裝 Nginx

查詢版本

輸入以下指令可查詢該作業系統對應的官方套件版本

apt-cache madison nginx

在文章時間的當下 Ubuntu 22.04 對應的 Nginx 版本是 1.18.0

nginx | 1.18.0-6ubuntu14.3 | http://tw.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
nginx | 1.18.0-6ubuntu14.3 | http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
nginx | 1.18.0-6ubuntu14 | http://tw.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

冷知識

Ubuntu 每個版本的作業系統都有一個以「形容詞+動物」系統代號。
Ubuntu 22.04 是 Jammy Jellyfish
Ubuntu 20.04 是 Focal Fossa  
維基百科有各版本的代號中文open in new window

安裝指令

使用官方 APT 套件庫直接進行安裝。

sudo apt update
sudo apt install nginx

測試結果

安裝完畢後可以執行以下指令來確認是否安裝成功。

sudo nginx -v

如果安裝成功就會出現如下的版本號訊息。

nginx version: nginx/1.18.0 (Ubuntu)

如果在虛擬機做測試就輸入 127.0.0.1
或是在瀏覽器輸入虛擬機的 IP。

IP因人而異僅供參考
IP因人而異僅供參考

介紹 Nginx

預設路徑

  • /usr/sbin/nginx:主程式
  • /etc/nginx:設定文件
  • /usr/share/nginx:靜態文件
  • /var/log/nginx:日誌
  • /var/www/html:歡迎畫面的靜態網頁

設定文件目錄結構

進入 /etc/nginx 會看到許多資料夾目錄和檔案,這邊列出部分比較重要的來介紹。

名稱說明
nginx.conf主要的設定文件,會引用其他 conf.dmodules-enabledsites-enabled 內的設定
conf.d額外的設定文件
modules-available可用的模組
modules-enabled啟用的模組
sites-available可用的網站設定
sites-enabled啟用的網站設定
snippets裡面有一些憑證和 PHP 的設定片段
mime.types詳見媒體類型對應表open in new window

設定 Nginx

Nginx 設定可以至 /etc/nginx/site-available/ 這個資料夾內的 default 進行設定,
通常一台機器內若有架設多個網站,可以利用多個設定檔方便區分不同網域或服務。

這裡以預設的 default 設定檔案來測試,
建議不熟悉的人可以先行備份,避免改壞了救不回來。

沒了!
沒了!

預設設定檔的路徑

/etc/nginx/sites-available/default

根目錄指向/var/www/html
也就是上面的歡迎畫面的靜態 HTML 檔案。

複製預設設定檔的路徑

cp /etc/nginx/sites-available/default /etc/nginx/sites-available/webname

設定完成後,需要將這個設定檔連結至 site-enabled

sudo ln -s /etc/nginx/sites-available/webname /etc/nginx/sites-enabled/

確認 Nginx 是否連接成功

sudo nginx -t

得到這個消息後便可重啟 Nginx

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

重新讀取 Nginx 設定文件

sudo service nginx reload

重啟 Nginx 伺服器

sudo service nginx restart

權限問題

如果 /var/log/nginx/error.log 出現 stat() failed (13: permission denied) 的錯誤訊息
代表 Nginx 無法正常 cd 至專案目錄
解決方法參考如下:

根據 /etc/nginx/nginx.conf 設定,
Nginx 預設使用者為 www-data
故需要將指定使用者加入 www-data 群組。

# username 自己替換成指定使用者
sudo gpasswd -a www-data username

並確保用戶群組可以進入路徑中的所有目錄

sudo chmod g+x /home/pamis && chmod g+x /home/pamis/test

設定完畢後重啟伺服器

工具介紹

對新手而言自己寫伺服器設定有一定門檻,
這邊介紹個不錯的網站可以幫助撰寫設定。
有精美的 GUI 介面,有許多常見的應用情境可選,
只要選項選好就可以產生參考的設定檔。

NGINXConfigopen in new window

參考資料

Nginx: stat() failed (13: permission denied)open in new window
Chmod 指令補充open in new window

上次編輯於:
貢獻者: pamis,Pamis Wang