SOFTELメモ

</> 技術者募集

Windows Subsystem for Linux で開発環境

問題

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

関連するメモ

コメント