前言:
本篇是紀錄如何在CentOS 6.10 底下搭建LEMP +WordPress
目前我的伺服器系統環境是 CentOS 6.10 + PHP7.3 +MariaDB 10 +Apache
我想把Apache 換成 Nginx 其餘不變,為了安全起見先裝在測試的機器上面
在寫操作流程之前...先說結論
CentOS 6.10 的維護週期 在2020/11/30 到期...
我是填完這個坑後才看到這個訊息...早知道就直接升級到CentOS 7以上
現在用的伺服器的PHP 版本是從預設的5.x 升級到 7.0 最後升級到 7.3
資料庫也從MYSQL換成MariaDB
原本在測試機上面裝CentOS 6.10 直接升 PHP7.3 + MariaDB + Nginx
應該不會有什麼問題才是...套件都裝好了,要安裝WordPress之後才發現碰到坑了...
PHP installation appears to be missing the MySQL extension which is required by WordPress
PHP少了跟MySQL相關的套件...明明我伺服器上可以跑,測試機卻不能跑...
開始填坑之旅...
Step1
下載 CentOS 6.10 並安裝到測試機上
為了方便我是下載桌面版本,因為網路設定比較方便 (下載連結)
裝好後,接上網路,下載openssh-sever之後就可以把測試機丟在旁邊不管了,接下來的都是用PieTTY 連線到測試機內操作
Step2
接下移除內建的MySQL安裝MariaDB
這部分之前就寫過一篇[心得] MySQL資料庫更換為MariaDB
先說結論...這次的坑主要就是在這裡
當初主機上的環境是PHP7.0 那篇更換DB的內文裡就有寫到
處理的方法,之後我的PHP又升級到 7.3 是沒有出什麼問題的
但是如果是新安裝的測試機想要直接安裝 PHP7.3 +MariaDB 就會碰到坑
原本安裝的 php-mysql 在 PHP7.3 被捨棄,改為php-mysqlnd
在 [心得] PHP7.1升級PHP7.3 這篇
我沒有再去安裝 php-mysql 或 php-mysqlnd
升級完之後...WordPress也正常顯示...用到現在也沒發生問題 XD
這個坑就在安裝全新的CentOS 6.10 +PHP 7.3 就會出現
以上就是遇坑的總結,下面就是安裝的實作流程,不廢話了
#關閉資料庫
service mysqld stop
#移除資料庫與相關元件
yum remove mysql* mysql-server mysql-devel mysql-libs
#建立 MariaDB 的 YUM Repository
nano /etc/yum.repos.d/mariadb.repo
#以nano編輯開啟 mariadb.repo 後,填入下面的內容並存檔
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
#更新系統
yum update
#下載Maria資料庫
yum install MariaDB-devel MariaDB-client MariaDB-server
#啟動Maria資料庫
service mysql start
#設定開機就執行Maria資料庫
chkconfig mysql on
#初始化Maria資料庫 (設定MySQL的root密碼)
/usr/bin/mysql_secure_installation
#資料庫重啟
service mysql restart
Step3
安裝PHP7.3 與Nginx
yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum --enablerepo=remi-php73 install php
上面是加了第三方的repo : REMI (有CentOS官方認可的第三方repo)
安裝PHP相關套件
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt php-fpm php-mysql
最後面多了php-fpm php-mysql
php-fpm是要給Nginx用
php-msql 在安裝時會自動轉成 php-mysqlnd
(yum安裝時直接用php-mysqlnd 也ok)
接下來安裝Nginx
#停用 apache 取消開機載入
service httpd stop
chkconfig httpd off
#安裝Nginx
#因為有加了remi 所以可以直接yum 安裝nginx
yum install nginx
#啟動 nginx php-fpm
serivce nginx start
service php-fpm start
#設定開機載入
chkconfig nginx on
chkconfig php-fpm on
取消iptabels
(因為是測試用,不會上線,才做的步驟)
(因為是測試用,不會上線,才做的步驟)
(因為是測試用,不會上線,才做的步驟)
service iptabels stop
chkconfig iptabels off
做到這邊,基本上可用瀏覽器連到測試機上面看到Nginx的預設畫面了
Step4
最後是安裝WordPress 跟Nginx的設定
先說結論:
安裝流程都是看How To Install WordPress with nginx on CentOS 6
文章內容是正確的...唯一的小缺失... 沒有把 service php-fpm start 加進去
也許這是常識,所以才沒加...我是從Apache跳槽來Nginx的...
當php-fpm 沒有啟動的狀態下,是看不到WordPress的...
Nginx 跟php-fpm裝好之後就是連動的關係? 至少在我安裝的心得是這樣
以下就是安裝的流程...直接把人家的內容搬過來...
下載wordpress與相關設定
#在家目錄下
wget http://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php
nano ~/wordpress/wp-config.php
wp-config.php的內容
填上資料庫所需要的資料跟密碼
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', '資料庫名稱自己設定');
/** MySQL database username */
define('DB_USER', '資料庫使用者自己設定');
/** MySQL database password */
define('DB_PASSWORD', '密碼自己設定');
wordpress 搬到 /var/www 底下
mkdir -p /var/www/wordpress
cp -r ~/wordpress/* /var/www/wordpress
cd /var/www/
chown nginx:nginx * -R
usermod -a -G nginx root
nano /etc/nginx/conf.d/default.conf
Nginx設定檔
#
# The default server
#
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/wordpress;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /var/www/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
存檔完 service nginx restart
打開瀏覽器
http://測試機的IP/wp-admin/
就可以看到WordPress的安裝畫面了,打完收工