WindowsのWSL(Windows Subsystem for Linux)でUbuntuを動かす場合、実際には開発用途などで使うことが多い。Visual Studio CodeでWebアプリケーションの開発を行い、WebサーバをUbuntuで動かすといったケースだ。
今回はそうしたケースの基本として、UbuntuでWebサーバを動かしてWindowsからアクセスする場合のとっかかりを紹介する。この辺りを押さえておくと、いろいろ応用が効くようになる。
Ubuntuを起動
Ubuntuを起動する。スタートメニューから「Ubuntu on Windows」を選択すればよい。
「Ubuntu on Windows」を選択すると、上のようなターミナルアプリケーションが起動してくる。ここでUbuntuのコマンドを実行する。
ローカルにWebサーバがほしい
まずは、何も考えずにWebブラウザから「http://127.0.0.1/」にアクセスする。WindowsでもUbuntuでもWebサーバを運用していなければ、次のようにWebブラウザにはエラーが表示される。
Windowsで直接Webサーバを運用すると、上記のアクセスによりWebページが表示されるようになる。これがWSLで動作するUbuntuにおいても適用される仕組みになっており、UbuntuでWebサーバを走らせておくと、「http://127.0.0.1/」のようにローカルにアクセスする方法でUbuntu上のWebサーバにアクセスできる。これがなかなかに便利で強力だ。
Webサーバのインストールと実行
今回は、Ubuntuで動かしているWebサーバにWindowsからアクセスできることを確認してみよう。まず、次のようにaptコマンドを実行してWebサーバをインストールする。インストールするWebサーバはなんでもよいのだが、ここではnginxをインストールして試用する。
Ubuntu on WSLにWebサーバ(nginx)をインストール
sudo apt install nginx
Webサーバはインストールしただけでは動作しない。本来は設定を行うのだが、最初はデフォルトのままでよいと思う。まず、次のようにserviceコマンド経由でインストールしたnginxを起動する。
Webサーバ(nginx)を起動
sudo service nginx start
Webサーバ(nginx)を起動したあとで、WindowsからWebブラウザで「http://127.0.0.1/」にアクセスする。今度は次のようにエラーにならずにコンテンツが表示されることを確認できる。
起動したWebサーバ(nginx)は次のコマンドで終了することができる。
Webサーバ(nginx)を終了
sudo service nginx stop
試しに、次のようにWSLで動作しているUbuntuを一旦完全に終了(シャットダウン)してみる。
WSLで動作するUbuntuをシャットダウンするサンプル
wsl --shutdown
この状態で、先ほどと同じようにWebブラウザからWebサーバにアクセスすると次のようになる。
当然ながら、Webサーバが動作していないのでアクセスはエラーになる。
ここでポイントとなるのは、仮想環境で動作しているUbuntu上のWebサーバにアクセスするにあたって、Windowsのローカルを指し示す「127.0.0.1」というIPアドレスが使えている点にある。
通常、仮想環境にはそれぞれ個別のIPアドレスが割り振られることが多く、WindowsからはそうしたIPアドレスを使ったアクセスが行われる。WSL (正確にはWSL verion 2)も仮想環境でLinuxを動作させる技術なので同じ状況になるのだが、WSLではこの部分のアクセスが「127.0.0.1」というローカルアドレスで行えるようになっている。まるでWindowsで直接動作しているかのように利用できる。
Linuxのサーバがローカルで動いているかのような挙動が便利
デスクトップ(ワークステーション)として使われることの多いWindowsに対し、Linuxはサーバを運用するオペレーティングシステムや、アプライアンスやIoTデバイスのオペレーティングシステムとして使われることが多い。さまざまなサーバを動作させることができ、インストールもセットアップも簡単で、提供されているドキュメントやナレッジ集も多い。
先ほど示した例のように、WSLで動作するUbuntuで動作するサーバは、Windowsで直接動いているかのように振る舞うことができる。これはUbuntu/WSLを利用する大きな利点だ。これまでは仮想環境であったり物理マシンにLinuxサーバをセットアップしておく必要があったが、Ubuntu/WSLであればローカルの環境で同じことが行える。
参考
- Windows Subsystem for Linux Documentation | Microsoft Docs
- What is Windows Subsystem for Linux | Microsoft Docs
- Install Linux on Windows with WSL | Microsoft Docs
- Basic commands for WSL | Microsoft Docs
- Run Linux GUI apps with WSL | Microsoft Docs
- Get started using VS Code with WSL | Microsoft Docs
- Set up Node.js on WSL 2 | Microsoft Docs
- Advanced settings configuration in WSL | Microsoft Docs
- Add or connect a database with WSL | Microsoft Docs
- Comparing WSL 1 and WSL 2 | Microsoft Docs
- Manual installation steps for older versions of WSL | Microsoft Docs
- Set up a WSL development environment | Microsoft Docs
- Install Linux Subsystem on Windows Server | Microsoft Docs
- Troubleshooting Windows Subsystem for Linux | Microsoft Docs
- FAQ's about Windows Subsystem for Linux | Microsoft Docs