Bash on Ubuntu on WindowsでCakePHPを動かしてみよう!

昨日はまず試してみることだけをやってみた、Windows 10 Anniversary Updateの(開発者にとっての)目玉機能であるBash on Ubuntu on Windows。ひととおりBashやapt-getといった機能が動作することを確認できたので、次はApache+PHP+MySQLのいわゆるLAMP環境(LAMPのLはLinuxですがUbuntuが動いているからLのままで良いでしょう!)を作って、CakePHPを動作させてみることにしましょう。

結果からいえば、動作します。大丈夫です!

Apache+PHPの導入と動作確認

Windowsで動作するのはUbuntu環境なので、apt-getでインストールできます。

sudo apt-get install apache2 php5 php-pear php5-gd php5-mcrypt php5-curl

起動はこんな感じで。

sudo service apache2 start

Apacheの起動は必ずsudoで行いましょう。80番ポートを開くのでroot権限が必要です。

ただ、この時点ではApacheが起動してもワーニングメッセージが表示されていると思います。
/etc/apache2/apache2.confの末尾に追記するか、/etc/apache2/conf-enabledにファイルを作成して、Apacheを再起動すると、エラーは出なくなります。

ServerName (適当なサーバ名)
AcceptFilter http none

あとは、Webブラウザでhttp://localhostを開くと、このような画面が表示されるでしょう。

ubuntu-apache2_080516_021846_PM

また、/home/kusanagi/inoccu_com/DocumentRootにお馴染みのコードのphpinfo.phpファイルなどを作成してアクセスしてみると、PHPが動作していることも確認できるでしょう。

<?php phpinfo(); ?>

phpinfo_080516_022103_PM

MySQLのインストール

次は、MySQLです。apt-getでインストールします。
合わせてphp5-mysqlと、phpmyadminもインストールしてしまいましょう。
Ubuntu用パッケージでのインストールなので、途中でMySQLのrootパスワードや、phpmyadminの設定画面も開くと思います。

sudo apt-get install mysql-server mysql-client php5-mysql phpmyadmin

MySQLを起動します。

sudo service mysql start

MySQL起動時にはエラーが出ると思います。でも、ちゃんと起動していて動作もするようです。

ubuntu-mysql-error_080516_022627_PM

初回起動後は、mysql_secure_installationを実行し、画面の表示に沿って設定を行います。

mysql_secure_installation

PHPからもMySQLにアクセスできるようになっているので、一度、Apacheを再起動しておきます。

sudo service apache2 restart

再起動後、phpinfo.phpを開くとMySQLの表示が増えているでしょう。また、http://localhost/phpmyadminにアクセスすると、phpmyadminの画面も見えると思います。

Bashウィンドウを閉じると、ApacheとMySQLも終了する

このように、あたかもLinuxのような操作でApache+PHP+MySQLの環境ができるのですが(実際にWindows上でUbuntuが動いているので当然です)、Bashを閉じるとApacheやMySQLも終了してしまいます。

もしかしたら、何か設定方法があるのかもしれませんが、いわゆるサービスやデーモンのように、常時起動させておくような用途には向かないことに注意しておきましょう。ただ、開発環境としての使用なら、Bashウィンドウは常に開いて操作するので何の問題もないでしょう。

CakePHPにチャレンジ

次にCakePHPを動かしてみます。/home/kusanagi/inoccu_com/DocumentRoot配下に置けば簡単に動いてしまいそうですが、Windowsアプリ(Visual Studio Codeなど)からファイルを開こうとすると結構深い階層にあって不便なので、Windows側のフォルダに配置してみることにしましょう。

今回は、CakePHP 2.8.6を、d:\dev\cakephp-2.8.6に配置して、いまインストールしたApacheのバーチャルホストで動作させます。
/etc/apache2/site-enabledに、100-cakephp2.confというファイルを作成し、下記のような内容にしました。

<VirtualHost *:80>
  ServerName cakephp2.rubia.dev
  ServerAdmin webmaster@localhost
  DocumentRoot /mnt/d/dev/cakephp-2.8.6
  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined
  <Directory /mnt/d/dev/cakephp-2.8.6>
    Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

http://cakephp2.rubia.devというURLでアクセスすることにしたので、Windows側のhostsファイル(c:\Windows\System32\drivers\etc\hosts)の設定も必要です。

127.0.0.1   localhost rubia rubia.dev cakephp2.rubia.dev

これで、CakePHPの初期画面が表示されるようになりますが、Rewriteモジュールが有効になっていないので、その旨のエラーが表示されるでしょう。

sudo a2enmod rewrite
sudo service apache2 restart

このように、a2enmodコマンドでRewriteモジュールを有効化します。

あとは、Security.Saltdatabase.phpの設定など、CakePHPで定番の設定を行えば、CakePHPが動作するようになります。

cakephp2_080516_024711_PM

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。