Drupal 7 安裝筆記


!!使用 Windows 的麻瓜請改用 TWAMP 麻瓜架站包。 以下頁面懶人勿入!!

[2013/10/17、 2014/6/17 改寫] 本篇描述如何在 debian 底下安裝 drupal。 Debian 系列的其他版本諸如 antix 或 ubuntu 等等應該也適用。 搜尋 "debian drupal", 前幾名的文章 [ 1 2] 操作細節不盡相同, 但大家都建議: 不要安裝 debian 版的 drupal (因為 debian 的版本通常蠻舊的) 而是要從 drupal 官網下載最新版。 這一篇 解釋得更清楚: 這樣比較方便升級較新的版本。 我自己的經驗也發現: 這樣的做法還可以讓你把一個 drupal 從 fedora 搬到 debian 之類的, 從一個版本的作業系統搬家到另一個版本的作業系統。

以下, 需要你自己取的名字、 密碼、 路徑、 ...等等自行定義的字串, 第一次出現時會用 這樣的字串 顯示。 第二次以後出現, 就不特別標明, 所以如果你自己改過其中一些字串, 剪貼指令時請留意。

請開一個終端機, sudo bash (ubuntu 底下) 或 su (Antix 及 Fedora 底下) 以下我們都用系統管理員 root 的身份來做事。

預備動作

首先安裝資料庫等等相依套件: apt-get install mysql-client mysql-server php-db drush 因為 Drupal 需要用到 mysql 或 postgresql 資料庫, 而php 跟 mysql 之間需要有 php-db 套件作為橋樑。 至於 drush (安裝說明) 則是 drupal shell, 用來管理 drupal 的命令列工具, 好物必裝! 如果這是你第一次安裝 mysql-server, 過程當中會需要自己幫資料庫管理員大大 (mysql 的 root 帳號) 挑選一個密碼。 如果 mysql 的設定有問題 (例如想重設 root 密碼之類的), 可以參考 mysql 逃兵筆記

重要! mysql 的密碼若含有除號字元 (/) 那麼在設定 drupal 時可能會出問題!

再來, 先安裝 debian 版的 drupal7 套件。 咦, 不是說好不裝 debian 版嗎? 沒錯, 等一下會把它刪掉。 這麼一來一往看似沒有意義, 但其實有兩個效果: (1) 很多相依套件會被自動拉進來。 (2) 只要回答幾個問題, 資料庫就會被設定好。 以上這兩件事, 如果要自己純手工打造, 可是有點麻煩的。

所以請先 apt-get install drupal7 其中設定 drupal7 與資料庫連線的過程, 大部分直接按 Enter 採用預設值即可:

  1. 資料庫選擇 mysql [預設]
  2. 連接方式是 unix socket [預設]
  3. Password of the database's administrative user: 先前安裝 mysql-server 時自己挑的資料庫管理員大大的密碼。
  4. MySQL application password for drupal7: drupal7 要去連資料庫時, 自己也需要設定一個密碼。 直接按 Enter 讓系統自動產生一個亂數就好 -- 人類幾乎永遠不會去用到這個密碼。 [預設]

Debian 版的 drupal7 安裝完成之後, 再下 apt-get remove drupal7 把它移除掉。 被問到是否要順便把資料庫相關設定一併刪除的時候 (Deconfigure database for drupal7 with dbconfig-common?) 隨便怎麼回答都可以, 反正等一下要砍掉重練。 (回答 「不要」 步驟可以省一步。) 注意! 如果忘記移除 debian 版的 drupal, 等一下安裝官網版時, 可能會找不到 gd、 pdo、 pdo_mysql 等等諸多 php 外掛套件。

安裝 Drupal 7 主體

先確認你的 [apache2網頁根目錄] 的位置: grep DocumentRoot /etc/apache2/apache2.conf /etc/apache2/sites-available/* 可能會發現 DocumentRoot 被設定成 /var/www/html (較新的 apache2) 或 /var/www (較舊的 apache2)。 也可以直接找到 index.html、 修改內容、 重新瀏覽器查看 http://localhost/ 確認 [apache2網頁根目錄] 的正確位置。

drupal core 專頁, 找到推薦版 (recommended releases) 的 drupal-7.xx.tar.gz 的網址。 下載、 在 [apache2網頁根目錄] 底下解壓縮、 更改目錄名稱:

cd /tmp
wget http://ftp.drupal.org/files/projects/drupal-7.xx.tar.gz
cd [apache2網頁根目錄]
tar xzf /tmp/drupal-7.xx.tar.gz
mv drupal-7.xx d7
cd d7

這裡的 d7 是我任意取的目錄名稱。 以下我們把 /var/www/d7/var/www/html/d7 或是你所命名的 drupal 目錄稱為 [drupal根目錄]。 凡是要執行 drush 指令的時候, 都必須位於 [drupal根目錄]。 請自行代入 (對你) 正確的路徑。 總之在執行 drush 指令之前, 必須先 cd [drupal根目錄]

接下來是初始化 drupal7:

cd [drupal根目錄]
drush site-install standard --clean-url=0 --site-name='絕地學苑' --account-pass='新的秘密' --db-url=mysql://root:'更早的秘密'@localhost/drupal7
chown -R www-data:www-data . # 注意最後的句點不可省略! 它代表 「目前目錄」

這個很長的 drush site-install ... 指令, 就是真正安裝 drupal 的重頭戲。 所有的 drush 指令一定要在 [drupal根目錄] 底下執行, 而且 整個指令要打在同一列上。 這個指令會清空然後重新設定 drupal 所用到的資料庫。

  1. 「--clean-url=0」 叫 drupal 先不要啟用簡潔網址。 (下詳) 在尚未準備好的狀況下啟用簡潔網址, 有可能會連管理選單都看不見。
  2. 絕地學苑」 請改成你想採用的站名 (中文可)
  3. 新的秘密」 是你自己任意挑的一個密碼, 未來你要從 drupal 的網頁介面以 admin 帳號 (也就是 drupal 的管理員大大) 登入管理 drupal 時, 經常需要用到。
  4. 後面的 --db-url 參數, 則要根據你當初設定 mysql 資料庫所給的值來填寫。 它的格式是: mysql://資料庫管理員帳戶名稱:資料庫管理員的密碼@資料庫伺服器主機名稱/資料庫名稱 其中 「資料庫名稱」 當初在安裝 debian 版 drupal 的時候, 系統應該已經自動幫你命名為 drupal7。 注意: 即使你有固定 IP, 也還是要用 localhost 而不是固定 IP。 (除非你想要搞成 3-tier system 那麼複雜...)

至於後面的 chown ... 指令, 是要將 drupal 的所有檔案歸屬權派給 apache2 用戶, 也就是 www-data 這個虛擬的使用者。

這一步做完之後, 從瀏覽器裡打開 http://localhost/d7/ 應該就可以看見 drupal 架站 (幾乎) 成功了! 請以 admin 的身份登入, 在最上面黑色管理選單找到 「reports」 進入之後再點選 「status reports」。 所有的訊息都是綠色或藍色嗎? 恭喜! 如果看到紅色的訊息, 請用錯誤訊息上網搜尋解決方式。

重要! 成功之後, 請關閉 shell 分頁, 然後另開一個新的 shell 分頁, 編輯 .bash_history 把裡面的最後一句記錄刪掉。 (因為把密碼放在命令列上還蠻不安全)

重要! 以後如果忘記 drupal 管理員的密碼, 可以這樣改: drush upwd admin --password='新密碼' 詳見 這一頁

初體驗 & 簡潔網址

請在瀏覽器裡用 admin 帳號登入, 按下左側的 「add content」, 再選 「article」 隨便打一點內容, 比方說標題叫做 「安裝成功第一帖文章!」 好了。 存檔之後, 注意網址長得像這樣: http://localhost/drupal7/?q=node/1。 這看來有點醜。 這節的目標是要讓上面的網址變成: http://localhost/drupal7/node/1

請到最上方黑色管理選單點選 Configuration, 再點進 Clean URLs。 如果你從未設定過簡潔網址, 應該會看到 「Run the clean URL test」。 可以試著點下去看看, 但其實沒什麼作用, 因為必須從命令列底下設定。 請回到命令列, 用編輯器在 /etc/apache2/conf.d 目錄底下建立一個文字檔 drupal7 (其實隨便叫什麼名字都無所謂) 並且在裡面敲入:

    <Directory "/var/www/d7"> # 記得要改成你的 [drupal根目錄]
        AllowOverride All
    </Directory>

這個設定叫 apache2 去讀取 /var/www/d7 底下的 .htaccess 這個設定檔。

再來 (有時, 省略此步驟也沒關係) 請編輯 [drupal根目錄]/.htaccess 找到 RewriteBase / 那一句, 把前面的 "#" 拿掉、 把這句改成 RewriteBase /d7 之類的。 (當初你下 mv 指令把 drupal-7.xx 改成什麼名字? 也就是你的 [drupal根目錄] 扣除網頁根目錄的部分。 請據此適當修改。)

最後下這兩個指令:

a2enmod rewrite # 啟用 apache2 的網址重寫模組
service apache2 restart # 重新啟動 apache2

再重新整理 「Clean URLs」 的網頁 (不是重按 「Run the clean URL test」), 應該就會看到不一樣的內容。 勾選 「Enable clean URLs」 並且點下 「Save configuration」。 回到首頁, 再把滑鼠移到剛剛貼的第一帖文章的標題, 請注意它的連結已經沒有 「?q=」 這三個字元了!

如果不幸失敗的話, 請見 這篇更詳細的除錯文

中文

  1. 安裝多國語言套件: drush dl l10n_update 這會將 l10n_update 模組下載回來並放到 sites/all/modules/l10n_update 或 sites/default/modules/l10n_update 子目錄裡面。 再次提醒: 所有 drush 指令必須在 [drupal根目錄] 底下執行。
  2. 這時如果下 find . -user root 會看到有不少 「root 所擁有的檔案」。 因為用 drush 下載, 檔案擁有人會變成是 root。 所以需要更正一下: chown -R www-data:www-data sites/ 。 對大部分的模組來說可能無差; 但多國語言模組會把語言資料下載回來, 需要能夠用 apache2 的身份 (www-data) 寫入上述子目錄。
  3. 啟用中文: 回到瀏覽器 drupal 的網頁管理介面:
    Modules => 內建的 Locale 模組跟剛剛裝的 Localization update 模組, 兩者都打勾 => Save configuration => Continue
    (主選單) Configuration => Languages => Add language => 繁體中文 => Add language
    經過很久很久 (請給自己至少十分鐘的耐性) 畫面跳回 Configuration => Languages; 把繁體中文勾選為 Default => Save configuration ]
    如果大部分的介面還是英文, 請登出再登入, 應該就會 (幾乎) 全部變成中文了。 當然, 以後如果安裝一些比較小眾的模組, 它的介面還是有可能尚未有人幫忙翻成中文。
  4. 更改時區: 設定(就是先前的 Configuration) => 預設時區 Asia/Taipei

註冊一位普通用戶

以後新增套件或改變設定, 有時候或許需要用一個普通 (非 admin) 用戶的帳號登入測試一下。 所以現在就來註冊一位普通用戶。

  1. 登出管理員帳號。
  2. 「註冊新帳號」 => 自選 「使用者名稱」、 填寫 「電子郵件地址」、 送出。 此時自己的信箱會收到一封 mail 要你等候通知。
  3. 再以管理員身份登入。
  4. 「使用者」 => 下方的使用者清單當中會出現剛剛新註冊的使用者名稱。
  5. 「編輯」 => 幫新使用者設定密碼 (建議用亂數產生器; 不用太認真挑), 勾選 「啟用」, 記得按 「儲存」。
  6. 在 「使用者」 的 「權限」 分頁, 打開一些權限, 例如 「node」 底下新增/編輯 article 或 basic page 的權限。
  7. 自己的信箱會收到另一封 mail 要你重設密碼。

當你用普通用戶登入時, 有可能就會找不到登出的連結。 請直接打網址: http://localhost/d7/user/logout 。 詳見 這裡