WSL2でsystemdを有効化する入門|NginxをWindowsで起動・停止するsystemctlハンズオン

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > WSL2でsystemdを有効化する入門|NginxをWindowsで起動・停止するsystemctlハンズオン
TITLE: WSL2でsystemdを有効化する入門|NginxをWindowsで起動・停止するsystemctlハンズオン BASENAME: wsl2-systemd-nginx-intro CATEGORY: 【Linux入門】初心者のための基礎知識・講座 CATEGORY_ID: 31 TAGS: Linux,Linux入門,WSL2,systemd,Nginx,初心者 KEYWORDS: WSL2 systemd 有効化 nginx systemctl EXCERPT: WSL2でsystemdを有効化する手順と、NginxをsystemctlコマンドでWindows上から起動・停止する方法を解説します。/etc/wsl.confの設定からWindowsブラウザでの動作確認まで、完全初心者でも実践できます。 IMAGE_PROMPT_1: 16:9のフラットイラスト。濃いグレー(#333)背景。中央にWindowsのロゴとLinuxのターミナル画面、小さなペンギンアイコンが組み合わさったフラットベクター風の構成。企業向けシンプルデザイン。テキストや文字は一切含めないこと。 IMAGE_TEXT_1_LINE1: WSL2でsystemdを有効化する方法 IMAGE_TEXT_1_LINE2: NginxをWindowsから起動する入門ハンズオン IMAGE_PROMPT_2: 16:9のフラットイラスト。濃いグレー(#333)背景。ブラウザウィンドウのアイコンとサーバーアイコンを矢印でつないだシンプルな構成。Webサーバーへのアクセスをイメージするフラットベクター風。テキストや文字は一切含めないこと。 IMAGE_TEXT_2_LINE1: NginxをインストールしてWebサーバーを起動する IMAGE_TEXT_2_LINE2: WindowsブラウザからLinuxサーバーに接続 IMAGE_PROMPT_3: 16:9のフラットイラスト。濃いグレー(#333)背景。チェックリストのアイコンとターミナル画面、完了マークが並ぶフラットベクター風。テキストや文字は一切含めないこと。 IMAGE_TEXT_3_LINE1: systemctlコマンド一覧 IMAGE_TEXT_3_LINE2: サービス管理の基本コマンドまとめ 「WSL2でsystemctlを使おうとしたら、System has not been booted with systemd as init system と表示されてしまった」
「Nginxをインストールして起動したいのに、systemctlコマンドが使えない」

このエラーの原因は一つです。WSL2のデフォルト設定では、systemdが無効になっています。でも、たった3行の設定変更で解決できます。

この記事では、WSL2でsystemdを有効化する具体的な手順を解説し、実際にNginxをインストールしてsystemctlコマンドで起動・停止するところまでをハンズオン形式で体験します。WindowsのブラウザでLinuxが動かすWebページが表示される瞬間を、初めて体験してみましょう。

この記事のポイント

・WSL2のsystemdは /etc/wsl.conf に [boot] systemd=true を追記して有効化する
・wsl --shutdown で一旦終了して再起動するとsystemdが利用可能になる
・sudo apt install nginx と systemctl start nginx で即座にWebサーバーが起動する
・Windows側のブラウザで http://localhost にアクセスするとNginxの画面が表示される


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

WSL2とsystemdの関係|なぜデフォルトで無効なのか

WSL2は「Windows上でLinuxカーネルを動かす」技術ですが、通常のLinuxサーバーとは少し構造が異なります。

通常のLinux(VPSや実機)では、OSが起動するとすぐに systemd(システムとサービスを管理するプログラム)が立ち上がります。systemdがいることで、systemctl start nginx のようにサービスを管理できます。

一方、WSL2はWindowsから起動する関係上、以前はsystemdをそのまま動かすことができませんでした。2022年以降のWSL(バージョン0.67.6+)から、設定ファイルで有効化できるようになっています。

systemdが無効な状態では、Nginxなどのサービスを service nginx start という旧来の書き方で起動することは可能ですが、systemctl を使うとエラーになります。有効化すると、VPSや本番サーバーと同じ操作感でLinuxを練習できます。
状態 使えるコマンド 特徴
systemd無効(デフォルト) service nginx start 旧来の書き方。一部のサービスは動かない
systemd有効 systemctl start nginx 本番サーバーと同じ操作感で練習できる

WSL2でsystemdを有効化する手順

1. WSLのバージョンを確認する

まず、お使いのWSLがsystemdに対応しているか確認します。

Windowsのスタートボタンを右クリックして「PowerShell」または「ターミナル」を開き、以下を実行します。

# WSLのバージョンを確認する wsl --version

以下のような出力が表示されれば対応しています。WSL バージョンが 0.67.6 以上、かつ Windows 11(または Windows 10 Build 19041以降)が必要です。

WSL バージョン: 2.2.4.0 カーネル バージョン: 5.15.153.1-2 WSLg バージョン: 1.0.61

バージョンが古い場合は wsl --update を実行してWSLを最新版に更新してください。

2. /etc/wsl.conf を設定する

次に、WSL2の設定ファイルを作成・編集します。WSL2のターミナル(Ubuntuなど)を開き、以下を実行します。

# /etc/wsl.conf をエディタで開く(ファイルが存在しない場合は新規作成される) sudo nano /etc/wsl.conf

エディタが開いたら、以下の内容を入力します。すでに内容がある場合は、末尾に追記してください。

[boot] systemd=true

入力が終わったら Ctrl+O(保存)→ EnterCtrl+X(終了)の順に押してnanoを閉じます。

3. WSL2を完全に終了して再起動する

設定を反映するには、WSL2を一度完全に終了する必要があります。

【注意】 wsl --shutdown を実行すると、WSL2上で動いているすべてのプロセスが終了します。作業中のファイルは必ず保存してから実行してください。

Windowsの「PowerShell」または「ターミナル」を開き、以下を実行します。

# すべてのWSL2インスタンスを停止する wsl --shutdown

その後、スタートメニューからUbuntuなどのWSL2ディストリビューションを再度起動します。起動直後はsystemdの初期化に数秒かかる場合があります。

4. systemdが動いているか確認する

WSL2を再起動したら、systemdが起動しているか確認しましょう。

# systemdの状態を確認する systemctl status

以下のような出力が表示されれば成功です。State: running または State: degraded と表示されていればsystemdは動いています。

# 実行例(一部抜粋) State: running Units: 219 loaded (incl. 3 active) Jobs: 0 queued Failed: 0 units

NginxをインストールしてsystemctlでWebサーバーを動かす

systemdが有効になったら、実際にNginx(ウェブサーバー)をインストールして、Windowsのブラウザからアクセスするまでを体験します。

1. aptコマンドでNginxをインストールする

Nginxのインストールは、パッケージマネージャーのaptコマンド一行で完了します。

# パッケージ情報を最新の状態に更新する sudo apt update # Nginxをインストールする sudo apt install -y nginx

インストールが完了すると、Nginxがシステムに登録されます。インストール直後の時点では、Nginxはまだ起動していません。

2. systemctlでNginxを起動する

インストールが完了したら、systemctlコマンドでNginxを起動します。

# Nginxを起動する sudo systemctl start nginx # Nginxの状態を確認する sudo systemctl status nginx

正常に起動すると、以下のような出力が表示されます。Active: active (running) と表示されていれば起動成功です。

# 実際のsystemctl status nginx 出力例 nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2026-07-20 09:15:32 JST; 8s ago Docs: man:nginx(8) Main PID: 1234 (nginx) Tasks: 2 (limit: 9321) Memory: 3.5M CPU: 12ms CGroup: /system.slice/nginx.service |-1234 "nginx: master process /usr/sbin/nginx -g daemon on;" `-1235 "nginx: worker process"

3. WindowsのブラウザからNginxにアクセスする

Nginxが起動したら、WindowsのChromeやEdgeなどのブラウザを開き、アドレスバーに以下を入力してEnterキーを押します。

・アドレスバーに入力: http://localhost

「Welcome to nginx!」という文字が表示されれば、WSL2上のLinuxがWebサーバーとして動いていることが確認できます。

もし表示されない場合は、WSL2のIPアドレスを確認して試してみてください。

# WSL2に割り当てられたIPアドレスを確認する hostname -I # 出力例: 172.25.xxx.xxx # またはipコマンドで確認する ip addr show eth0 | grep "inet " # 出力例: inet 172.25.xxx.xxx/20 brd 172.25.xxx.xxx scope global eth0

IPアドレスが分かったら、ブラウザのアドレスバーに http://172.25.xxx.xxx(実際のIPアドレスに置き換えてください)と入力して確認してみましょう。

4. systemctlでNginxを停止・自動起動設定する

起動の確認ができたら、停止・再起動・自動起動の設定も練習しましょう。

# Nginxを停止する sudo systemctl stop nginx # Nginxを再起動する(設定変更後に使う) sudo systemctl restart nginx # Nginxを自動起動設定する(WSL2起動時に自動でNginxが起動するようになる) sudo systemctl enable nginx # 自動起動の設定を解除する sudo systemctl disable nginx

enable を設定しておくと、次回WSL2を起動したときに自動でNginxが立ち上がります。本番サーバーでの操作と同じ手順なので、実務に直結する感覚が身につきます。

systemctlの基本コマンド一覧

Nginx以外のサービスでも使う、systemctlの基本コマンドをまとめます。
やりたいこと コマンド
サービスを起動する sudo systemctl start サービス名
サービスを停止する sudo systemctl stop サービス名
サービスを再起動する sudo systemctl restart サービス名
サービスの状態を確認する sudo systemctl status サービス名
自動起動を有効にする sudo systemctl enable サービス名
自動起動を無効にする sudo systemctl disable サービス名
systemd全体の状態を確認する systemctl status

トラブルシュート|よくあるエラーと対処法

「System has not been booted with systemd as init system」エラーが出る場合

systemdが有効化されていない場合に出るエラーです。以下の手順で確認してください。

確認1: /etc/wsl.conf の内容を確認する

cat /etc/wsl.conf # 以下のように [boot] と systemd=true が両方含まれているか確認する # [boot] # systemd=true

確認2: wsl --shutdown を実行してWSL2を完全に終了したか確認する
確認3: WSLのバージョンが 0.67.6 以上か確認する(wsl --version で確認)

これらを確認して再度起動しても解決しない場合は、Windowsを再起動してから試してみてください。

「Active: failed」が表示されてNginxが起動しない場合

ポート80が既に使用中の場合に起きることがあります。

# 80番ポートを使っているプロセスを確認する sudo ss -tlnp | grep :80 # 出力例(別のプロセスが使用中の場合) LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("apache2",pid=xxx,fd=6))

別のWebサーバー(Apache2など)が先にポート80を使っている場合は、そちらを停止するか、Nginxのポートを変更する必要があります。

# apache2が原因の場合は停止する sudo systemctl stop apache2 # その後、Nginxを再度起動する sudo systemctl start nginx

また、エラーの詳細はjournalctlコマンドで確認できます。

# Nginxのエラーログを確認する sudo journalctl -u nginx --no-pager -n 20

本記事のまとめ

WSL2でsystemdを有効化するポイントをまとめます。
手順 内容
1. バージョン確認 wsl --version でWSLが0.67.6以上か確認する
2. 設定ファイル編集 /etc/wsl.conf に [boot] systemd=true を追記する
3. WSL2再起動 PowerShellで wsl --shutdown を実行し、再度起動する
4. systemd確認 systemctl status で State: running を確認する
5. Nginxインストール sudo apt install -y nginx でインストールする
6. サービス起動 sudo systemctl start nginx で起動する
7. ブラウザ確認 Windowsのブラウザで http://localhost にアクセスする
systemdを有効化することで、WSL2が「本物のLinuxサーバー」に近い環境になります。VPSや本番サーバーで使う systemctl コマンドをWindows環境で何度でも練習できるので、実務に直結するLinuxの感覚が身につきます。

次のステップとして、Nginxの設定ファイルを書き換えてバーチャルホストを設定したり、MySQLをsystemctlで管理したりすることで、Linuxサーバー管理の実践的なスキルが着実に積み上がっていきます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

次に読む記事

WSL2でのサービス管理をさらに深く学ぶための関連記事です。

systemctlコマンドの使い方|サービスの起動・停止・自動起動設定
journalctlコマンドでsystemdのログを確認する方法|日時指定・ユニット絞り込み・リアルタイム監視も
tail -fコマンドでログをリアルタイムに監視する方法|grepフィルタやローテーション対策も
curlコマンドでHTTP通信を行う方法|GET・POSTやヘッダー確認も
ssコマンドでソケット情報を確認する方法|LISTEN・ESTABの見方やポート確認も
nginxコマンドの使い方|インストールから設定・バーチャルホスト・リバースプロキシまで
firewall-cmdコマンドでポートを開放・管理する方法|ゾーン・サービス・永続化の使い分け

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。