在 Ubuntu 安裝 Nginx 伺服器(使用 APT 安裝)
在 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
維基百科有各版本的代號中文
安裝指令
使用官方 APT 套件庫直接進行安裝。
sudo apt update
sudo apt install nginx
測試結果
安裝完畢後可以執行以下指令來確認是否安裝成功。
sudo nginx -v
如果安裝成功就會出現如下的版本號訊息。
nginx version: nginx/1.18.0 (Ubuntu)
如果在虛擬機做測試就輸入 127.0.0.1
,
或是在瀏覽器輸入虛擬機的 IP。
介紹 Nginx
預設路徑
/usr/sbin/nginx
:主程式/etc/nginx
:設定文件/usr/share/nginx
:靜態文件/var/log/nginx
:日誌/var/www/html
:歡迎畫面的靜態網頁
設定文件目錄結構
進入 /etc/nginx
會看到許多資料夾目錄和檔案,這邊列出部分比較重要的來介紹。
名稱 | 說明 |
---|---|
nginx.conf | 主要的設定文件,會引用其他 conf.d 、modules-enabled 、sites-enabled 內的設定 |
conf.d | 額外的設定文件 |
modules-available | 可用的模組 |
modules-enabled | 啟用的模組 |
sites-available | 可用的網站設定 |
sites-enabled | 啟用的網站設定 |
snippets | 裡面有一些憑證和 PHP 的設定片段 |
mime.types | 詳見媒體類型對應表 |
設定 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 介面,有許多常見的應用情境可選,
只要選項選好就可以產生參考的設定檔。