1. 程式人生 > >如何配置 Apache Web 伺服器

如何配置 Apache Web 伺服器

學習如何在 Apache 上託管你自己的網站,這是一個可靠、流行且易於配置的 Web 伺服器。

我託管自己的網站已經有很多年了。自從 20 多年前從 OS/2 切換到 Linux 以來,我一直將 Apache 作為我的伺服器軟體。Apache 是可靠、流行的,且基本的安裝配置也很容易。對於更復雜的設定(比如多個網站)也並不是那麼困難。

Apache Web 伺服器的安裝和配置必須以 root 身份執行。 防火牆的配置也需要以 root 身份執行。 使用瀏覽器檢視安裝配置的結果應該以非 root 使用者的身份完成。 (我在我的虛擬主機上使用 student 這個使用者。)

安裝

  1. dnf
    -y install httpd

這個虛擬機器是個非常基礎的桌面環境,我正在使用它作為編寫書籍的測試平臺。 即使在這個系統上,也只安裝了六個依賴項,用了一分鐘。

Apache 的所有配置檔案都位於 /etc/httpd/conf/etc/httpd/conf.d 。網站的資料預設位於 /var/www,但如果你願意,你可以改變它。

配置

Apache 主要的配置檔案是 /etc/httpd/conf/httpd.conf 。 它包含許多在基本安裝中不需要更改的配置。 實際上,只需對此檔案進行一些更改即可啟動並執行一個簡單的網站。 該檔案非常大,因此,我不會將這篇文章與大量不必要的東西混淆起來,而只會顯示那些需要更改的指令。

第一個要修改的是 Listen 配置項,它定義了 Apache 要監聽頁面請求的 IP 地址和埠。 現在,你只需要使這個網站可以從本地訪問,所以使用 localhost 地址。 完成後,該行應該看起來像這樣:( LCTT 譯註:localhost 的 IP 地址是 127.0.0.180 是埠)

  1. Listen127.0.0.1:80

通過將此配置項設定為 localhost的 IP 地址,Apache 將只偵聽來自本地主機的連線。 如果您希望 Web 伺服器偵聽來自遠端主機的連線,則可以使用主機的外部 IP 地址。

DocumentRoot 配置項指定組成網站頁面的 HTML 檔案的位置。 該配置項不需要更改,因為它已經指向標準位置。 該行應該看起來像這樣:

  1. DocumentRoot"/var/www/html"

Apache 安裝包會建立 /var/www 目錄。 如果您想更改儲存網站檔案的位置,則使用此配置項來完成此操作。 例如,您可能想要為 www 目錄使用不同的名稱,以更明確地識別網站。 這可以是這樣的:

  1. DocumentRoot"/var/mywebsite/html"

這些是建立一個簡單網站需要唯一修改的 Apache 配置項。 對於這個小練習,只對 httpd.conf 檔案(Listen 配置項)進行了一些修改。 其它的配置項對於一個簡單的 Web 伺服器暫時無需配置。

另一個需要改變的地方是:在我們的防火牆中開啟埠 80。 我使用 iptables 作為我的防火牆,因此我更改 /etc/sysconfig/iptables 檔案以新增允許使用 HTTP 協議。 整個檔案看起來像這樣:

  1. # sample configuration for iptables service
  2. # you can edit this manually oruse system-config-firewall
  3. # please donot ask us to add additional ports/services to thisdefault configuration
  4. *filter
  5. :INPUT ACCEPT [0:0]
  6. :FORWARD ACCEPT [0:0]
  7. :OUTPUT ACCEPT [0:0]
  8. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  9. -A INPUT -p icmp -j ACCEPT
  10. -A INPUT -i lo -j ACCEPT
  11. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22-j ACCEPT
  12. -A INPUT -p tcp -m state --state NEW -m tcp --dport 80-j ACCEPT
  13. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  14. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  15. COMMIT

我在檔案的倒數第三行上添加了一個新行,它允許在埠 80 上輸入流量。現在我重新載入 iptables 配置檔案。

  1. [[email protected] ~]#cd/etc/sysconfig/; iptables-restore iptables

建立 index.html 檔案

index.html 檔案是你使用域名訪問網站而不是訪問特定網頁時的預設檔案。在 /var/www/html中,建立一個名字為 index.html 的檔案,在其中新增字串 Hello World 。你不需要新增任何的 HTML 標誌去完成這項工作。web 伺服器的唯一任務是提供文字資料流,伺服器不知道資料是什麼,也不知道如何呈現它。它只是將資料流傳輸給請求主機。

儲存檔案後,將所有權設定為 apache.apache

  1. [[email protected] html]#chown apache.apache index.html

啟動 Apache

Apache 很容易啟動。 當前版本的 Fedora 使用 systemd 。 執行以下命令啟動它,然後檢查伺服器的狀態:(LCTT 譯註:systemctl 是一個 systemd 工具)

  1. [[email protected] ~]#systemctl start httpd
  2. [[email protected] ~]#systemctl status httpd
  3. httpd.service -TheApache HTTP Server
  4. Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  5. Active: active (running) since Thu2018-02-0813:18:54 EST;5s ago
  6. Docs:man:httpd.service(8)
  7. Main PID:27107(httpd)
  8. Status:"Processing requests..."
  9. Tasks:213(limit:4915)
  10. CGroup:/system.slice/httpd.service
  11. ├─27107/usr/sbin/httpd -DFOREGROUND
  12. ├─27108/usr/sbin/httpd -DFOREGROUND
  13. ├─27109/usr/sbin/httpd -DFOREGROUND
  14. ├─27110/usr/sbin/httpd -DFOREGROUND
  15. └─27111/usr/sbin/httpd -DFOREGROUND
  16. Feb0813:18:54 testvm1 systemd[1]:StartingTheApache HTTP Server...
  17. Feb0813:18:54 testvm1 systemd[1]:StartedTheApache HTTP Server.

您的伺服器上的命令可能不同。在使用 SystemV 啟動指令碼的 Linux 系統上,命令如下:

  1. [[email protected] ~]# service httpd start
  2. Starting httpd:[FriFeb0908:18:072018]          [  OK  ]
  3. [[email protected] ~]# service httpd status
  4. httpd (pid  14649)is running...

如果您的主機上有像 Firefox 或 Chrome 這樣的瀏覽器,您可以在瀏覽器的 URL 行上使用 URL localhost 來顯示您的 web 頁面,儘管看起來很簡單。您還可以使用像 Lynx 這樣的文字模式 web 瀏覽器來檢視 web 頁面。首先,安裝 Lynx (如果它還沒有被安裝)。

  1. [[email protected] ~]# dnf -y install lynx

然後使用下面的命令來顯示網頁。

  1. [[email protected] ~]# lynx localhost

結果在我的終端中是這樣的。我已經刪除了頁面上的很多空白。

  1. HelloWorld
  2. <snip>
  3. Commands:Use arrow keys to move,'?'for help,'q' to quit,'<-' to go back.
  4. Arrow keys:UpandDown to move.Right to follow a link;Left to go back.
  5. H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list```

接下來,編輯您的 index.html 檔案並新增一些 HTML 標記,使其看起來像這樣:

  1. <h1>Hello World</h1>

現在重新整理瀏覽器。對於 Lynx,使用組合鍵 Ctrl + R 。 結果看起來有點不同。如果你的終端支援彩色的話文字是彩色顯示的,Lynx 會顯示標題,現在它處於居中狀態。 在 GUI 瀏覽器中,文字將以大字型顯示。

  1. HelloWorld
  2. <snip>
  3. Commands:Use arrow keys to move,'?'for help,'q' to quit,'<-' to go back.
  4. Arrow keys:UpandDown to move.Right to follow a link;Left to go back.
  5. H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list

後記

從這個小練習中可以看到,建立一個 Apache Web 伺服器很容易。 具體情況取決於您的發行版和該發行版提供的 Apache 版本。 在我的環境中,這是一個非常簡單的練習。

但不僅僅如此,因為 Apache 非常靈活強大。下個月,我將討論使用單個 Apache 託管多個網站。

via: https://opensource.com/article/18/2/how-configure-apache-web-server

作者:David Both 譯者:amwps290 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出