どうも、白夜霧(@KiRi_Byakuya)です。
今回は、Windows上でLinuxを動かすための機能「WSL」を利用して、Windows上に「Ubuntu」をインストール。
そこに「WordPress」をインストールして、テーマやプラグインの開発環境を構築するための覚書です。
結構長いですが、誰かの参考になれば幸いですm(_ _)m
目次
Windows11に「WSL」をインストール方法
WSLのインストール状態を確認
WSL(Windows Subsystem for Linux)は、デフォルトではインストールされていません。
確認方法としては「設定」→「アプリ」→「オプション機能」→「Windowsのその他機能」をクリック
「Windowsの機能」の『Linux用Windowsサブシステム』にチェックが入っていなければ、WSLはインストールされていません。
WSLをインストール
①「PowerShell」を管理者権限で起動して、下記を入力してEnter
wsl --install
上記コマンドを入力しても、インストールが開始されない場合は、既にWSLがインストール済みです。
インストールには数分かかります。インストールが完了したらWindowsを再起動して下さい。
再起動すると、デフォルトでインストールされる「ubuntu」が起動し、ユーザーネームとパスワードの設定が求められます。
ユーザーネームとパスワードの設定が完了すると、コンソール画面に切り替わります。これでWSL(+ubuntu)のインストールは完了です。
今現在(2022年8月)では、デフォルトでインストールされるのは「Ubuntu 20.04 LTS」。他にインストールできる有効なディストリビューションは下記コマンドで確認可能です。
wsl --list --online
他の任意のディストリビューションを使用したい場合は「WSL を使用して Windows に Linux をインストールする」を参照して下さい。
ubuntu上でもWordPressは問題なく動くので、私はこのまま進めます。
WSL上のubuntuのディレクトリにWindows上からアクセスする方法
WSLとデフォルトのUbuntuがインストールされると、Windowsエクスプローラー上に「Linux」というディレクトリが追加されます。
ここからUbuntu内のディレクトリにアクセスすることができ、データの移動も可能です。
WSLのLinuxディストリビューション(Ubuntu)を起動する方法
スタートメニューから「wsl」で起動が可能です。
もしくは「PowerShell」か「Windows Terminal」を起動させ、「ubuntu」と入力することでも起動は可能です。
個人的には「Windows Terminal」が一番使いやすいかも。
WSL上のUbuntuに「Apache」をインストール+設定方法
一度、ubuntu上の各パッケージをすべて更新。
sudo apt update
sudo apt upgrade
Apacheをインストール
sudo apt install apache2
インストールが完了したら、一旦Apacheを起動。
sudo service apache2 start
* Starting Apache httpd web server apache2
*
Apacheの起動が成功したら、WEBブラウザから「localhost」にアクセスして『Apache2 Ubuntu Default Page』が表示されることを確認して下さい。
デフォルトページが表示されれば、Apacheのインストールは完了です。
「Apache」ドキュメントルートを変更する
Apacheのデフォルトのドキュメントルートは「/var/www/html」。
今回は、ホームディレクトリ(/home/username)に「public_html」を作成して、こちらをドキュメントルートのフォルダに設定します。
この設定は必須ではありません。デフォルト(/var/www/html)でも問題ありません。ただし、本記事の場合は「public_html」を前提に記載します。注意して下さい。
「public_html」フォルダをホームディレクトリに作成。
mkdir public_html
Apache2 の UserDir モジュールを有効化。
sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
service apache2 restart
Apacheの設定ファイルを開く。
sudo nano /etc/apache2/sites-available/000-default.conf
設定ファイル(000-default.conf)の「DocumentRoot」を新規で作成した「public_html」に変更。
設定を色々変更したので、Apacheを再起動。
sudo service apache2 restart
* Restarting Apache httpd web server apache2 [ OK ]
ターミナル、もしくはWindowsのLinuxフォルダから、先程作成した「public_html」に適当なhtmlファイルを追加。
<!DOCTYPE html>
<html lang ="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<strong>hello world / public_html</strong>
</body>
</html>
再度、Webブラウザ上から「localhost」にアクセスして、作成したindex.htmlが表示されれば、ドキュメントルートの変更が完了です。
WSL上のUbuntuに「PHP」をインストール+設定
PHPのインストール
下記コマンドを実行し、PHPの各パッケージをインストール
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-dev php7.4-curl php7.4-zip php7.4-mbstring php7.4-imagick php7.4-intl -y
さらに詳しく
- 現在(2022年8月)の最新バージョン『WordPress 6.0.1』は、PHP バージョン 7.4 以上を推奨しているので、PHPのバージョンを7.4に統一しています。
- WordPressに必要なPHPのモジュールは「チームのハンドブック」を参照して下さい。※上記のパッケージで、サイトヘルス上では「良好」は確認済みです。
PHPとApacheの設定
Apacheの「FastCGI Mod」を有効 + php7.4のmodを無効化
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
sudo a2dismod php7.4
Apacheの「MPM」を変更(preforkからeventへ)
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
上記の設定は、下記記事を参考にさせて頂きましたm(_ _)m
「Apache」の再起動+「php-fpm」の起動
sudo service php7.4-fpm start
sudo service apache2 restart
PHPの動作確認
Apacheのドキュメントルート(public_html)に「phpinfo.php」を作成。
<?php
phpinfo();
WEBブラウザから『http://localhost/phpinfo.php』にアクセスして、phpinfoページが表示されれば、phpのインストールは完了です。
WSL上のUbuntuに「MySQL」をインストール+設定方法
MySQLのインストール
下記をコマンドでインストールを実行。
sudo apt install mysql-server
バージョンの確認コマンドが実行できれば、インストールは成功。
mysql --version
mysql Ver 8.0.30-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))
MySQLの設定
MySQLを起動
sudo service mysql start
rootパスワードが設定できない?
普通?なら、MySQLのインストール完了後、初期設定コマンド(mysql_secure_installation)を実行して、rootパスワードを設定すればいいはずだが、私の場合はどうやってもエラーが表示されて、rootのパスワードが設定できない。
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
直訳:... 失敗しました! Error: SET PASSWORD はユーザー 'root'@'localhost' に対して意味を持ちません、使用されている認証方法は MySQL サーバーに認証データを保存しないためです。認証パラメータを変更する場合は、代わりにALTER USERの使用を検討してください。
なので、下記記事を参考させて頂き、rootのパスワードを前もって設定しましたm(_ _)m
MySQLにrootで接続。※初期状態なのでパスなし。
sudo mysql -u root
「ALTER USER」コマンドでパスワードを設定。※passwordは任意のパスを入力して下さい。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'password';
MySQLをログアウトして、MySQLの初期設定(最低限のセキュリティ設定をしてくれる)コマンドを実行。入力は対話形式です。
sudo mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Using existing password for root.
Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:
Re-enter new password:
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
上記設定は、下記記事を参考にさせて頂きましたm(_ _)m
MySQLにWordPress用の「データベース」と「ユーザー」を作成
MySQLにrootでログイン
sudo mysql -u root -p
データベース「local_wp」を作成。※名前は任意。
CREATE DATABASE local_wp CHARACTER SET utf8mb4;
「CREATE USER」コマンドで、データーベースに新しいユーザーを作成。(例:ユーザー名:kiri / パスワード:localwpmaster)
CREATE USER 'kiri'@'localhost' IDENTIFIED BY 'localwpmaster';
パスワードの設定で「ERROR 1819 (HY000): Your password does not satisfy the current policy requirements」と表示される人は、下記記事を確認して下さい。
MySQL(5.7以降)のパスワードポリシーが厳しいので変更する。Your password does not satisfy the current policy requirementsの対処法
作成した新しいユーザーに、指定のデーターベース(local_wp)にフルアクセス権限を付与して、権限を一旦リロードして終了。
GRANT ALL PRIVILEGES ON local_wp.* TO 'kiri'@'localhost';
FLUSH PRIVILEGES;
exit
WSL上のUbuntuに「PhpMyAdmin」をインストール+設定方法
下記コマンドでPhpMyAdminをインストール
sudo apt install phpmyadmin
カーソルを「apache2」にしてスペースを押して選択→タブキーで「ok」に移動してEnter。
『dbconfig-commonコマンドを実行して、データーベースのインストールと設定をしますか?』という確認。既にMySQLのインストールも設定も済みなので「No」でEnter。
元の端末画面に戻ったらインストール完了。念のためApache、PHP、MySQLを一旦再起動。
sudo service apache2 restart
sudo service php7.4-fpm restart
sudo service mysql restart
ブラウザから「http://localhost/phpmyadmin/」を開いて、MySQL上で作成したユーザー名とパスワードでログインできれば成功。
「phpMyAdmin環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。」というエラーが出る人は、下記記事を参考にして下さい。
『phpMyAdmin環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。』の対策方法
「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。代わりにデーターベースの操作タブを使って設定することもできます。」のエラーメッセージの解消方法の覚書
続きを見る
WSL(Ubuntu)のApache / PHP-FPM / MySQLを自動で起動&終了する設定方法
今までWSL上のUbuntuにインストールした「Apache」「php-fpm」「MySQL」は、Ubuntuを起動しても、自動的に起動はしてくれません。
毎回コマンドで実行させるのは面倒なので、Ubuntuが起動したら自動的に起動する(&ターミナルを閉じたら停止)するように設定します。
Windowsのエクスプローラーから「\\wsl$\Ubuntu\home\ユーザー名」を開く。
上記の「.bashrc」がTerminal(以下:端末)起動時に毎回実行されるファイル。「.bashrc_logout」は端末を閉じる(ログアウト)した時に毎回実行されるファイル。
サーバーとして考えれば、本来であれば「.profile」に各起動コマンドを書いた方がいいのかもしれない。※ログイン時に1回だけ実行される。
ただ、私は『WordPressのテーマの開発環境』として今回開発環境を構築しているので、現状ではサーバーみたいに常時ずーっと動いている必要はない。
端末でubuntuを起動した時に勝手に起動。端末を閉じたら停止していてくれれば問題ない。
なので、今回は「.bashrc」に起動コマンド。「.bashrc_logout」に終了コマンドを追加します。
「.bashrc」「.profile」に関しては、下記記事を参考にさせて頂きましたm(_ _)m
該当のファイルをテキストエディタで開き、下記コマンドを一番下(最後尾)に追記して保存。
.bashrc / Apache, php-fpm, MySQL 起動コマンド
/usr/bin/sudo /usr/sbin/service php7.4-fpm start
/usr/bin/sudo /usr/sbin/service apache2 start
/usr/bin/sudo /usr/sbin/service mysql start
.bash_logout / Apache, php-fpm, MySQL 終了コマンド
/usr/bin/sudo /usr/sbin/service php7.4-fpm stop
/usr/bin/sudo /usr/sbin/service apache2 stop
/usr/bin/sudo /usr/sbin/service mysql stop
上記ファイルの編集は、Windows上からでも可能。
一度端末を閉じて、再度ubuntuを起動→exitでログアウトすれば、挙動がわかると思います。
WSL上のUbuntuに「WordPress」をインストール+初期設定
WordPressのインストールデータを準備
作業ディレクトリをドキュメントルート(public_html)へ移動。
cd public_html
WordPressをダウンロード。
wget --no-check-certificate https://wordpress.org/latest.tar.gz
WordPressの設定phpファイル(wp-config.php)の文字化けが嫌なので、わざと日本語版ではなく英語版をDLしています。※WordPress上の言語は日本語に変更可能。
ダウンロードしたWordPressの圧縮ファイルを解凍。解凍すると「wordpress」フォルダが生成されます。
tar xvf latest.tar.gz
「chownコマンド」で、Apacheにwordpressフォルダの所有権(ユーザーとグループ)を渡して、ApacheからWordPressのディレクトリに書き込みを可能にする。
sudo chown -R www-data:www-data wordpress
WordPressのインストール+初期設定
ブラウザから「http://localhost/wordpress/」へアクセス→言語(日本語)を選択→「次へ」をクリック。
「さあ、始めましょう!」をクリック。
MySQLで作成した「データーベース名」と「ユーザー名」「パスワード」を入力。※それ以外はデフォルトでOK
「インストール実行」をクリック。
「サイトのタイトル」「ユーザー名」「メールアドレス」を入力→「WordPressをインストール」をクリック。
パスワードのメモはお忘れなく。
あくまでWordPressのテーマを開発するための、ローカルな開発環境として構築しているので「検索エンジンでの表示」は一応チェックをいれています。
下記画面が表示されれば、インストールは完了です。「ログイン」をクリック。
先程入力した「ユーザー名」と「パスワード」を入力して「ログイン」
管理画面が表示されれば、WordPressのインストールと初期設定は完了です。
最初は忘れずに、必ず最新バージョンへ更新して下さい。
以上、有難うございましたm(_ _)m
参考になったらポッチとお願いしますm(_ _)m