昨日はまず試してみることだけをやってみた、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を開くと、このような画面が表示されるでしょう。
また、/home/kusanagi/inoccu_com/DocumentRoot
にお馴染みのコードのphpinfo.phpファイルなどを作成してアクセスしてみると、PHPが動作していることも確認できるでしょう。
<?php phpinfo(); ?>
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起動時にはエラーが出ると思います。でも、ちゃんと起動していて動作もするようです。
初回起動後は、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.Salt
やdatabase.php
の設定など、CakePHPで定番の設定を行えば、CakePHPが動作するようになります。