WordPressのローカルコピー (WSL2版)
ローカル環境でWordPressを動かすには、前回のLocalアプリを使用するのがお手軽で便利ですが、WEBアプリ等もローカルで実行したい場合にはLinux環境が必要になります。そこで今回はWSL2(Windows上のLinux環境)を使用して、公開しているWordPressをローカルで実行します。ローカルサイトが構築できれば前回と同じ方法で移行可能です。WEBサーバーはApache2を使用します。
WSL2(Ubuntu)をインストールします
PowerShellを起動して「wsl –install」と入力すると、Ubuntuの最新版(現時点では24.04LTSになります)がインストールされます。他のバージョンをインストールしたい場合は、「wsl –list –online」と入力するとインストール可能なディストリビューションが表示されるので、「wsl –install -d <ディストリビューション名(左側に表示されている名称)>」と入力してインストールします。
PS C:\Users\admin> wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
Ubuntu-24.04 Ubuntu 24.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.6 openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed openSUSE Tumbleweed
PS C:\Users\admin> wsl --install -d Ubuntu-22.04
現在インストールされているディストリビューションの一覧を表示するには「wsl -l -v」と入力します。
PS C:Usersadmin> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
PS C:Usersadmin>
インストール完了後に初期ユーザー名とパスワードを入力するとUbuntuが起動します。次回起動する場合は、Windowsの検索で「ubuntu」と入力して表示されたアプリを起動します。よく起動するのであればタスクバーにピン留めしておくと便利かもしれません。
Ubuntuは初期状態でルートのパスワードが設定されていないので、「sudo passwd root」と入力して最初に設定しておきます。ローカル環境なので以降は「sudo -s」と入力してルート権限で設定処理を行います。
user01@DESKTOP-CQEA49P:~$ sudo passwd root
[sudo] password for user01:
New password:
Retype new password:
passwd: password updated successfully
user01@DESKTOP-CQEA49P:~$ sudo -s
[sudo] password for user01:
root@DESKTOP-CQEA49P:/home/user01#
aptコマンドでパッケージを更新しておきます。
(結構重要です。やっておかないとMySQL(MariaDB)のインストールがエラーになります。)
apt update
apt upgrade
WinSCP(FTPソフト)をインストールします
これからいくつか設定を行っていくのですが、WindowsからWSL2(Linux)内の設定ファイルを直接編集することができません。そこで少し回りくどいですが、WinSCPというFTPソフトをインストールしてSSH経由でLinuxファイルを編集できる様にします。
最初にUbuntuにSSHサーバーソフトをインストールします。
WSL2のターミナル画面はコピー&ペーストが実行できるので、以下のコマンドをコピーしてターミナル画面上で Ctrl + Vを実行するか、マウスボタンの右クリックで貼り付けできます。
apt install openssh-server
インストールが終了したら、以下のコマンドを入力してSSHを有効化して起動しておきます。
systemctl enable ssh
systemctl start ssh
次に権限ファイルを編集して、SSH経由で一般ユーザーがルートコマンドを実行できる様に変更します。「visudo」と入力して、表示された画面の一番下に以下の文字列を追加します。(<ユーザー名>は最初に入力したユーザー名を入力してください。) その後、Ctrl + O(オー)、enterキー、Ctrl + Xと入力して画面を閉じます。
<ユーザー名> ALL=NOPASSWD: /usr/lib/openssh/sftp-server
次にWinSCPをダウンロードして、こちらのサイト様等を参考にしてインストールします。インストールが終了したら起動画面で、「ホスト名(IPアドレス)」と「ユーザー名」を入力します。IPアドレスはUbuntuのコンソール画面で「ip a」と入力すると2番目(eth0)に表示されます。その後「設定」ボタンを押してsftpの設定を行います。
表示された画面で「SFTP」を選択してSFTPサーバ欄に「sudo /usr/lib/openssh/sftp-server」と入力してOKボタンで画面を閉じます。その後「保存」ボタンでサイト情報を保存します。
「ログイン」ボタンを押して表示された画面にパスワードを入力してログインできれば成功です。
WEBサーバー(Apache2)をインストールします
以下のコマンドを実行してApach2をインストールします。
apt install apache2
設定ファイル(/etc/apache2/apache2.conf)を編集します。WinSCPのツールバー等を使用して「/etc/apache2/apache2.conf」を表示させてダブルクリックします。
デフォルトのWindowsのエディタが開くので、176行目あたりに以下の設定を追加して保存して閉じます。
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
WordPressをサブディレクトリで動作させたい(だけどURLには表示させたくない)ので、Apache2のmod_rewrite(ディレクトリの書き換え)機能をオンにします。その後Apache2を再起動して設定を有効にします。
a2enmod rewrite
systemctl restart apache2
WEBサーバーが動作しているか、先ほど調べたIPアドレスを入力してテストします。
どういう仕組みか良く分かりませんが、「localhost」と入力してもアクセスできるようです。(127.0.0.1では表示できない様です。)
MySQL (MariaDB)をインストールします
以下のコマンドを実行してMySQL(MariaDB)をインストールします。
apt install mariadb-server mariadb-client
「mysql」と入力してコマンドプロンプトに入った後で以下のコマンドを実行します。ローカル環境のためセキュリティ関連の処理は省略します。
create database wordpress;
grant all privileges on wordpress.* to wordpress@'localhost' identified by 'password';
exit
PHPをインストールします
以下のコマンドを実行してPHPをインストールします。
apt install php php-cgi libapache2-mod-php php-common php-pear php-mbstring
apt install php-fpm php-common php-mysql php-gmp php-curl php-intl php-xmlrpc php-gd php-xml php-cli php-zip
PHPが動作しているか確認します。
echo '<?php phpinfo(); ?>' > /var/www/html/index.php
ブラウザに「localhost/index.php」と入力して表示できるか確認します。
WordPressをインストールします
以下のコマンドを実行してWordPressをインストールします
cd /var/www/html
wget https://ja.wordpress.org/latest-ja.tar.gz
tar xvzf latest-ja.tar.gz
chown -R www-data:www-data ./wordpress
複数のWordPressを動作させることもあるかもしれないので、サブディレクトリ名を任意の名称に変更します。
mv ./wordpress ./blog
このまま「localhost/blog」と入力すればWordPressをセットアップできますが、サイト名がlocalhostになります。サイト名を変更したい場合は、前回ご紹介したhostsファイルのアクセス権限を修正してから以下の様な文字列をhostsファイルに追加します。IPアドレスをご自身のWSL2に割り当てられたアドレスに変更してください。サイト名はご自由に変更してください。
172.19.88.145 mimura-soft.local
ブラウザで「<設定したサイト名>/blog」と入力するとWordPressのセットアップ画面が表示されますので、デフォルト設定でセットアップを行います。サイト名称等はご自由に入力してください。
WordPressの動作設定を行います
WordPressのインストールが終了したら動作設定を行います。ダッシュボードの「設定」→「一般」にあるサイトアドレスからサブディレクトリ名を削除して「設定を保存」ボタンを押します。
WordPressをインストールしたディレクトリ(blog)にある、「.htaccess」と「index.php」ファイルを1つ上のディレクトリにコピーします。Windowsからはコピーも出来ない様なので、WinSCPを使うと便利かもしれません。ファイルが見当たらない場合は、右側の更新ボタンをクリックすると表示が更新されます。ファイルを選択して左側のペイン(Windowsのディレクトリ)にドラッグしてコピーします。その後右のペインを1つ上の階層に移動して、左から右にドラッグしてコピーします。
右側のペインにある「index.php」ファイルをダブルクリックして開き、17行目あたりにある文字列を以下の様に修正して保存します。
require __DIR__ . '/wp-blog-header.php';
↓
require __DIR__ . '/blog/wp-blog-header.php';
同じように右側の「.htaccess」ファイルを開き、9行目あたりにある文字列を以下の様に修正します。
RewriteBase /blog/
↓
RewriteBase /
.htaccessファイルの先頭に以下の文字列を追加して保存します。この設定により、同じディレクトリ内にindex.html等があってもWordPressが優先的に表示されるようになります。
DirectoryIndex index.php
ローカルサイトのURLを入力して動作確認します。
「<ローカルサイト名>/blog/wp-login.php」からログインした後、前回と同じようにプラグイン(UpdraftPlus)をインストールしてオリジナルのWordPressサイトを復元します。
動作確認して特に問題ない様でしたら終了です。
注意事項など
前回ご紹介した「Local」アプリとWSL2を同時に起動している状態で、Localアプリの「WP Admin」や「Open Site」ボタンを押すと「WSL2」のローカルサイトが表示されます。Localアプリの誤動作を疑い再インストール等を行う前に、WSL2が起動していないかをご確認ください。(自分に言っています。)
その他
前回ご紹介したLocalアプリは、WordPressの実行に特化した環境になっていました。今回は実際のLinux上で動作していますので、より本番環境に近い状態で検証できます。またLocalアプリでもそうですが、ローカル環境で動作する(他のPCに移動できる)ということはトラブル等が発生して自力で解決できそうもない場合に、専門家等の援助を得る手段の選択肢が増えるのもメリットと思われます。