Windows Subsystem for Linux で開発環境
問題
Windows Subsystem for Linux(Bash on Ubuntu on Windows)でLAMPで開発できる環境を作る。
Ubuntuは16.04で。
答え
インストール
Windows 10 Creators Update を適用しておくと、16.04が使える。
(適用していないと 14.04)
古い環境の削除(Windowsのコマンドプロンプトで)
> lxrun /uninstall
または
> lxrun /uninstall /full
インストール(ストアからUbuntuを探してきてインストールするのでもよいようです)
> lxrun /install
このあとは、一般ユーザーのユーザー名とパスワードを決めるぐらい。
ssh
初期状態で、ホストキーがない。
インストールしてすぐにsshdを起動して接続をしようとすると、パスワードを聞かれても、その先に進めない。
cd /etc/ssh sudo ssh-keygen -t rsa -N '' -f ssh_host_rsa_key
→ /etc/sshに ssh_host_rsa_key, ssh_host_rsa_key.pubが作られる。
設定変更
sudo vim /etc/ssh/sshd_config
UsePrivilegeSeparation を no に設定。
パスワード認証するなら PasswordAuthentication を yes に。
(公開鍵認証にしてもよい)
sshd_configの変更を反映するときはsshサーバー再起動。
sshサーバ起動
sudo /etc/init.d/ssh start
停止
sudo /etc/init.d/ssh stop
リスタート
sudo /etc/init.d/ssh restart
Windowsのsshサーバーが起動していて、22番ポートを使っていることがあるので、その時はサービスの管理からsshのサービスを停止する。
php
phpは7.0。Apacheが2.4だし、fpmを使う予定。
apt install php7.0 php7.0-mysqll php7.0-mbstring php7.0-fpm
mysql
MySQLは5.7が入る
apt install mysql-client mysql-server
apache
Apacheは2.4.18が入る
apt install apache2
VirtualHostの設定などご自由に。
DocumentRootを、Windowsから編集できて、Linuxからでも見えるように、Cドライブのどこかを指定したいときは、/mnt/c/どこか
といった具合に指定するとよい。
apache + php-fpm
Windowsの中のLinuxではポートをlistenさせてくれないようなので、ソケットを使う、
/etc/php/7.0/fpm/pool.d/www.conf では、
listen = 127.0.0.1:9000 しないで
listen = /run/php/php7.0-fpm.sock にしておく。
Apache側も、socketで。
<FilesMatch \.php$> SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost/" </FilesMatch>
起動
service ssh start
service php-fpm start service mysql start service apache2 start
コメント