簡介
Drupal 是最受歡迎的內容管理系統 (CMS) 之一,用於運行部落格和管理企業內容。開發人員和企業因其健壯性和易用性而偏愛它。它具有高度的可定制性,並且可以進行擴展以實現各種應用場景。
在本教學中,我們將演示如何在 Ubuntu 20.04 上安裝 Drupal,並搭配 Apache.
先決條件
由於我們將在 Ubuntu 上安裝 Drupal,我們需要安裝最新版本的 Ubuntu。您可以按照我們的 Ubuntu 安裝指南(如果您尚未安裝)。我們還需要安裝並準備好 PHP, MySQL、以及 Apache。如果您尚未安裝這些,可以參考我們的指南 LAMP Stack 設定 – Linux Apache MySQL PHP.
在我們開始下載並在機器上設定 Drupal 之前,我們必須對系統進行一些調整。在安裝了 PHP、MySQL 和 Apache 之後,讓我們開始配置系統以進行 Drupal 安裝。
準備 MySQL 使用者和資料庫
Drupal 依賴 MySQL 資料庫來儲存資料和配置。我們將設定一個專用的使用者和資料庫,以便隔離我們的 Drupal 環境。這也有助於保護我們的應用程式安全。我們將建立一個新的使用者和資料庫。首先,在終端機中執行以下命令以登入 MySQL 伺服器:
|
1 |
mysql -u root -p |
輸入 MySQL 的 使用者名稱 和 密碼。驗證通過後,執行以下命令建立一個新資料庫。我們將其命名為 drupal:
|
1 |
CREATE DATABASE drupal; |
接下來,您需要建立一個新使用者來連接到此資料庫。我們將其命名為 drupaluser。至於密碼,請確保輸入一個強密碼。執行以下命令建立新使用者:
|
1 |
CREATE USER drupaluser@localhost IDENTIFIED BY 'password'; |
我們的使用者需要執行此資料庫操作的權限。然而,提供所有權限會使我們的應用程式面臨安全漏洞。因此,我們將透過執行以下命令來提供必要的權限:
|
1 |
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON drupal.* TO drupaluser@localhost; |
授予權限後,我們就可以繼續前進了。執行以下命令以刷新權限,使其立即生效:
|
1 |
FLUSH PRIVILEGES; |
之後,執行以下命令退出 MySQL:
|
1 |
exit |
安裝與設定 PHP 模組
Drupal 需要 PHP 模組才能運作。我們將從 Ubuntu 官方套件庫下載它們。執行以下命令更新您的本地套件快取:
|
1 2 |
sudo apt-get update sudo apt-get install php5-gd php5-curl libssh2-php |
接下來,我們將根據 Drupal 的建議對 PHP 模組進行一些調整。使用以下命令開啟 PHP 設定檔:
|
1 |
sudo nano /etc/php5/apache2/php.ini |
關閉這兩個 expose_php 以及 allow_url_fopen 變數:
|
1 2 3 4 5 |
. . . expose_php = Off . . . allow_url_fopen = Off . . . |
儲存並關閉檔案。您現在可以繼續下一步了。
修改 Apache 中的 Htaccess 檔案
Drupal 需要修改 URL,使其對使用者更有意義。為此,它需要重寫 URL 的權限。幸運的是,Apache 預設就提供了用於重寫的 mod_rewrite 模組。我們只需要啟用它。執行以下命令以啟用此模組:
|
1 |
sudo a2enmod rewrite |
接下來,我們需要更新虛擬主機設定。我們必須這樣做,以便 Drupal 可以存取 .htaccess 檔案。執行以下命令開啟 virtualhost 檔案:
|
1 |
sudo nano /etc/apache2/sites-enabled/000-default.conf |
在 virtualhost 設定,新增指向我們網頁根目錄的資料夾。在這裡, AllowOverride 設為 All。如果您有網域名稱,您可以新增 ServerName 指令,並修改 ServerAdmin 指令以反映有效的電子郵件地址:
|
1 2 3 4 5 6 7 8 9 10 11 |
<VirtualHost *:80> . . . ServerName example.com ServerAdmin webmaster@example.com DocumentRoot /var/www/html <Directory /var/www/html> AllowOverride All </Directory> . . . </VirtualHost> |
儲存並關閉檔案。我們現在都準備好了。我們只需要重新啟動 Apache 和 PHP 即可讓變更生效:
|
1 |
sudo service apache2 restart |
安裝 Drupal
在這裡,我們將在網頁根目錄上安裝 Drupal。我們將解壓縮 Drupal 檔案並進行複製。之後,我們將把這些複製的檔案複製到目標目錄中。如果發生任何問題,這將為我們提供檔案備份。
要下載 Drupal,請開啟 https://www.drupal.org/project/drupal。在 推薦版本 區段中,您應該找到所需的版本。然後,複製 tar.gz 檔案的位址。在您的伺服器上,您可以使用 wget 工具下載此檔案。在終端機中執行以下命令以獲取複製的連結位址:
|
1 2 |
cd ~ wget <your link> |
檔案下載完成後,輸入以下命令解壓縮應用程式目錄:
|
1 |
tar xzvf drupal* |
現在使用以下命令移動到新建立的目錄:
|
1 |
cd drupal* |
執行以下命令,將此目錄中的所有檔案複製到網頁根目錄:
|
1 |
sudo rsync -avz . /var/www/html |
檔案複製完成後,執行以下命令進入網頁根目錄:
|
1 |
cd /var/www/html |
使 Drupal 檔案易於安裝且安全
如果我們透過網頁版安裝指令碼來安裝 Drupal,我們將需要修改 Drupal 目錄。這會迫使我們在瀏覽器和命令列之間切換。雖然我們也可以用這種方式安裝,但更好的選擇是對我們的檔案進行微調,以消除這種麻煩。
在子樹 sites/default 下建立一個名為 files:
|
1 |
mkdir /var/www/html/sites/default/files |
將預設設定檔案複製到 Drupal 用於作用中設定的檔案名稱:
|
1 |
cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php |
要完成安裝,我們需要給予作用中設定檔案更多權限。我們稍後會將其還原。執行以下命令以將寫入權限授予 群組 擁有者:
|
1 |
chmod 664 /var/www/html/sites/default/settings.php |
將我們檔案的群組擁有權授予網頁使用者,在 Ubuntu 中為 www-data。我們的整個 Drupal 安裝都需要這些擁有權屬性:
|
1 |
sudo chown -R :www-data /var/www/html/* |
我們現在可以繼續了。
完成網頁版安裝
從現在開始,我們將使用瀏覽器。步驟將會非常簡單快速。在您的瀏覽器中輸入伺服器的網域/IP:
|
1 |
http://server_domain_or_ip/ |
您將會看到 Drupal 歡迎頁面:

在大多數情況下,Standard 是預設選項。如果您的使用案例有特定需求,請選擇 Manual。選擇 Standard 後,按一下 Save and Continue。您會看到更多提示。繼續按一下 Next 並接受預設選項,直到您到達資料庫設定頁面。在此頁面中,您將被要求輸入資料庫資訊。輸入 user 以及 password 以及 database 於此頁面中(即我們在上方所使用的資訊):

點擊 儲存並繼續。如果您被重新導向到同一個資料庫設定頁面,只需重新整理頁面即可。資料庫設定將會被配置,且設定檔將會被安裝。
系統將會要求您提供更多關於網站的資訊。頂部也會出現一個提示,告知可以變更設定檔案的權限。我們只會短暫地進行此操作,然後就會還原變更。我們不希望危及我們的網站安全。請輸入網站所需的資訊:

我們必須再次點擊 儲存並繼續 以完成安裝。透過輸入您的 IP/網域來開啟您的網站。您將會看到歡迎頁面:

Drupal 的安裝到此結束。現在我們將還原設定的權限,以避免未經授權的使用。在終端機中執行以下命令來限制此權限:
|
1 |
chmod 644 /var/www/html/sites/default/settings.php |
疑難排解
我們需要確保 Drupal 安裝已完成。如果最後一個步驟未完成,請執行以下命令:
|
1 |
sudo tail /var/log/apache2/error.log |
這將會開啟 log 檔案。接下來,檢查您是否能在檔案中找到以下日誌:
|
1 2 |
PHP Fatal error: Call to undefined function field_attach_load() in /var/www/html/includes/entity.inc on line 316, referer: http://12.34.56.78/install.php?profile=standard&locale=en sh: 1: /usr/sbin/sendmail: not found |
如果出現上述幾行,表示我們的安裝不成功。為了消除此錯誤,Drupal 在其文件中提供了指引:https://www.drupal.org/node/481758
上述錯誤的常見原因為 max_execution_time。若要增加此值,請使用以下命令開啟 php.ini 檔案:
|
1 |
sudo nano /etc/php5/apache2/php.ini |
接下來,找到 max_execution_time 並將其修改如下:
|
1 |
max_execution_time = 300 |
由於我們使用的是自己的資料庫,我們必須刪除 Drupal 的預設資料庫以及現有的 PHP 設定檔案 /var/www/html/default/settings.php。在此之後,用預設複本取代它們,然後重新開始安裝。作為預防措施,請不要忘記建立備份。
若要刪除現有的 Drupal 資料庫,請登入 MySQL 資料庫並執行以下命令:
|
1 |
DROP DATABASE drupal; |
然後,按照上述說明建立資料庫並授予權限。另一個選擇是再次執行 cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php 以取代設定檔案。請確保您也執行了 chmod 664 /var/www/html/sites/default/settings.php 命令以再次設定正確的權限。現在存取您的 IP並嘗試再次安裝。
結論
在本教學中,我們學習了如何在執行 Ubuntu 的機器上設定 Drupal。這將為您開始使用 Drupal CMS 打下堅實的基礎。建立好 Drupal 設定可以幫助您運行高度可自訂的網站,而無需從頭開始編寫所有程式碼。
若要深入了解另一個實用的 CMS(WordPress),您可以參考以下教學:
- 如何在 Ubuntu 20.04 上使用 Docker 容器部署 WordPress
- 如何在 Ubuntu 20.04 上使用 LAMP 安裝 WordPress
- 為什麼您應該為您的網站選擇 WordPress 雲端主機?
- 如何將網站從 WordPress 遷移到 CloudSigma PaaS
祝您使用愉快!
留言
目前尚無留言。成為第一個留言的人吧。