WSLのubuntu20.04にApache+PHP+MariaDBの環境を作る

2 min read読了の目安(約2400字

概要

Windows10 WSLのubuntu20.04にApache+PHP+MariaDBの環境を作ったメモです。

Apache

インストールと起動

$ sudo apt install apache2
$ service apache2 start

バージョン確認

apache2 -v
----
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-08-12T19:46:17

ブラウザ確認

http://[IPアドレス]/

Apache2はデフォルトだとrewriteが無効になっているため有効に変更しておく。サービスの再起動を忘れないようにする。

$ sudo a2enmod rewrite
----
Enabling module rewrite.
To activate the new configuration, you need to run:
 service apache2 restart
----
$ sudo service apache2 restart

PHP

インストール

追加しておきたいパッケージも入れておく

$ sudo apt install php php-fpm libapache2-mod-php php-common php-pear php-mbstring php-xmlrpc php-gd php-xml php-mysql php-cli php-zip php-curl php-imagick

インストール後はapache2を再起動する

service apache2 restart

バージョン確認

$ php -v
----
PHP 7.4.3 (cli) (built: Oct  6 2020 15:47:56) ( 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

ブラウザ確認

phpinfo.phpを作成する

$ vi /var/www/html/phpinfo.php
----
<?php
 phpinfo();
?>

http://[IPアドレス]/phpinfo.php

MariaDB

インストール

$ sudo apt install mariadb-server mariadb-client

サービス起動

$ sudo service mysql start
--
* Starting MariaDB database server mysqld 

mysqlsecureinstallationを実行する(初期セットアップする)

$ sudo mysql_secure_installation

※rootのパスワードの設定を促されますので設定しました。

ログイン確認

$ sudo mysql -u root -p
Enter password: 

続けて作業用ユーザーとサービス用のデータベースを作成しておく

> create user '[user_name]'@'localhost' identified by '[password]';
> create database [database];
> grant SELECT, ALTER, INSERT, UPDATE, DELETE, CREATE, DROP on [database].* to '[user_name]'@'localhost';
> FLUSH PRIVILEGES;

念のため確認

> use mysql
> select * from user;
> select * from db;

※userは各権限がnになっており dbテーブルでOKした権限がYになっている

注意事項

・スタートアップ起動について
WSL2のubuntuは" systemctl enable [サービス名] "をしても自動起動にならない。
※Windows10からubuntuを起動するとsystemctlが"PID 1"にならないため動けないそうです。

ローカル環境なので、rootの.bashrcにサービスの起動を記述しておき
スタートメニューからubuntuを起動した後にrootのコンソールが表示されるタイミングでサービス起動させる事で回避します。

$ vi /root/.bashrc
----
# apache2
serv_status=$(service apache2 status > /dev/null 2>&1; echo $?)
if [ ! $serv_status == "0" ]; then
 service apache2 start
fi
# mariadb
serv_status=$(service mysql status > /dev/null 2>&1; echo $?)
if [ ! $serv_status == "0" ]; then
 service mysql start
fi

最後の自動起動設定のところがなんともいえない感じですが、何かベターな方法をご存じの方がいましたら教えていただけると嬉しいです。