SOFTELメモ Developer's blog

Windows Subsystem for Linux で開発環境

2017/11/11 develop

問題

Windows Subsystem for Linux(Bash on Ubuntu on Windows)でLAMPで開発できる環境を作る。

Ubuntuは16.04で。

Bash on Ubuntu on Windows

答え

インストール

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

関連するメモ

コメント