WSLでLAMP環境を構築してWordPressをインストールする。

phpMyAdminのセットアップウィザードは操作が独特なので慎重に進める。

UbuntuにApacheをインストールする

最初にローカルパッケージインデックスを更新する。

$ sudo apt update

apache2パッケージをインストールする。

$ sudo apt install apache2

インストールしたapache2パッケージの確認。

$ apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2021-07-05T07:16:56

Apacheを起動して動作を確認する。

$ sudo service apache2 start

Windowsからlocalhostにアクセスして表示を確認する。

Apacheの再起動。

$ sudo service apache2 restart

Apacheの停止。

$ sudo service apache2 stop

WSL2ではlocalhostでhttpdサーバーにアクセス出来る仕組みになっている。

実際のWSL2のIPアドレス以下で調べることができる。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 06:3d:7b:75:dc:1c brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether f6:32:83:8b:52:15 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:94:30:b7 brd ff:ff:ff:ff:ff:ff
    inet 172.29.177.113/20 brd 172.29.191.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe94:30b7/64 scope link
       valid_lft forever preferred_lft forever
5: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
6: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0

もしくは

$ ip r
default via 172.29.176.1 dev eth0
172.29.176.0/20 dev eth0 proto kernel scope link src 172.29.177.113

eth0で見えている172.29.177.113がWSL2のアドレス。これを使ってhttp://172.29.177.113でもアクセスできる。

<参考>
Linux、Apache、MySQL、PHP(LAMP)スタックをUbuntu 20.04にインストールする方法 | DigitalOcean
Windows WSL2に外部から直接アクセスするための設定【rcmdnk’s blog】

MySQLをインストールする

MySQLをインストールする。

$ sudo apt install mysql-server

インストールしたMySQLのバージョンを確認する。

$ mysql --version
mysql  Ver 8.0.26-0ubuntu0.20.04.2 for Linux on x86_64 ((Ubuntu))

MySQLサーバーを起動する。

$ sudo service mysql start

MySQLサーバーの状態を確認する。

$ sudo service mysql status

mysql_secure_installationスクリプトを実行して必要な設定をする。

$ sudo mysql_secure_installation

VALIDATE PASSWORD COMPONENTを使用するかどうかの確認。開発環境なのでNoを選択。

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: n

rootユーザーのパスワードの設定。

Please set the password for root here.

New password:

Re-enter new password:

anonymousユーザーの削除。

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.

リモートホストからrootユーザーでログインするのを禁止する。

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.

testデータベースの削除。

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!

専用のMySQLユーザーの作成と権限の付与

MySQLを起動する。

$ sudo service mysql start

MySQLにログインする。

$ sudo mysql

新しいユーザーを作成する。

mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

ユーザーに権限を付与する。

mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'username'@'localhost' WITH GRANT OPTION;

ユーザーの権限を確認する。

mysql> show grants for 'username'@'localhost';

全ての権限をリロードして変更を有効にする。

mysql> FLUSH PRIVILEGES;

MySQLクライアントを終了する。

mysql> exit

作成したユーザーでログインする。

$ mysql -u user_name -p

【補足】

GRANT ALLにすれば全ての権限を付与できる。

mysql> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

<参考>
Ubuntu 20.04にMySQLをインストールする方法 | DigitalOcean
UbuntuにMySQLをインストール【Qiita】
mysql_secure_installation – MariaDB Knowledge Base

PHPをインストールする

PHPと必要なモジュールをインストールする。

$ sudo apt install php libapache2-mod-php php-mysql

インストールしたPHPのバージョンを確認する。

$ php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

PHPの動作確認のためにinfo.phpというファイルを作成する。

$ sudo vi /var/www/html/info.php

内容は以下の通り。

<?php
phpinfo();

Apacheを再起動する。

$ sudo service apache2 restart

ブラウザでhttp://localhost/info.phpアクセスして表示を確認する。

phpMyAdminのインストール

phpMyAdminと必要なモジュールをインストールする。

$ sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

セットアップウィザードが立ち上がる。

スペースキーを押して「apache2」を選択する。

タブキーを押して「OK」を選択してエンターキーで決定。

「Yes」を選択してエンターキーで決定。

パスワードを入力して「OK」を選択する。

確認のためもう一度パスワードを入力して「OK」を選択する。

mbstringPHP拡張モジュールを明示的に有効にする。

$ sudo phpenmod mbstring

Apacheを再起動して変更を適用する。

$ sudo service apache2 restart

ブラウザでhttp://localhost/phpmyadmin/アクセスして表示を確認する。

【補足】

phpmyadminユーザーの権限を確認すると、何も権限がない状態になっている。

mysql> show grants for 'phpmyadmin'@'localhost';
+--------------------------------------------------------------------+
| Grants for phpmyadmin@localhost                                    |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `phpmyadmin`@`localhost`                     |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO `phpmyadmin`@`localhost` |
+--------------------------------------------------------------------+
2 rows in set (0.01 sec)

<参考>
Ubuntu 20.04にphpMyAdminをインストールしてセキュリティを保護する方法 | DigitalOcean
【Ubuntu 20.04 LTS Server】phpMyAdminをインストール | The modern stone age.

仮想ホストの設定

デフォルトのドキュメントルート

/var/www/html/

your_domainディレクトリの作成。

$ sudo mkdir /var/www/your_domain

$USER環境変数を使用してディレクトリの所有権を割り当てる。

$ sudo chown -R $USER:$USER /var/www/your_domain

正しい権限を設定する。

$ sudo chmod -R 755 /var/www/your_domain

サンプルindex.htmlページを作成する。

$ sudo vi /var/www/your_domain/index.html

以下のHTMLをコピーする。

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

デフォルトの仮想ホストの設定は以下のファイル。

/etc/apache2/sites-able/000-default.conf

新しい設定ファイルを作成する。

$ sudo vi /etc/apache2/sites-available/your_domain.conf

以下の内容をコピーする。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

a2ensiteツールを使用してファイルを有効にする。

$ sudo a2ensite your_domain.conf

a2dissiteツールを使用してデフォルトのサイトを無効にする。

$ sudo a2dissite 000-default.conf

設定にエラーがないかテストする。

$ sudo apache2ctl configtest

Apacheを再起動して変更を適用する。

sudo service apache2 restart

Windowsからlocalhostにアクセスして表示を確認する。

Success! The your_domain virtual host is working!

補足

/etc/apache2/sites-available/

サイト内の仮想ホストが保存できるディレクトリ。a2ensiteコマンドでリンクすることで有効になる。

/etc/apache2/sites-enabled/

有効化された仮想ホストが保存されているディレクトリ。sites-availableディレクトリにある設定ファイルにa2ensiteをリンクすることで作成される。

<参考>
Ubuntu 20.04にApache Webサーバーをインストールする方法【DigitalOcean】

WordPressを使うための準備

WordPressで使用する一般的なPHP拡張機能をインストールする。

$ sudo apt update
$ sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip

.htaccess上書きを 有効にする。

$ sudo vi /etc/apache2/sites-available/your_domain.conf

Directoryブロックを追加してAllowOverrideディレクティブを設定する。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/your_domain/>
        AllowOverride All
    </Directory>
</VirtualHost>

WordPressパーマリンク機能を使用できるように、mod_rewriteを有効にする。

$ sudo a2enmod rewrite

次のテストを実行して構文エラーがないことを確認する。

$ sudo apache2ctl configtest
Syntax OK

Apacheを再起動して変更を実装する。

$ sudo service apache2 restart

WordPressのインストール

tmpディレクトリに移動してWordPressをダウンロードする。

$ cd /tmp
$ curl -O https://wordpress.org/latest.tar.gz

ダウンロードしたファイルを解凍する。

$ tar xzvf latest.tar.gz

展開したファイルをドキュメントルートにコピーする。

$ sudo cp -a /tmp/wordpress/. /var/www/your_domain

ファイルの所有権をApacheWebサーバーが実行するユーザーに変更する。

$ sudo chown -R www-data:www-data /var/www/your_domain

以下は実行しなくてもとりあえず動くようだ。

$ sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
$ sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;

WordPress用のデータベースを作成する。

mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ブラウザでlocalhostにアクセスしてWordPressのセットアップを行う。

<参考>
Ubuntu 20.04にLAMPスタックでWordPressをインストールする方法 | DigitalOcean
Windows10 WSLのUbuntuにLAMP環境を作ってWordPressをインストールする(前編)【CodeAid-Lab】

投稿日:
カテゴリー: 未分類

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です