※Ubuntuのコマンドは、基本的にはすべて一般ユーザーで実行しています。
準備
Apacheをインストール
サービス起動してるか確認。
起動してないらしいので起動する。
なんか言われた……が、この時点で http://localhost
を開くと、ちゃんとUbuntuのApache2のデフォルトページが表示された。
この警告については別に記事を書いたので、詳しくはこちらを参照。警告への対処として、/etc/apache2/apache2.conf
の末尾に以下を追記。
念のためApache再起動。
PHPをインストール
基本的には以下の記事を参考にPHP7.2をインストール。
UbuntuにPHP7の環境をつくる - Qiita
なお、php7.2-sqlite3
php7.2-curl
php7.2-gd
php7.2-xml
は使いたかったので追加した。
最後に以下のメッセージが表示されたけど、開発環境だし、FPMは無効のままで構わないので無視。(FPMを有効にすると、Apache上でPHPがCGIモードで動くようになる)
インストールできたか確認。
ApacheにPHPを乗せる
ApacheのPHP7.2モジュールをインストールして、Apacheを再起動。
PHPが動くか確認したい。以下コマンド実行してから、httpp://localhost/phpinfo.php
を開いてみる。
phpinfoの表が表示されればOK。
Composerをインストール
PHPを使うからにはComposerも入れたい。
Composerのインストール方法は概ね公式サイト通り。ここでは /usr/local/bin
に composer
という名前でインストールして、グローバルで composer
コマンドを使えるようにする。
2行目のやたら長いのは、ファイルのハッシュ値を確認してるらしい。Installer verified
と表示されれば正しい。
MariaDBをインストール
基本的には以下の記事を参考にインストール。
Ubuntu 18.04 LTS : MariaDB : インストール : Server World
初期設定は mysql_secure_installation
で行う……
……と思ったら、MariaDBのrootユーザーのパスワードを入力するところで上記のエラー。
そもそも……
サービスが起動してなかった。起動する。
改めて mysql_secure_installation
。
初期設定できたら、試しにrootユーザーで入ってみる。パスワードを訊かれたら、さっき設定したパスワードを入力する。
入れたからOK。quit
で抜けられる。
なお mysql
コマンドに sudo
をつけ忘れると、パスワードを入力したところで以下のエラーが出るので注意。
MariaDBに開発用ユーザー作成
このあとすぐ開発で使いたかったので、MariaDBに開発用ユーザーを作っておく。
ここでは仮にユーザー名は mydevuser
、パスワードは mypassword
とする。開発用なので接続元は localhost
とする。
MariaDBにログインして以下実行。
作成したら、ユーザーテーブルを確認してみる。
こんな感じになってるはず。
念のため quit
で抜けて、作成したユーザーで入れるか試してみる。(※-ppassword
は誤字ではない。-p
の後にスペースは本当にいらない。)
入れればOK。
MariaDBにデータベース作成
ついでにデータベースも作成する。ここでは仮に mydevdb
とする。
MariaDBにログインして以下実行。
さらに今回は手元に mysqldump
で作成したダンプファイルがあるので、今作ったデータベースにリストアしてみる。
quit
で抜けてから以下実行。
実際には、ダンプファイルはWindows側に置いてあるものを /mnt/c/Users/piyopiyo/Desktop/dump.sql
みたいに指定しちゃったりした。便利。
自動起動設定
最後に、PC立ち上げ時にApacheとMariaDBが自動起動するように設定する。
以下の記事を参考に……
Ubuntu 18.04 systemctlによるサービス自動起動の有効化・無効化 - Symfoware
……と設定したのだけど、自動で起動してくれない。なぜ?
以下の記事によると、どうやらWSLでは systemctl enable
が使えないらしい。
WSLのApache/MySQL(MariaDB)をWindows起動時に自動起動させる [WSL/Ubuntu環境]
なので「WSL側で .bashrc
でサービスを起動 + Windowsの起動時にWSLをこっそり起動させる」という仕掛けをしているらしい。
他にもいくつか調べてみたけど、このような感じでWSL側とWindows側の両方に仕掛けをするものが多かった。
仕掛けしてるの忘れて何かやらかしたら嫌だなーと思ってたら、以下の記事を発見。
Windows10のWSL上にあるServiceを簡単に自動起動させる - Qiita
wsl
コマンドでWSL側のコマンドを実行するbatファイルを作って、Windows側のスタートアップで実行させる方法。Windows側に仕掛けをするだけでよくて簡単だから、これにしよう。
『ファイル名を指定して実行』に shell:startup
を入力して、ログインユーザーのスタートアップのフォルダ (C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
) を開く。そこに好きな名前のbatファイルを作って、内容を以下の通りにする。
一応、ディストリビューションの指定も入れてみた。
これでWindowsを再起動してみると、ログイン時に一瞬だけ黒窓が出てきて以下が表示され、無事にApacheとMariaDBが起動された。
副次的だけど、黒窓が出るから存在を忘れなさそうなのも嬉しい。(鳥頭)
ちなみに
これで構築した環境にこのブログ (Laravel5.6) を置いて動かしてみたところ、ログファイルの所有者は www-data
じゃなくて、環境構築時に使っていたデフォルトユーザーになった。
でもApacheの起動ユーザーの設定が違うのかと思って /etc/apache2/envvars
の APACHE_RUN_USER
を見たら、普通に www-data
だった。WSL特有の挙動かもだから、本物のUbuntuにデプロイする時はパーミッションに気を付けた方がよさそう。
別のユーザーで環境構築した場合でも、同様にデフォルトユーザーでApacheが動くのかは不明。
以上
あとはNode.jsとかPythonも入れなきゃなので、入れたらまた何か書くと思う。