✨
WSL2のubuntu20.04にApache+PHP+MariaDBの環境を作る
概要
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
最後の自動起動設定のところがなんともいえない感じですが、何かベターな方法をご存じの方がいましたら教えていただけると嬉しいです。
Discussion