[心得] CentOS 6.10 安裝 PHP7.3 MariaDB Nginx WordPress (LEMP環境)

前言:

本篇是紀錄如何在CentOS 6.10 底下搭建LEMP +WordPress
目前我的伺服器系統環境是 CentOS 6.10 + PHP7.3 +MariaDB 10 +Apache
我想把Apache 換成 Nginx 其餘不變,為了安全起見先裝在測試的機器上面

在寫操作流程之前...先說結論
CentOS 6.10 的維護週期 在2020/11/30 到期...
我是填完這個坑後才看到這個訊息...早知道就直接升級到CentOS 7以上

圖1

現在用的伺服器的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的預設畫面了

圖2

Step4

最後是安裝WordPress 跟Nginx的設定

先說結論:
安裝流程都是看How To Install WordPress with nginx on CentOS 6
文章內容是正確的...唯一的小缺失... 沒有把 service php-fpm start 加進去
也許這是常識,所以才沒加...我是從Apache跳槽來Nginx的...
當php-fpm 沒有啟動的狀態下,是看不到WordPress的...
Nginx 跟php-fpm裝好之後就是連動的關係? 至少在我安裝的心得是這樣

圖3

以下就是安裝的流程...直接把人家的內容搬過來...

下載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的安裝畫面了,打完收工

圖4


Reference: