安裝和配置網頁伺服器 (Nginx/Apache)
1. 什麼是網頁伺服器?
今天我們要聊的是 Nginx 跟 Apache,這兩個最受歡迎的網頁伺服器。等到講座結束,你的伺服器就可以自信滿滿地向網路上的使用者打招呼啦!
在動手輸入指令之前,我們先搞清楚我們到底要幹嘛。網頁伺服器是一個用來接收 HTTP 請求(比方說使用者打開瀏覽器輸入網站地址的時候),處理這些請求並回應相應內容的程式(可能是一個 HTML 頁面、一個檔案,或者一個「404 Not Found」錯誤)。它是使用者和你的內容之間的橋樑。
Nginx vs Apache: 網頁伺服器之戰
如果 Nginx 和 Apache 在咖啡館碰上了,那麼:
- Nginx 可能會點一杯薰衣草拿鐵,然後用非同步的方式快速解決所有事情:「你把請求給我,我一分鐘內把檔案傳回去,別打擾我!」
- Apache 則比較傳統,為每個任務建立一個執行緒,慢條斯理地回應,雖然在處理大量請求時稍慢些。
簡單比較:
特點 | Nginx | Apache |
---|---|---|
架構 | 非同步 | 基於執行緒 |
效能 | 高負載時效能優越 | 適合動態內容 (PHP/Perl) |
簡易性 | 配置簡單,但有些細節需要注意 | 更通用,但也更複雜 |
什麼時候選擇什麼?
- 如果你的網站是一些靜態檔案(比如部落格或著陸頁),Nginx 是你的好朋友。
- 如果你在處理動態網頁應用程式(比如 PHP 網站),Apache 會提供更多的靈活性。
2. 安裝 Web 伺服器
現在,你已經明白了為什麼需要這個,現在該開始安裝了。我們將介紹如何安裝 Nginx 和 Apache。選擇你比較喜歡的,或者同時安裝兩個,這樣更有專業感喔。
安裝 Nginx
更新套件列表:
sudo apt-get update
安裝 Nginx:
sudo apt-get install nginx
檢查伺服器狀態:
sudo systemctl status nginx
如果一切正常,你會看到像這樣的東西:
active (running)
。測試預設頁面: 打開瀏覽器,輸入
http://localhost
。你應該可以看到 Nginx 的歡迎頁面,這表示安裝成功了。
安裝 Apache
更新套件列表:
sudo apt-get update
安裝 Apache:
sudo apt-get install apache2
檢查伺服器狀態:
sudo systemctl status apache2
和 Nginx 一樣,狀態應該是「active (running)」。
測試預設頁面: 打開瀏覽器,輸入
http://localhost
。這時候應該會顯示 Apache 的預設頁面。
3. Web 伺服器的基本設定
設定藏在哪裡?
Nginx 的主要設定檔案路徑是:
/etc/nginx/nginx.conf
Apache 的路徑是:
/etc/apache2/apache2.conf
試著用你喜愛的編輯器(例如 nano
)來打開設定檔案:
sudo nano /etc/nginx/nginx.conf
這是你第一次冒險的起點:一開始可能會完全看不懂,因為設定檔看起來像角色扮演遊戲裡的咒語。但別擔心—我們會一起弄清楚。
啟動、停止與重啟伺服器
如果你懂得如何在 Linux 中管理服務,那麼「事情已經完成一半了」。以下是管理我們 Web 伺服器的主要指令:
對於 Nginx:
sudo systemctl start nginx # 啟動
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 重啟
sudo systemctl reload nginx # 重載設定
對於 Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
檢查設定
在重啟伺服器之前,務必要檢查你是否犯錯:
對於 Nginx:
sudo nginx -t
對於 Apache:
sudo apachectl configtest
任何設定錯誤都會顯示出來—你不會不小心弄壞伺服器。
4. 示範:運行我們的第一個網站
現在我們要做的是每個網頁開發者都很喜歡的事情——創建一個網站,取一個超級有創意的名字「Hello Server」。
對於 Nginx
創建網站目錄:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
在文件中寫下這些內容(沒錯,所有的天才創意都很簡單):
<h1>Hello, Nginx Server!</h1>
配置設置:
sudo nano /etc/nginx/sites-available/hello
以下是簡單的配置樣例:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
啟用配置:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
在
/etc/hosts
添加條目,把域名hello.local
配置到本地機器上:127.0.0.1 hello.local
在瀏覽器中檢查網站:http://hello.local。
hosts 文件包含 IP 地址到域名的映射。這是你的本地 DNS 伺服器。每個操作系統中都會有這個文件。在 Windows 系統中,這個文件的位置是 C:\Windows\System32\drivers\etc\hosts
對於 Apache
創建目錄:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
填寫文件:
<h1>Hello, Apache Server!</h1>
創建虛擬主機配置:
sudo nano /etc/apache2/sites-available/hello.conf
以下是配置樣例:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
啟用配置:
sudo a2ensite hello.conf sudo systemctl reload apache2
添加條目到
/etc/hosts
:127.0.0.1 hello.local
檢查運行狀況:http://hello.local。
今天的課程後,大家已經準備好能夠自行安裝和配置主要的網頁伺服器了。再稍微努力一下,就能部署真正的網站和應用程式,再也不像兒童的畫作了。HTTPS 正在某個角落潛伏,但我們稍後再學。
GO TO FULL VERSION