WSLでWebサーバ運用
Windows 10春のアップデートでWSL (Windows Subsystem for Linux)がバックグラウンドタスクをサポートするようになった。前々回はその基本的な動作を、前回はバックグラウンドタスクを利用してcronを使う方法を取り上げた。今回はバックグラウンドタスクの利用例としてWebサーバ「Nginx」を実行する方法を紹介しようと思う。
Linuxはエッジサーバとしても使われることが多く、当然NginxやApache HTTP Serverが使われることが多い。WebシステムやWebサイトの開発にこれらのサーバを使っているという例も多いだろう。
春のアップデート以降はバックグラウンドタスクが利用できるようになったため、Windows 10上に構築したLinux環境にWebシステムやWebサイトの環境を構築しておき、Windows 10からの開発に利用するといったことができる。開発者目線で見ると、この辺りはかなり便利なところだ。
Nginxサーバセットアップ
これまでずっと運用してきたサーバはApache HTTP Serverが使われているケースが多いと思う。しかし、これから新しくWebシステムを構築するなら、現状はNginxを選んでおくのが良さそうだ。Ubuntu on WSLであれば次のようにNginxをインストールする。
■ Nginxのインストール on WSL
daichi@DESKTOP-DVVLKV9:~$ sudo apt install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
nginx
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,490 B of archives.
After this operation, 37.9 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 nginx all 1.10.3-0ubuntu0.16.04.2 [3,490 B]
Fetched 3,490 B in 0s (4,732 B/s)
Selecting previously unselected package nginx.
(Reading database ... 39483 files and directories currently installed.)
Preparing to unpack .../nginx_1.10.3-0ubuntu0.16.04.2_all.deb ...
Unpacking nginx (1.10.3-0ubuntu0.16.04.2) ...
Setting up nginx (1.10.3-0ubuntu0.16.04.2) ...
daichi@DESKTOP-DVVLKV9:~$
Nginxサーバは、システムにログオンしたらもう動いていてほしい。前回の記事(WSL新機能: バックグラウンドタスク cronを使う方法)を参考に、システムログオン時に自動的にUbuntu on WSLが起動するように設定を行った上で、さらに~/.bash_aliasesファイルに次の設定を追加する(sudoをパスワードなしで実行できるように設定しておく。この設定については前回の記事を参照されたい)。
■ ~/.bash_aliasesファイルに追加する内容
if ! service nginx status > /dev/null 2>&1
then
sudo service nginx start > /dev/null 2>&1
fi
ここまで設定したら一度Windows 10を再起動して動作を確認してみる。次のようにシステムログオン時にすでにUbuntu on WSLが動作しており、nginxプロセスの動作が確認できればオッケーだ。
■システムにログオンしただけですでにnginxが動作している
daichi@DESKTOP-DVVLKV9:~$ ps auxww | grep nginx
root 62 0.0 0.0 56292 0 ? Ss 18:41 0:00 nginx: master pr
www-data 63 0.0 0.0 56612 0 ? S 18:41 0:00 nginx: worker pr
www-data 64 0.0 0.0 56612 188 ? S 18:41 0:00 nginx: worker pr
daichi 124 0.0 0.0 13904 1108 tty2 S 18:43 0:00 grep --color=auto nginx
daichi@DESKTOP-DVVLKV9:~$
WSLで実行しているので、このプロセスはWindows 10からも単一のプロセスとして次のように認識されている。
Linuxを結構ヘビーに使うようになってくると、こんな感じでシステムログオン時にすでに必要な環境が動作している状態になっていると、とても便利だ。
Webサーバの動作を確認
すでにWebサーバが動作しているので、Webブラウザからhttp://127.0.0.1/にアクセスすると次のようにNginxの動作を確認できる。
Nginxの設定をちょっと変更すれば、次のようにNginxからWSLで動作しているLinuxファイルシステム上のファイルを閲覧できるようにもなる。
手持ちのWindows 10 PCやWindows 10ノートPCだけでWebシステム開発が簡単に実施できるというわけである。
応用範囲がグッと広がる
前回と今回でcronおよびNginxをシステムログオン時から自動的に動作させる方法を紹介した。紹介したのはこの2つのソフトウェアだけだが、基本的にはこの方法でほかにもたくさんのソフトウェアを動作させておくことができる。
バックグラウンドで動作させておけるようになると、WSLで動作しているLinuxの応用範囲はグッと広くなる。別途サーバを用意したり仮想環境で動作させたりすることなく、ある程度のことならWSLだけでこなせるようになるだろう。