介紹
Apache HTTP 伺服器是世界上使用最廣泛的網頁伺服器。它提供許多強大的功能,包括動態加載模組、強大的媒體支持以及與其他流行軟件的廣泛集成。
在本指南中,您將學習如何在您的 Ubuntu 22.04 伺服器上安裝 Apache 網頁伺服器。
使用DigitalOcean App Platform從 GitHub 部署您的應用程式。讓 DigitalOcean 專注於擴展您的應用程式。
先決條件
在開始本指南之前,您需要設置一個帶有sudo
權限的非root使用者的 Ubuntu 22.04 伺服器,並啟用防火牆以封鎖非必要的埠。您可以按照我們的Ubuntu 22.04 初始伺服器設置指南進行操作。
設置完成後,以您的非root使用者身份登錄並進行下一步。
步驟 1 — 安裝 Apache
Apache 可以在 Ubuntu 的默認軟件庫中找到,因此可以使用常規的軟件包管理工具進行安裝。
首先,更新本地軟件包索引以反映最新的上游更改:
然後,安裝 apache2
軟件包:
確認安裝後,apt
將安裝 Apache 及所有必需的依賴項。
步驟 2 — 調整防火牆
在測試 Apache 之前,有必要修改防火牆設置,以允許外部訪問默認的 Web 端口。如果您遵循了先決條件中的說明,您應該已經配置了一個 UFW 防火牆,以限制對您的服務器的訪問。
在安裝期間,Apache 會向 UFW 註冊自身,以提供一些應用程序配置文件,這些配置文件可用於通過防火牆啟用或禁用對 Apache 的訪問。
運行以下命令列出 ufw
應用程序配置文件:
您的輸出將是一個應用程序配置文件列表:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
如輸出所示,Apache 有三個可用的配置文件:
Apache
:此設定檔僅開啟端口80
(正常、未加密的網路流量)Apache 完整
:此設定檔同時開啟端口80
(正常、未加密的網路流量)和端口443
(TLS/SSL 加密流量)Apache 安全
:此設定檔僅開啟端口443
(TLS/SSL 加密流量)
建議啟用最為嚴格的設定檔,只要仍允許您已配置的流量即可。由於在此指南中尚未為您的伺服器配置 SSL,因此您只需要允許端口 80
上的流量:
您可以通過檢查狀態來驗證更改:
輸出將提供允許的 HTTP 流量清單:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
正如輸出所示,已啟動設定檔以允許存取 Apache 網頁伺服器。
步驟 3 — 檢查您的網頁伺服器
在安裝過程結束時,Ubuntu 22.04 會啟動 Apache。網頁伺服器將已啟動並運行。
請確保服務已啟動,方法是執行 systemd
初始化系統的命令:
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 5089 (apache2)
Tasks: 55 (limit: 1119)
Memory: 4.8M
CPU: 33ms
CGroup: /system.slice/apache2.service
├─5089 /usr/sbin/apache2 -k start
├─5091 /usr/sbin/apache2 -k start
└─5092 /usr/sbin/apache2 -k start
根據此輸出的確認,服務已成功啟動。然而,測試這一點的最佳方式是從 Apache 請求一個網頁。
您可以通過您的 IP 地址訪問默認的 Apache 登錄頁面,以確認軟件是否正常運行。如果您不知道您的服務器 IP 地址,您可以通過幾種不同的方式從命令行獲取它。
請在您的服務器命令提示符處嘗試輸入以下內容:
您將收到幾個由空格分隔的地址。您可以在瀏覽器中嘗試每個地址,以確定它們是否有效。
另一個選擇是使用免費的 icanhazip.com
工具。這是一個網站,當訪問時,會返回您的機器的公共 IP 地址,該地址是從互聯網上的另一個位置讀取的:
當您獲得了服務器的 IP 地址後,請將其輸入到您的瀏覽器地址欄中:
http://your_server_ip
您將看到默認的 Ubuntu 22.04 Apache 網頁,如下所示:
此頁面表明 Apache 正常工作。它還包含有關重要的 Apache 文件和目錄位置的一些基本信息。
步驟 4 — 管理 Apache 進程
現在您的網絡服務器已經運行起來了,讓我們通過使用 systemctl
來回顧一些基本的管理命令。
要停止您的網絡服務器,請運行:
要在服務器停止時啟動網絡服務器,請運行:
要停止然後再次啟動服務,請運行:
如果您只是进行配置更改,Apache通常可以在不断开连接的情况下重新加载。要执行此操作,请使用以下命令:
默认情况下,Apache被配置为在服务器启动时自动启动。如果这不是您想要的,请通过运行以下命令禁用此行为:
要重新启用服务在引导时启动,请运行:
Apache现在将在服务器重新启动时自动启动。
步骤5 — 设置虚拟主机(推荐)
在使用Apache Web服务器时,您可以使用虚拟主机(类似于Nginx中的服务器块)来封装配置详细信息,并从单个服务器上托管多个域。我们将设置一个名为your_domain的域,但您应该将其替换为您自己的域名。
信息:如果您正在使用DigitalOcean设置域名,请参阅我们的网络文档。
Apache 在 Ubuntu 22.04 上默認啟用了一個服務器塊,配置為從 /var/www/html
目錄提供文檔。雖然這對於單個站點效果良好,但如果您要托管多個站點,可能會變得難以管理。與其修改 /var/www/html
,不如在 /var/www
中創建一個目錄結構來存放 your_domain 網站的文件,將 /var/www/html
保留為默認目錄,以便在客戶端請求不匹配其他站點時提供服務。
按照以下步驟創建 your_domain 的目錄:
接下來,使用 $USER
環境變量將該目錄的所有權分配給您當前登錄的用戶:
如果您沒有修改 umask 值,則您的 Web 根目錄的權限應該是正確的,該值設置了默認文件權限。為確保權限正確,並允許所有者讀取、寫入和執行文件,同時僅向組和其他人授予讀取和執行權限,您可以輸入以下命令:
接下來,使用 nano
或您喜歡的編輯器創建一個示例的 index.html
頁面:
在內部添加以下示例 HTML:
完成後保存並關閉文件。如果您使用的是 nano
,您可以按 CTRL + X
,然後按 Y
和 ENTER
。
為了讓 Apache 提供此內容,需要建立一個帶有正確指令的虛擬主機文件。不要直接修改位於 /etc/apache2/sites-available/000-default.conf
的默認配置文件,而是在 /etc/apache2/sites-available/your_domain.conf
創建一個新的文件:
添加以下配置塊,與默認配置類似,但更新為新目錄和域名:
請注意,我們已將 DocumentRoot
更新為我們的新目錄,將 ServerAdmin
更新為 your_domain 站點管理員可以訪問的電子郵件。我們還添加了兩個指令:ServerName
,用於確定將與此虛擬主機定義匹配的基本域,以及 ServerAlias
,定義了進一步的名稱,將與基本名稱一樣匹配。
完成後保存並關閉文件。
現在使用 a2ensite
工具啟用文件:
禁用 000-default.conf
中定義的默認站點:
接下來,測試配置錯誤:
你應該會收到以下輸出:
Output. . .
Syntax OK
重新啟動 Apache 以實施更改:
Apache 現在將提供您的域名。您可以通過導航到 http://your_domain
來測試,您將看到類似以下的內容:
第6步 – 熟悉重要的Apache文件和目录
既然您已经知道如何管理Apache服务本身,您应该花几分钟时间熟悉一些重要的目录和文件。
内容
/var/www/html
:实际的网页内容,默认情况下只包括您之前看到的默认Apache页面,它们存储在/var/www/html
目录中。可以通过修改Apache配置文件来更改此设置。
服务器配置
/etc/apache2
:Apache配置目录。所有Apache配置文件都驻留在这里。/etc/apache2/apache2.conf
:主要的Apache配置文件。这可以修改以对Apache全局配置进行更改。此文件负责加载配置目录中的许多其他文件。/etc/apache2/ports.conf
:此文件指定 Apache 監聽的埠。預設情況下,Apache 監聽埠80
,並且在啟用提供 SSL 功能的模組時還會監聽埠443
。/etc/apache2/sites-available/
:這是存儲每個站點虛擬主機的目錄。除非將其鏈接到sites-enabled
目錄,否則 Apache 不會使用此目錄中找到的配置文件。通常,在此目錄中進行所有服務器塊配置,然後使用a2ensite
命令將其鏈接到其他目錄中以啟用。/etc/apache2/sites-enabled/
:這是存儲已啟用的每個站點虛擬主機的目錄。通常,通過使用a2ensite
將在sites-available
目錄中找到的配置文件鏈接到此目錄中來創建這些文件。當 Apache 開始或重新加載時,它會讀取此目錄中找到的配置文件和鏈接,以編譯完整的配置。/etc/apache2/conf-available/
,/etc/apache2/conf-enabled/
:這些目錄與sites-available
和sites-enabled
目錄具有相同的關係,但用於存儲不屬於虛擬主機的配置片段。conf-available
目錄中的文件可以使用a2enconf
命令啟用,並使用a2disconf
命令禁用。/etc/apache2/mods-available/
、/etc/apache2/mods-enabled/
:這些目錄分別包含可用的模組和已啟用的模組。以.load
結尾的文件包含加載特定模組的片段,而以.conf
結尾的文件包含這些模組的配置。可以使用a2enmod
和a2dismod
命令來啟用和禁用模組。
伺服器日誌
/var/log/apache2/access.log
:默認情況下,除非配置了其他方式,否則將每個對您的Web伺服器的請求記錄在此日誌文件中。/var/log/apache2/error.log
:默認情況下,所有錯誤都記錄在此文件中。Apache配置中的LogLevel
指令指定錯誤日誌將包含多少詳細信息。
結論
現在您已安裝了Web伺服器,您可以選擇多種內容類型以及用於創建更豐富體驗的技術。
如果您想構建更完整的應用程序堆棧,您可以閱讀有關如何在Ubuntu 22.04上配置LAMP堆棧的文章