You are currently viewing 在 Windows 10 的 WSL2 Ubuntu 上安裝 WordPress

在 Windows 10 的 WSL2 Ubuntu 上安裝 WordPress

Ubuntu+Wordpress

在 Windows 10 的 WSL2 Ubuntu 上安裝 WordPress

這篇文章會一步步教導如何在 Windows 10 的 WSL2 Ubuntu 上安裝 WordPress,解決一些可能會遇到的問題,且在本機 Windows 10 上使用瀏覽器直接連上 WordPress 操作。

之前的佈落格是放在 Pixnet,但是在受不了它對瀏覽者不友善的彈出廣告及操作介面,決定出走。 先是試了 Medium,它的編輯介面很直覺陽春,瀏覽者觀看起來也很順暢,但是可以客製化的東西太少,而且除非自行發表到社群平台,否則很少會有使用搜尋引擎的讀者搜到。

因此,我決定使用 WordPress 自己架站,在真正開始之前,我想先在我自己的電腦上先架起來試用看看,熟悉介面後,再正式使用公開的 WordPress。

在 Windows 10 上安裝 WSL2 Ubuntu

WSL (Windows Subsystem for Linux),中文為 Windows 子系統 Linux 版,是適用於 Linux 的 Windows 子系統可讓開發人員執行 GNU/Linux 環境 (包括大部分的命令列工具、公用程式和應用程式),直接在 Windows 上執行,不需進行修改,不會造成傳統虛擬機器或 dualboot 設定的額外負荷。

而 WSL 2 是「Windows 子系統 Linux 版」架構的新版本,可讓 Windows 子系統 Linux 版在 Windows 上執行 ELF64 Linux 二進位檔。 其主要目標是增加檔案系統效能,以及新增完整的系統呼叫相容性

本篇安裝 WSL2 的步驟,主要按照 Windows 10 上適用於 Linux 的 Windows 子系統安裝指南 文件來安裝。

安裝 WSL2 需要滿足 Windows 10 已更新為 2004 版,組建 19041 或更高版本。

在命令提示字元裡查看我的 Windows 版本為 10.0.19041.450 。

C:\WINDOWS\system32>ver
Microsoft Windows [版本 10.0.19041.450]

先啟用「Windows 子系統 Linux 版」選用功,才可以在 Windows 上安裝任何 Linux 發行版本。

以系統管理員身分開啟 PowerShell 並執行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

在安裝 WSL2 之前,您必須啟用「虛擬機器平台」選用功能。
以系統管理員身分開啟 PowerShell 並執行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新啟動電腦,以完成 WSL 安裝並更新至 WSL2。

以系統管理員身分開啟 PowerShell,然後執行下列命令,以將 WSL2 設定為預設版本:

wsl --set-default-version 2

執行該命令之後,您可能會看到此訊息:WSL2 requires an update to its kernel component. For information please visit https://aka.ms/wsl2kernel。 請遵循連結 (https://aka.ms/wsl2kernel),以在您的電腦上安裝 Linux 核心供 WSL2 使用。

以上完成後,開敵 Microsoft Store,搜尋 “Ubuntu”,選取 “Ubuntu” 套件,點擊”取得”來安裝 Ubuntu。

Windows 10 install Ubuntu
Windows 10 install Ubuntu

安裝完畢後,啟動 Ubuntu,當您第一次啟動新安裝的 Linux 發行版本時,主控台視窗會隨即開啟,而系統會要求您等候一到兩分鐘,讓檔案解壓縮並儲存在您的電腦上。

筆者在第一次啟動 Ubuntu 時,遇到報錯:

WslRegisterDistribution failed with error: 0xc03a001a

在網路搜尋後,找到可用的解決方法,如果您也遇到上面報錯,可以嘗試在檔案總管進入 “%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited…”
右鍵點擊”LocalState” –> 內容 –> 進階 –> 取消勾選 “壓縮內容,節省磁碟空間(C)”

Wordpress LocalState
WordPress LocalState

之後再次啟動 Ubuntu,應該就可以順利啟動,並為新的 Linux 發行版本設定使用者帳戶和密碼。

若要查看 WSL 版本是否為 WSL2 ,可以在命令提示字元裡輸入:

C:\WINDOWS\system32>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2

到此,您已經順利安裝完成 WSL 2 的 Ubuntu 系統了。

在 WSL2 Ubuntu 上安裝 WordPress

接下來要在 WSL2 Ubuntu 安裝 WordPress,我主要是按照 Ubuntu Tutorial 裡的步驟來安裝。

在 Ubuntu 裡輸入下列指令來安裝相關套件:

sudo apt update
sudo apt install wordpress php libapache2-mod-php mysql-server php-mysql

啟動 apache2 及 mysql:

sudo service apache2 start
sudo service mysql start

在 Apache 建立一個 WordPress 網站。新增檔案 /etc/apache2/sites-available/wordpress.conf 並複製貼上下列內容:

Alias /blog /usr/share/wordpress
<Directory /usr/share/wordpress>
    Options FollowSymLinks
    AllowOverride Limit Options FileInfo
    DirectoryIndex index.php
    Order allow,deny
    Allow from all
</Directory>
<Directory /usr/share/wordpress/wp-content>
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

之後,輸入下列指令來指修改生效並重啟 apache2:

sudo a2ensite wordpress
sudo a2enmod rewrite
sudo service apache2 reload

在開始配置 WordPress 之前必須要先配置 mysql 資料庫,由於新安裝的 mysql 為 mysql-server-8.0,所以 SQL 指令和 Ubuntu 文件裡的 mysql-server-5.7 有些不同,我做了些修改才能運行:

$ sudo mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1082
Server version: 8.0.21-0ubuntu0.20.04.4 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0,00 sec)

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY '<your-password>';
Query OK, 0 rows affected (0.02 sec)

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON wordpress.* TO wordpress@localhost;
Query OK, 0 rows affected (0.01 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 1 row affected (0,00 sec)

mysql> quit
Bye

注意,請把 ‘<your-password>’ 改成你要新建的 mysql wordpress 使用者的密碼。

若按照原 Ubuntu 文件的這個指令:

mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER
    -> ON wordpress.*
    -> TO wordpress@localhost
    -> IDENTIFIED BY '<your-password>';

會出現報錯:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'your-password'' at line 1

稍微研究後,我先新建新一個 mysql wordpress 使用者,再使用 GRANT 指令來給予權限,就可以了。

接下來配置 WordPress 連接 mysql 資料庫的設定檔,建立檔案 /etc/wordpress/config-localhost.php

<?php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', '<your-password>');
define('DB_HOST', 'localhost');
define('DB_COLLATE', 'utf8_general_ci');
define('WP_CONTENT_DIR', '/usr/share/wordpress/wp-content');
?>

注意,請將 ‘<your-password>’ 改為你之前建立的 mysql wordpress 使用者密碼。

重啟 mysql:

sudo service mysql restart

到此,你已經在 WSL2 Ubuntu 上安裝完 WordPress了。

連上建立的 WordPress 網站做第一次配置

在同一台電腦的 Windows 10 打開瀏覽器,連上 “localhost/blog”。要注意,如果你用 Google Chrome 瀏覽器,可能會遇到連不上,而且報錯ERR_CONNECTION_REFUSED

這是因為 Google Chrome 因為安全考慮,會強制使用 HTTPS 連線,而不是 HTTP 連線,就算你直接在網址列打 http://localhost/blog,它還是會轉成 HTTPS 連線。

解決辦法1:使用其他瀏覽器,如 Fireox,Edge…。

解決辦法2:在 Google Chrome 瀏覽器,連上 “chrome://net-internals/#hsts” , 在”Delete domain security policies” 下面的 domain 欄位,填上 “localhost” 再按 “Delete” 鈕。

Google Chrome Delete domain security policies
Google Chrome Delete domain security policies

接著,使用 Google Chrome,連到 “http://localhost/blog”,你應該就可以看到 WordPress 的設定頁面了。

使用 WordPress 遇到跟 Ubuntu apache2 設定相關的問題

在開始使用 WordPress 後,我遇到 2 個跟 Ubuntu apache2 設定相關的問題。下面說明我遇到的問題和我的解決辦法,給跟我一樣遇到問題的讀者參考:

  1. 在安裝佈景主題時,Wordpress 要求提供 FTP 帳號:
欲執行此動作, WordPress 需要訪問你的網頁伺服器。請輸入 Ftp 密碼繼續。若你記不得密碼,你應該向你的主機商聯繫。

這個問題主要是因為目錄的權限不足,我執行以下指令將 WordPress 的 wp-content 和 wp-includes 目錄的 owner 改為 www-data.

sudo chown -R www-data:www-data /usr/share/wordpress/wp-content/
sudo chown -R www-data:www-data /usr/share/wordpress/wp-includes/

再修改 /etc/wordpress/config-localhost.php,加入

define('FS_METHOD', 'direct');

之後,就可以用不提供 FTP 帳號,直接安裝佈景主題及外掛了。

2. 在新建立及編輯文章時,出現以下報錯:

wordpress Updating failed. Error message: The response is not a valid JSON response.

上網搜尋後,有許多不同的解決方法,我嘗試跟著修改一些東西後,就沒有看到這個問題了,但我不確定是哪個方法真正解決這個問題的,以下提供我修改的東西給讀者做參考:

修改 htaccess 權限

sudo chown -R www-data:www-data /etc/wordpress/htaccess

修改 /etc/apache2/apache2.conf,將相關的 AllowOverride 都設為 All。

<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride All
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

重啟 apache2

sudo service apache2 restart

在 WordPress –> 設定 –> 永久連結 (Permalinks) 裡調整一般設定成”文章名稱” (你也可以嘗試其他選項) –> 儲存設定

之後新建立和編輯文章就沒有再出現那個問題了。

希望以上的步驟能夠幫助到想在 Windows 10 的 WSL2 Ubuntu 上架 WordPress 的讀者。

延伸閱讀:

Perry Lin

Perry Lin 有十幾年科技業工作經驗,包含網通、晶片及雲端技術領域,喜愛旅遊及打羽球,曾經在巴西首都巴西利亞實習,去阿拉斯加看極光、南美巴拉圭、非洲坦尚尼亞等地旅遊。

發佈留言