CentOS 8 架設 LAMP

僅作為個人紀錄使用

1. 安裝 Apache

1
sudo yum -y install httpd

2. 加入  EPEL 套件庫

1
2
sudo yum -y install epel-release
sudo rpm -Uvhhttp://rpms.famillecollet.com/enterprise/remi-release-8.rpm

3. 更新套件

1
sudo yum -y update

4. 安裝 PHP

1
2
dnf module install php:remi-7.3
sudo yum install php php-common  php-pdo php-gd php-xml -y

5. 依需求,編輯 /etc/php.ini 設定檔

1
sudo vi /etc/php.ini
1
2
3
4
5
6
7
8
9
date.timezone = "Asia/Taipei" #修改台灣時區
max_execution_time = 300
short_open_tag = On
max_input_time = 180
memory_limit = 512M
post_max_size = 512M
upload_max_filesize = 100M
max_file_uploads = 50
max_input_vars = 1500

6. 視情況可修改設定檔 (ex: 修改目錄, 修改權限… 等)

1
sudo vi /etc/httpd/conf/httpd.conf

ex: 開啟 .htaccess 作用

找到 DocumentRoot /var/www/html下的Directory,並將AllowOverride改為 All

1
2
3
4
<Directory /var/www/html/>
AllowOverride All
</Directory>

7. 重啟apache 並設定開機自動啟動

1
2
sudo systemctl restart httpd
sudo systemctl enable httpd

8. 允許Http和MySQL通過防火牆 (需已裝過 firewall)

ps. 若為AWS, GCP等雲端主機則使用控制台的 Security Group 設定即可

1
2
3
4
5
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-service=mysql
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all

此時可建立一個 PHP 測試檔至 網站目錄 (/var/www/html) 查看是否正常運行

1
sudo vi /var/www/html/test.php

9. 加入 MariaDB 套件庫 :

1
sudo vi /etc/yum.repos.d/MariaDB.repo
1
2
3
4
5
6
7
# 貼上以下內容並儲存

[mariadb]
name = MariaDB
baseurl =http://yum.mariadb.org/10.4/centos8-amd64
Gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Gpgcheck = 1
1
2
3
4
sudo yum -y install mariadb-server
sudo systemctl start mariadb    # 啟動 mariadb
sudo systemctl enable mariadb # 開機自動啟動
sudo mysql_secure_installation  # 初始化設定
1
2
3
4
5
6
7
該設定時會詢問幾個問題,簡述如下:
* Enter current password for root (enter for none):輸入root密碼,第一次設定時預設值是空的,所以直接按Enter即可,接著會詢問是否要設定root密碼,請輸入「Y」進行設定
* Remove anonymous users? [Y/n]:是否要移除匿名使用者?「Y」
* Disallow root login remotely? [Y/n]:是否關閉 root 遠端登功能?依需求決定
* Remove test database and access to it? [Y/n]:是否要移除測試的資料庫?建議選擇「Y」來移除
* Reload privilege tables now? [Y/n]:是否要重新載入表格權限?建議選擇「Y」

10. 安裝phpMyAdmin (在/var/www/html下)

1
2
3
4
sudo yum install -y php-mysqlnd
sudo yum -y install wget
sudo wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
sudo mkdir phpMyAdmin && sudo tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1

11. 重新啟動 Apache

1
sudo systemctl restart httpd

12. 關閉SELINUX,避免產生權限問題

1
2
sudo setenforce 0  # 暫時性設定
sudo vi /etc/selinux/config # 永久性設定 => 修改 SELINUX = disabled

13. 設定檔案權限

1
2
3
4
5
sudo usermod -a -G apache root # 加入root帳號到apache群組
sudo chown -R root:apache /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
find /var/www -type f -exec sudo chmod 0664 {} \;