2018-04-19

Ubuntu Server: LAMP Stack 安裝LAMP伺服器

Ubuntu 除了當作一般桌面作業系統來使用,它最強大的功能就是伺服器了。LAMP Stack 是在 Linux 作業系統上很受歡迎的網站伺服器組合。只要安裝好 LAMP Stack,就可以進行 PHP 動態網頁的開發設計,也可以安裝網站系統,如 WordPress, Drupal, ecshop 等…


網站伺服器 (LAMP)
接下來介紹如何安裝網站伺服器 (LAMP Stack),LAMP 是指一組通常一起用來作為動態網站伺服器的自由軟體名稱首字母縮寫:
  • Linux,作業系統
  • Apache,網頁伺服器
  • MariaDB 或 MySQL,資料庫管理系統
  • PHP、Perl 或 Python,伺服器端語言
這些軟體原本並不是特地設計成組合在一起工作,但由於自由軟體取得成本很低,效能和支援性又相當好,因此這個組合被業界普遍接受和使用,又被稱為 LAMP 網站伺服器堆疊 (LAMP Stack) (註)。LAMP Stack 可以有不同的組合方式,像資料庫用 MariaDB 或 MySQL 都可以。本篇介紹的組合是 Linux, Apache, MySQL 和 PHP,安裝步驟如下:
註:近年開始流行以 Nginx 取代 Apache 的 Nginx、MariaDB / MySQL、PHP 伺服器堆疊,稱為 LEMP 或 LNMP Stack。安裝的步驟差異不大。
  • 安裝 apache2 網站伺服器
  • 安裝 mysql-server 資料庫伺服器
  • 安裝 mysql-client 客戶端
  • 安裝 mysql_secure_installation MySQL安全管理
  • 安裝 php 伺服器端語言
  • 安裝 libapache2-mod-php php-mysql 連接模組
以上安裝可以一步一步執行,當然也可以全部放在一句 sudo apt install 指令裡,套件名以空格隔開。但這樣還是有點麻煩,尤其是各模組間的連接,不是單純安裝好就可以了。因此,在 Ubuntu 上有 Tasksel 工具將許多常用的伺服器整理好,只要先安裝 Tasksel 就可以用一個指令很快速的將 LAMP 安裝完成。

安裝 Tasksel 與 lamp-server
開啟終端機,一行一行執行下列指令:
sudo apt update && sudo apt upgrade   # 先更新套件庫
sudo apt install tasksel              # 安裝 tasksel
sudo tasksel install lamp-server      # 安裝 lamp-server
sudo tasksel install lamp-server 輸入後會看到這個畫面,就開始安裝 lamp-server 了,等它安裝完畢,畫面消失即可。

安裝完成後,進行以下檢查與設定,確認各項伺服器都安裝成功。
● 檢查 apache2 服務是否啟動?
sudo service apache2 status
● 開啟瀏覽器以 http://GCP 配置外部 IP 確認 apache2 已可連線(若是在桌面版的 Ubuntu,則可用 http://localhost/ 或 http://127.0.0.1/),看到如下畫面就表示 Apache2 網頁伺服器外部建線沒問題。

● 在 /var/www/html 目錄(Apache 根目錄)下建立 info.php 檔,以 phpinfo() 檢視 php 系統狀況。
cd /var/www/html   # 移至 Apache 根目錄 
sudo vi info.php   # 建立 info.php 檔
在 info.php 中輸入下列程式碼(按 a 進入 vi 編輯模式,按 Ctrl-p 貼上,按 ESC 退出編輯模式,輸入 :wq 按下 Enter 存檔離開):
<?php
    phpinfo();
?>
建立好 info.php 檔後,同樣用瀏覽器以 http://GCP 配置外部 IP/info.php 連線檢視。出現如下畫面就表示 php 與 Apache2 伺服器間連接均正常。

● 設定 MySQL root 密碼。
Tasksel 安裝 MySQL 資料庫時,並未設定 root 密碼,必須設定 root 密碼以使用 MySQL 資料庫。輸入下列指令:
sudo mysql -u root mysql   # 登入 MySQL 資料庫系統
執行後,會進入 MySQL shell,終端機游標提示字元會變成 mysql>。
在 MySQL shell 下,一行一行輸入下列指令,讓 root 帳號啟用「mysql_native_password」插件。
UPDATE user SET plugin='mysql_native_password' WHERE User='root';   # 注意在 MySQL shell 下執行
FLUSH PRIVILEGES;   # 重新載入特權表 PRIVILEGES
\q                  # 離開 MySQL shell
只要執行後看到顯示 Query OK,就表示執行成功。最後輸入 \q 或 exit + Enter 離開 MySQL shell。
輸入以下指令設定 MySQL root 帳號的密碼。
sudo mysql_secure_installation
接著會問我們是否要設定 VALIDATE PASSWORD plugin,這個 plugin 會檢查密碼的安全強度。不設定的話,密碼可以設定得比較簡單,當然就比較不安全。若要設定按「y」。
接著選擇「密碼複雜度 password validation policy」 (0:最低 ~ 2:最強)。
再來會輸入兩次要設定的密碼,密碼必須符合前項選定的密碼複雜度。
接下來的問題全部按「y」+ Enter 即可。最後如果看到 Success. All done! 就是 root 密碼設定成功了。
● 登入 MySQL 確認 root 密碼
mysql -u root -p   # 以 root 帳號登入 mysql
接著輸入剛剛設定好的 root 密碼,沒問題就會進入 MySQL shell,看到如下畫面。

root 密碼非常重要,千萬別忘了。若想多了解 MySQL 基本操作可參考這篇《Ubuntu 使用 MySQL》。
這樣,基本的 LAMP Stack 網站伺服器安裝和設定就完成了。如要設計網站或 PHP 動態網頁程式,記得要放在 /var/www/html (apache2 網站伺服器根目錄) 下。若要架設動態網站,如 WordPress,可參考《Ubuntu Install WordPress 內容管理系統》來進行安裝。
(非必要) 安裝 phpMyAdmin MySQL資料庫管理工具,控制與檢視 MySQL 資料庫。
phpmyadmin 資料庫工具並非必要,但若安裝後發現無法啟動,可能是因為 phpmyadmin 不是安裝在 /var/www/html/ (apache2 網站伺服器的網站檔案根目錄)下,而是在 /usr/share/phpmyadmin/。那就需要建立一個 symbolic link 到 /var/www/html/phpmyadmin/,指令如下:
sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin   # 建立 symbolic link


參考資料 (References):
😺 安裝 LAMP Server + phpMyAdmin 在 Linux 系統上輕鬆架設網站
😺 Ubuntu 使用 MySQL
😺 Installing LAMP on Ubuntu 17.04 / 17.10
😺 Ubuntu官方說明文件 - Tasksel