WSL2のUbuntuでapacheが起動しない場合の対応策
こんばんわ。
最近20時に寝て2~5時ごろに起きるというおじいちゃん生活をしている、どうもみけぽんです。
WSL2でubuntu環境を構築した場合にapacheが起動しなくなるという問題が起こるので、備忘録としてメモします。
WSL2のUbuntuでapacheが起動しない場合の備忘録
問題
WSL2のubuntu環境でapacheを起動しようとするとエラーが。
$ systemctl restart apache2
System has not been booted with systemd as init system (PID 1).
systemdではなくinitがPID1で実行されいるのが原因だそう。
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 892 584 ? Sl 01:57 0:00 /init
以前もこの問題が起こり、手間だったのでWSL2環境を放置した覚えがあります。
対応策
daemonizeのインストール
debian系に必要なdeamonizeをインストールします。
$ apt install -y daemonize
genieのインストール
2021/5/19現在の最新版は1.42です。
systemd-genie_1.42_amd64.debをダウンロードし、下記コマンドを実行します。
$ apt update
$ apt install -y apt-transport-https
$ apt update
$ apt install -y aspnetcore-runtime-3.1
ダウンロードファイルも実行します。
$ dpkg -i systemd-genie_1.42_amd64.deb
インストールされたはずなので、root権限で下記コマンドを実行するとgenieが起動されます。
$ genie -e
プロセスを確認してみます。
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 175196 13144 ? Ss 03:27 0:00 systemd
PID1がsystemdになりました。
genieを自動で実行するようにする
WSL2起動の度にgenieコマンドを実行するのも手間なので、下記の設定も試してみてください。
genie の 起動方法は簡単で、root権限で
genie -i
を実行するだけです。Windowsへのログオン時に実行するのが望ましいので、タスクスケジューラに登録します。
- スタートメニューを右クリックし、「コンピュータの管理」を選択します
- 「コンピュータの管理」画面から、「タスクスケジューラ」を選択します
- 「操作」メニューから「基本タスクの作成」を選択します
- 名前欄に「genie」を入力して、「次へ」を選択します
- トリガーとして、「ログオン時」を選択して、「次へ」を選択します
- 操作として、「プログラムの開始」を選択して、「次へ」を選択します
- プログラムとして、
C:\Windows\System32\wsl.exe
を、引数として-d Ubuntu-20.04 -- /usr/bin/genie -i
を指定して「次へ」を選択します- 「完了」を押してタスクを登録します