發佈日期:

[CentOS 7] 整合 Apache、MySQL、PHP 7 組成 LAMP Server


加入 MySQL 套件庫
sudo rpm -Uvh https://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

EPEL 套件庫。
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

還有 Webtatic 套件庫
(謎之音:攻城獅的爛個性又發作了,在 LEMP 沒搞定,到了實作 LAMP 還是硬要試試看。)
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

更新套件庫的快取資料,這邊同時會把預設的 MariaDB 換下來。
yum -y update

 

安裝主要套件

老規矩,用 yum 指令安裝。
sudo yum -y install httpd mysql-server php70w php70w-mysql

安裝過程要花一些時間。

同樣為了偉大的真勇者們留下 Source Code 傳送門。

 

開始設定

 

Apache

允許防火牆讓 HTTP、HTTPS 封包通過。
sudo firewall-cmd –permanent –zone=public –add-service=http
sudo firewall-cmd –permanent –zone=public –add-service=https
sudo firewall-cmd –reload

啟動 httpd,並讓它在開機後自動啟動。
sudo systemctl start httpd
sudo systemctl enable httpd

MySQL

啟動 MySQL Server,並讓它在開機後自動啟動。
sudo systemctl start mysqld
sudo systemctl enable mysqld

如果在登入 MySQL 的時候,出現下列的錯誤訊息。

  • ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
  • Error: Access denied for user ‘root’@’localhost’ (using password: NO)

請依照下列的步驟處理。

停止 MySQL 服務。
sudo systemctl stop mysqld

加入自訂環境變數,暫時不檢查權限。
sudo systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”

啟動 MySQL 服務。
sudo systemctl start mysqld

免密碼直接登入 MySQL。
mysql -u root

更新 root 的新密碼,這邊是用 P@ssw0rd,別忘了修改成自訂密碼。
UPDATE mysql.user SET authentication_string = PASSWORD(‘P@ssw0rd‘) WHERE User = ‘root’ AND Host = ‘localhost’;

重新載入權限。
flush privileges;

退出 MySQL。
quit

停止 MySQL 服務。
sudo systemctl stop mysqld

取消自訂環境變數。
sudo systemctl unset-environment MYSQLD_OPTS

啟動 MySQL 服務。
sudo systemctl start mysqld

這樣子就可以正常登入了。
mysql -u root -p

這邊請直接依照 建置 Nginx、MariaDB、PHP 7 的 LEMP Server 的 MariaDB 設定說明,將這些安全性設定值依需求做調整。
mysql_secure_installation

 

PHP

為 Apache 加入 PHP 的支援,步驟實在超簡單,就是「什麼都不用做」,只要在裝好 PHP 之後,重新啟動 Apache 就可以了。
sudo systemctl restart httpd

實際測試

我們直接連上 Apache 來看一下,看到這個畫面就代表 OK 了。

接著,建立一個 PHP 測試檔。
sudo vi /var/www/html/info.php

呼叫內建函數。
<?php phpinfo(); ?>

就可以看到 PHP 模組啟動成功。

MySQL 的支援模組也啟動成功了。