如何在Ubuntu 22.04上安裝Apache Web伺服器

介紹

Apache HTTP 伺服器是世界上使用最廣泛的網頁伺服器。它提供許多強大的功能,包括動態加載模組、強大的媒體支持以及與其他流行軟件的廣泛集成。

在本指南中,您將學習如何在您的 Ubuntu 22.04 伺服器上安裝 Apache 網頁伺服器。

使用DigitalOcean App Platform從 GitHub 部署您的應用程式。讓 DigitalOcean 專注於擴展您的應用程式。

先決條件

在開始本指南之前,您需要設置一個帶有sudo權限的非root使用者的 Ubuntu 22.04 伺服器,並啟用防火牆以封鎖非必要的埠。您可以按照我們的Ubuntu 22.04 初始伺服器設置指南進行操作。

設置完成後,以您的非root使用者身份登錄並進行下一步。

步驟 1 — 安裝 Apache

Apache 可以在 Ubuntu 的默認軟件庫中找到,因此可以使用常規的軟件包管理工具進行安裝。

首先,更新本地軟件包索引以反映最新的上游更改:

  1. sudo apt update

然後,安裝 apache2 軟件包:

  1. sudo apt install apache2

確認安裝後,apt 將安裝 Apache 及所有必需的依賴項。

步驟 2 — 調整防火牆

在測試 Apache 之前,有必要修改防火牆設置,以允許外部訪問默認的 Web 端口。如果您遵循了先決條件中的說明,您應該已經配置了一個 UFW 防火牆,以限制對您的服務器的訪問。

在安裝期間,Apache 會向 UFW 註冊自身,以提供一些應用程序配置文件,這些配置文件可用於通過防火牆啟用或禁用對 Apache 的訪問。

運行以下命令列出 ufw 應用程序配置文件:

  1. sudo ufw app list

您的輸出將是一個應用程序配置文件列表:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

如輸出所示,Apache 有三個可用的配置文件:

  • Apache:此設定檔僅開啟端口 80(正常、未加密的網路流量)
  • Apache 完整:此設定檔同時開啟端口 80(正常、未加密的網路流量)和端口 443(TLS/SSL 加密流量)
  • Apache 安全:此設定檔僅開啟端口 443(TLS/SSL 加密流量)

建議啟用最為嚴格的設定檔,只要仍允許您已配置的流量即可。由於在此指南中尚未為您的伺服器配置 SSL,因此您只需要允許端口 80 上的流量:

  1. sudo ufw allow 'Apache'

您可以通過檢查狀態來驗證更改:

  1. sudo ufw status

輸出將提供允許的 HTTP 流量清單:

Output
Status: 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 初始化系統的命令:

  1. sudo systemctl status apache2
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 地址,您可以通過幾種不同的方式從命令行獲取它。

請在您的服務器命令提示符處嘗試輸入以下內容:

  1. hostname -I

您將收到幾個由空格分隔的地址。您可以在瀏覽器中嘗試每個地址,以確定它們是否有效。

另一個選擇是使用免費的 icanhazip.com 工具。這是一個網站,當訪問時,會返回您的機器的公共 IP 地址,該地址是從互聯網上的另一個位置讀取的:

  1. curl -4 icanhazip.com

當您獲得了服務器的 IP 地址後,請將其輸入到您的瀏覽器地址欄中:

http://your_server_ip

您將看到默認的 Ubuntu 22.04 Apache 網頁,如下所示:

此頁面表明 Apache 正常工作。它還包含有關重要的 Apache 文件和目錄位置的一些基本信息。

步驟 4 — 管理 Apache 進程

現在您的網絡服務器已經運行起來了,讓我們通過使用 systemctl 來回顧一些基本的管理命令。

要停止您的網絡服務器,請運行:

  1. sudo systemctl stop apache2

要在服務器停止時啟動網絡服務器,請運行:

  1. sudo systemctl start apache2

要停止然後再次啟動服務,請運行:

  1. sudo systemctl restart apache2

如果您只是进行配置更改,Apache通常可以在不断开连接的情况下重新加载。要执行此操作,请使用以下命令:

  1. sudo systemctl reload apache2

默认情况下,Apache被配置为在服务器启动时自动启动。如果这不是您想要的,请通过运行以下命令禁用此行为:

  1. sudo systemctl disable apache2

要重新启用服务在引导时启动,请运行:

  1. sudo systemctl enable apache2

Apache现在将在服务器重新启动时自动启动。

在使用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 的目錄:

  1. sudo mkdir /var/www/your_domain

接下來,使用 $USER 環境變量將該目錄的所有權分配給您當前登錄的用戶:

  1. sudo chown -R $USER:$USER /var/www/your_domain

如果您沒有修改 umask 值,則您的 Web 根目錄的權限應該是正確的,該值設置了默認文件權限。為確保權限正確,並允許所有者讀取、寫入和執行文件,同時僅向組和其他人授予讀取和執行權限,您可以輸入以下命令:

  1. sudo chmod -R 755 /var/www/your_domain

接下來,使用 nano 或您喜歡的編輯器創建一個示例的 index.html 頁面:

  1. sudo nano /var/www/your_domain/index.html

在內部添加以下示例 HTML:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

完成後保存並關閉文件。如果您使用的是 nano,您可以按 CTRL + X,然後按 YENTER

為了讓 Apache 提供此內容,需要建立一個帶有正確指令的虛擬主機文件。不要直接修改位於 /etc/apache2/sites-available/000-default.conf 的默認配置文件,而是在 /etc/apache2/sites-available/your_domain.conf 創建一個新的文件:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

添加以下配置塊,與默認配置類似,但更新為新目錄和域名:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

請注意,我們已將 DocumentRoot 更新為我們的新目錄,將 ServerAdmin 更新為 your_domain 站點管理員可以訪問的電子郵件。我們還添加了兩個指令:ServerName,用於確定將與此虛擬主機定義匹配的基本域,以及 ServerAlias,定義了進一步的名稱,將與基本名稱一樣匹配。

完成後保存並關閉文件。

現在使用 a2ensite 工具啟用文件:

  1. sudo a2ensite your_domain.conf

禁用 000-default.conf 中定義的默認站點:

  1. sudo a2dissite 000-default.conf

接下來,測試配置錯誤:

  1. sudo apache2ctl configtest

你應該會收到以下輸出:

Output
. . . Syntax OK

重新啟動 Apache 以實施更改:

  1. sudo systemctl restart apache2

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-availablesites-enabled 目錄具有相同的關係,但用於存儲不屬於虛擬主機的配置片段。 conf-available 目錄中的文件可以使用 a2enconf 命令啟用,並使用 a2disconf 命令禁用。
  • /etc/apache2/mods-available//etc/apache2/mods-enabled/:這些目錄分別包含可用的模組和已啟用的模組。以.load結尾的文件包含加載特定模組的片段,而以.conf結尾的文件包含這些模組的配置。可以使用a2enmoda2dismod命令來啟用和禁用模組。

伺服器日誌

  • /var/log/apache2/access.log:默認情況下,除非配置了其他方式,否則將每個對您的Web伺服器的請求記錄在此日誌文件中。
  • /var/log/apache2/error.log:默認情況下,所有錯誤都記錄在此文件中。Apache配置中的LogLevel指令指定錯誤日誌將包含多少詳細信息。

結論

現在您已安裝了Web伺服器,您可以選擇多種內容類型以及用於創建更豐富體驗的技術。

如果您想構建更完整的應用程序堆棧,您可以閱讀有關如何在Ubuntu 22.04上配置LAMP堆棧的文章

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04