2021年7月3日 星期六

樹莓派架站 (十) : 移植 WordPress 資料庫

上周露天買的 Pi 4 裝機完畢後, 原本想將上次在 Pi 3 上安裝好的整片 Micro SD 卡拿下來製作映像檔, 然後燒錄到 Pi 要用的新卡上面, 這種作法雖然方便, 但由於無法保證燒錄成功 (雖然都是 32 GB 的卡, 實際上可能會差幾十個 Byte, 只要目的卡片較小就會燒錄失敗), 所以決定照之前在 Pi 3 做的過程重新來一遍, 但不是全部, 主要是下面三篇 : 



1. 安裝 LAMP :

重新安裝作業系統與 LAMP 堆疊還有個重要目的 : 測試上回在 Pi 3 備份的資料庫是否能完美地在 Pi 4 上回復. 

首先是根據第一篇筆記下載最新的 Raspbian 映像檔後將其燒入到空白的 Micro SD 卡內, 然後將純文字空白檔案 ssh 與含有開機連線無線基地台的設定檔 wpa_supplicant.conf 複製到 boot 碟根目錄下, 就可以將 Micro SD 卡取出裝進 Pi 4 內 (圖案朝下), 連接鍵鼠組與 HDMI 螢幕, 開機後就能自動連線到指定的 WiFi 基地台了. 上回沒有成功是因為我把 wpa_supplicant.conf 檔名誤打成 wpa_applicant.conf, 真是烏龍. 

做完開機設定後就按照第二篇程序安裝 Apache + PHP + Apache, 只要依序輸入下面八個 sudo 指令以及 MariaDB 的 SQL 指令即可 :

pi@raspberrypi:~ $ sudo apt-get install apache2
pi@raspberrypi:~ $ sudo chown -R pi:www-data /var/www/html/   
pi@raspberrypi:~ $ sudo chmod -R 770 /var/www/html/
pi@raspberrypi:~ $ sudo apt install php php-mbstring
pi@raspberrypi:~ $ sudo apt -y install mariadb-server mariadb-client
pi@raspberrypi:~ $ sudo mysql_secure_installation (設定資料庫密碼, 輸入 5 個 y)
pi@raspberrypi:~ $ sudo mysql -u root
MariaDB [(none)]> UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mydb.* TO 'pi'@'localhost' IDENTIFIED BY 'mysql'; 
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
pi@raspberrypi:~ $ sudo apt-get install phpmyadmin

最後編輯 Apache 2 設定檔, 在最底下加入 phpMyAdmin 的 Apache 設定檔即可 : 

pi@raspberrypi:~ $ sudo nano /etc/apache2/apache2.conf

在最底下加入後存檔 : 

Include /etc/phpmyadmin/apache.conf 

最後重啟 Apache2 伺服器即完成了 :

pi@raspberrypi:~ $ sudo /etc/init.d/apache2 restart 

為了接下來匯入要回復的資料庫檔 wordpress.sql 以及後續 WordPress 上傳方便, 需更改 PHP 的設定檔 php.ini, 將預設的上傳限制 2 MB 放寬為 20 MB : 

pi@raspberrypi:~ $ cd /etc/php/7.3/apache2    
pi@raspberrypi:~ $ sudo nano php.ini    

按 Ctrl+W 搜尋 upload_max_filesize 與 post_max_size, 將這兩個參數都改為 20MB 後存檔. 


2. 安裝 WordPress :

接下來就可以進行 WordPress 安裝了, 雖然可以將原先 Pi 3 上的網站根目錄 (/var/www/html) 整個壓縮後複製到 Pi 4 上, 但因為已過了一個月, WordPress 已有新版釋出, 而且我想要測試看看是否只要移動上傳目錄 /var/www/html/wp-content/uploads 就可以移植完成, 所以還是照第三篇的程序下載 wordpress 解壓縮後放到 Aapche2 的網站根目錄下, 指令集如下 :

pi@raspberrypi:~ $ cd /var/www/html
pi@raspberrypi:/var/www/html $ sudo wget http://wordpress.org/latest.tar.gz
pi@raspberrypi:/var/www/html $ sudo tar xzf latest.tar.gz
pi@raspberrypi:/var/www/html $ sudo mv wordpress/* . 
pi@raspberrypi:/var/www/html $ sudo rm -rf wordpress latest.tar.gz
pi@raspberrypi:/var/www/html $ sudo usermod -a -G www-data pi
pi@raspberrypi:/var/www/html $ sudo chown -R -f www-data:www-data /var/www/html 


3. 匯入 WordPress 備份資料庫 :

接著要在 MariaDB 中建立一個名為 wordpress 資料庫, 才能匯入所備份的資料庫, 同時新建一個資料庫管理帳號 : 

pi@raspberrypi:/var/www/html $ sudo mysql -u root -p
MariaDB [(none)]> create database wordpress;        (建立 wordpress 資料庫)
MariaDB [(none)]> CREATE USER '新帳號'@'localhost' IDENTIFIED BY '新密碼'; 
MariaDB [(none)]> GRANT ALL ON wordpress.* TO '新帳號'@'localhost';   
MariaDB [(none)]> FLUSH PRIVILEGES;     (更新權限表)  
MariaDB [(none)]> quit 

這樣便建好一個空白資料庫 wordpress, 接下來要用 phpMyAdmin 來將 WordPress 的資料庫備份檔匯入這個空白資料庫中, 連線下列網址進入 phpMyAdmin : 

http://127.0.0.1/phpmyadmin 

輸入 MariaDB 帳密登入後選取 wordpress 資料庫, 切換到 Import 頁籤, 選取資料庫檔案 wordpress.sql (我使用 Dropbox 傳檔, 但也可以用 WinSCP ) 後按底下的 Go 鈕即可 :




資料庫匯入完成後就可進行 WordPress 安裝了, 開啟瀏覽器連線 127.0.0.1  :




設定 WordPress 後台管理密碼按 Install 鈕即可 :





4. 設定 WordPress :

接下來是進入 WordPress 後台進行基本設定, 參考第四篇 :  


主要有三 : 
  • 安裝 Gillian 布景主題
  • 安裝 WP-statistics 外掛
  • 安裝 WP-ngrok 外掛
第四篇中其他設定都不用做, 因為那都已在匯入的資料庫中了. 

Gillian 布景也可以下載後再上傳安裝, 參考 : 



5. 複製上傳資料 :

雖然資料庫已匯入成功, 瀏覽 127.0.0.1 也可以順利看到網站中的文章與頁面內容, 但網頁標題圖檔卻未顯示, 且 pdf 檔案超連結也顯示檔案不存在, 原因是這些上傳到媒體庫的檔案都放在網站根目錄下的 wp-content/uploads 子目錄, 必須連同這些都移植到新系統才行. 

首先到 Pi 3 的 Apache2 網站下壓縮 uploads 子目錄下的全部檔案 :

pi@raspberrypi:/var/www/html/wp-content $ cd uploads   
pi@raspberrypi:/var/www/html/wp-content/uploads $ du -sh    (檢視全部資料大小)
38M  .
pi@raspberrypi:/var/www/html/wp-content/uploads $ cd ..   
pi@raspberrypi:/var/www/html/wp-content $ zip -r uploads.zip uploads   

可見上傳到媒體庫的全部檔案總共是 32MB, 將其壓縮為 uploads.zip 檔後用 WinSCP 或 DropBox 傳到 Pi 4 主機下, 解壓縮後移動目錄覆蓋掉目前還是空的 uploads 子目錄 : 

pi@raspberrypi:~/Downloads $ unzip uploads.zip    
pi@raspberrypi:~/Downloads $ ls -ls   
總計 38808
    4 drwxrwxrwx 3 pi pi     4096  5月 30 19:38 uploads      (解壓後的子目錄)
34976 -rw-r--r-- 1 pi pi 35813747  7月  2 21:45 uploads.zip
 3828 -rw-r--r-- 1 pi pi  3919791  6月 29 11:51 wordpress.sql
pi@raspberrypi:~/Downloads $ sudo mv uploads /var/www/html/wp-content/uploads   

此指令是將解壓縮後的 uploads 目錄移動到網頁根目錄的 wp-content 子目錄下覆蓋掉空白的 uploads, 這樣網站標題圖檔以及 pdf 超連結等資源都會顯示了. 


6. 安裝酷音輸入法 :

此外還要安裝酷音輸入法, 因為有時還是需要直接在 Pi 4 的瀏覽器中輸入中文,參考第三篇的 4 這部分 : 


安裝完後要重啟系統才會生效 : 

pi@raspberrypi: $ sudo apt-get install scim-chewing
pi@raspberrypi:~ $sudo reboot

重啟後還要進入 "偏好設定/SCIM 輸入法框架" 進行中英文切換鍵設定, 完畢也是要重啟才有效. 

做完上面這些就完成整個系統移植作業了, 最後是下載執行 ngrok 以取得一個外部網址來讓湘雲老師連線網站檢視看看 (我自己檢查是完全一樣的內容, 超連結都正常), 參考下面這篇 :


注意, 執行 ngrok 轉址之前必須執行自己的授權碼 (token) 獲得 Free 使用身分, 這台 Pi 4 我使用 Gmail 帳號註冊取得授權碼 (註冊完就會顯示) : 




注意, 未執行授權碼將有使用時限, 大約兩小時就會 timeout, 故若要長期使用務必做這動作 (這授權碼要記下來, 以後在新的機器上要做測試時可重用, 忘記的話也可登入 ngrok 查詢) : 

pi@raspberrypi:~/Downloads $ ./ngrok authtoken 1uo824epcGaOLmjKX5Z0YRWtrgy_1BtHiHGavYbTBrLMcA4Ts   
uthtoken saved to configuration file: /home/pi/.ngrok2/ngrok.yml   
pi@raspberrypi:~/Downloads $ ./ngrok http -host-header=localhost 80   

以 ngrok 產生的網址從外網測試 OK, 拖了一個禮拜終於搞定 WordPress 移植到 Pi 4 的作業, 確認原先的設想是正確的, Bingo! 終於完工啦! 

沒有留言 :