47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

技術メモ: WSL+AMP(Apache+Mysql+PHP)の設定 (2025年6月版)

WSLの設定に続いてWSL+AMPの設定方法についても更新します。 細かい変更については、この後ちょくちょくこの記事を更新していこうと思います。

新プロジェクトは PHP 8.4+MySQL 8.0 ですが、 旧プロジェクト(PHP 7.4+MySQL 5.7)のテスト環境も残したいので、以下の方針としました。

  • PHPは、WSLに7.4と8.4の両方を入れて切り替える
  • MySQLは、WSLを8.0、Windowsを5.7として、WSL側のポートを変えて使用する

Apacheはメジャーバージョンは変わっていないので、WSLで最新の2.4.58を使用することにします。

WSLのインストール/設定

WSLについては前記事(WSL設定まとめ (2025年6月版) - 47歳でやむなくセミリタイア)の通りです。

apache2のインストール

本体をインストールしてrewirteモジュールを有効にします。

$ sudo apt install apache2 
$ sudo a2enmod rewrite

AcceptFilter を無効化

WindowsではAcceptFilterが使用できませんので無効化しておきます。 /etc/apache2/apache2.confに以下を追加します。

AcceptFilter http none
AcceptFilter https none

サイトの設定

/etc/apache2/sites-available/xxx.conf を作成して、sites-enabledにシンボリックリンクを作ります。 以下は一例です。

<VirtualHost *:80>
    DocumentRoot "/var/www/yii2/backend/web/"
    ServerName yii2.jp
    ErrorLog ${APACHE_LOG_DIR}/yii2-error_log
    CustomLog ${APACHE_LOG_DIR}/yii2-access_log common
    <Directory "/var/www/yii2/backend/web/">
        AllowOverride All
        Options +ExecCGI +SymLinksIfOwnerMatch
        Require all granted
        DirectoryIndex index.php
    </Directory>
</VirtualHost>

Windowsのhostsファイルにapaheのサーバ名を登録

hostsファイルにサーバ名を登録しておくと、http://yii.jp/などとしてapache2にアクセスできるので便利です。 C:\Windows\System32\drivers\etc\hosts に以下のように記載します。 ::1がIPv6用の記載で、今はこちらが使用されているみたいです。

127.0.0.1    yii.jp
::1 yii.jp

mysqlのインストール

mysqlのサーバとクライアントパッケージをインストールして、mysqlのホームディレクトリを設定します。

$ sudo apt install mysql-server mysql-client
$ sudo usermod -d /var/lib/mysql mysql

データベースの文字コードにutf8mb4を使うので、/etc/mysql/mysql.conf.d/my.cnfを作成し、以下を記載します。 ちなみにmysql 8.0のデフォルトのcollation(utf8mb4_0900_as_ci)だと、「びょういん」(病院)と「びよういん」(美容院)が同一と判定されます。

また、認証をmysql_native_passwordにしておかないとphpからアクセスができなかったため、そちらも変更します。 デフォルトのcaching_sha2_passwordもPHP 7.4.4以降でサポートしているので、php側に何か設定すればいいかもですが、面倒なので放っています。

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default_authentication_plugin = mysql_native_password
[mysql]
default-character-set=utf8mb4

(備考) 以前は一般ユーザからmysql -u rootでパスワード無しでアクセスすることも可能でしたが、それはできなくなったようです。 私は、sudo mysql -u root としてrootからアクセスするようにしています。

PHPのインストール

PHP 7.4/8.4を両方インストールして切り替えて使います。

aptのレポジトリに公式PHP(ppa:ondrej/php)を追加

$ sudo add-apt-repository ppa:ondrej/php

PHP 7.4/8.0をインストール

$ sudo apt install php7.4 php7.4-gd php7.4-mbstring php7.4-mysql php7.4-zip php7.4-curl php7.4-xml
$ sudo apt install php8.4 php8.4-gd php8.4-mbstring php8.4-mysql php8.4-zip php8.4-curl php8.4-xml

PHPの切り替え方法

CLIとapache2モジュールの両方を切り替える必要があります。

まず、現バージョンの確認方法は以下で、

CLI:
$ php -v
apache2:
$ ls /etc/apache2/mods-enabled | grep php

例としてPHP 7.4から8.4への切り替え方法は以下になります。

CLI:
$ sudo update-alternatives --set php /usr/bin/php8.4
apache2:
$ sudo a2dismod php7.4
$ sudo a2enmod php8.4
$ sudo service apache2 restart

apache2/mysql自動起動を設定 (Windows側)

スタートアップに以下の内容でUbuntu.batを作成する。

@echo off
wsl -d Ubuntu-18.04 -u root -- service apache2 start
wsl -d Ubuntu-18.04 -u root -- service mysql start

追加設定

AMPとは直接関係ありませんが、使用しているパッケージなどの設定を記載しておきます。

git-delta

diffを見やすく表示するコマンドdeltaを使用するようにします。 こちらのほうが変更部分の検出がdiff-highlightよりも賢いです。

$ sudo apt install git-delta
$ sudo ln -s /usr/share/doc/git/contrib/diff-highlight/diff-highlight /usr/local/bin/diff-highlight

~/.gitconfigにdeltaを指定します。

[core]
    pager = delta --diff-highlight
    editor = vim

[interactive]
  diffFilter = delta --diff-highlight

[color]
    ui = true

開発用パッケージ

バージョン管理やパッケージ管理用のツールです。

$ sudo apt install subversion
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ sudo chown root:root /usr/local/bin/composer
$ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash - 
$ sudo apt install nodejs

libreoffice

Office互換ソフトです。エクセルファイルをPDFに変換するのに使用しています。

$ sudo apt install libreoffice libreoffice-l10n-ja

libreofficeで使用するM PLUS 1フォントをインストールします。 M PLUS 1フォントは、本家(M+ FONTS)から、「google fonts」「M PLUS 1」と選んで、「Download Family」でダウンロードできるttfファイルを使用します。

$ sudo cp -r ~/mplus /usr/local/share/fonts/
$ sudo sudo fc-cache /usr/local/share/fonts/mplus

propper-utils

PDFを変換するツールです。PDFから画像(PNG)への変換などに使用しています。

$ sudo apt install poppler-utils

Windows側のMySQLの設定に少し手間取りましたが、以上の設定でAMPの動作が確認できました。