SEO專家 Vince Wu
2024-04-11內容大綱
# 開啟網路 (若原有網路則無需設定 ex: AWS, GCP 等雲端主機)
$ sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
$ sudo systemctl restart network
找到設定值ONBOOT=no,把設定值改成yes,並重啟網路
# 安裝 Apache
$ sudo yum -y install httpd
# 加入 EPEL 套件庫
$ sudo yum -y install epel-release
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# 更新套件
$ sudo yum -y update
# 安裝 PHP
#依照要安裝的PHP版本號做修改
$ sudo vi /etc/yum.repos.d/remi-php73.repo
#將檔案內的enabled = 0 修改成 enabled = 1
$ sudo yum install php php-common php-pdo php-gd php-xml -y
# 依需求,編輯 /etc/php.ini 設定檔
$ sudo vi /etc/php.ini
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
# 視情況可修改設定檔 (ex: 修改目錄, 修改權限... 等)
$ sudo vi /etc/httpd/conf/httpd.conf
ex: 開啟 .htaccess 作用
找到 DocumentRoot /var/www/html下的Directory,並將AllowOverride改為 All
<Directory /var/www/html/>
AllowOverride All
</Directory>
# 重啟apache 並設定開機自動啟動
$ sudo systemctl restart httpd
$ sudo systemctl enable httpd
#允許Http和MySQL通過防火牆 (需已裝過 firewall)
ps. 若為AWS, GCP等雲端主機則使用控制台的 Security Group 設定即可
$ 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) 查看是否正常運行
$ sudo vi /var/www/html/test.php
加入 MariaDB 套件庫 :
$ sudo vi /etc/yum.repos.d/MariaDB.repo
# 貼上以下內容並儲存
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
Gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Gpgcheck = 1
$ sudo yum -y install mariadb-server
$ sudo systemctl start mariadb # 啟動 mariadb
$ sudo systemctl enable mariadb # 開機自動啟動
$ sudo mysql_secure_installation # 初始化設定
該設定時會詢問幾個問題,簡述如下:
* 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」
# 安裝phpMyAdmin
$ sudo yum install epel-release
$ sudo yum -y install phpmyadmin
# 編輯 phpMyAdmin 設定檔
$ sudo vi /etc/httpd/conf.d/phpMyAdmin.conf
# 限定特定ip連線:找到 "Require ip" 及 "Allow from",將 127.0.0.1 改成指定 ip
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 220.135.36.15
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 220.135.36.15
Allow from ::1
</IfModule>
# 不限定 ip 連線:註解掉"Require ip" 新增一行 Require all granted
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Allow from all
Require all granted
</IfModule>
# 重新啟動 Apache
$ sudo systemctl restart httpd
# 關閉SELINUX,避免產生權限問題
$ sudo setenforce 0 # 暫時性設定
$ sudo vi /etc/selinux/config # 永久性設定
=> 修改 SELINUX = disabled
#設定檔案權限
$ 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 {} \;