WSL2のUbuntuでapacheが起動しない場合の対応策

Linux,技術Ubuntu,備忘録,開発環境構築

こんばんわ。

最近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へのログオン時に実行するのが望ましいので、タスクスケジューラに登録します。

  1. スタートメニューを右クリックし、「コンピュータの管理」を選択します
  2. 「コンピュータの管理」画面から、「タスクスケジューラ」を選択します
  3. 「操作」メニューから「基本タスクの作成」を選択します
  4. 名前欄に「genie」を入力して、「次へ」を選択します
  5. トリガーとして、「ログオン時」を選択して、「次へ」を選択します
  6. 操作として、「プログラムの開始」を選択して、「次へ」を選択します
  7. プログラムとして、C:\Windows\System32\wsl.exeを、引数として-d Ubuntu-20.04 -- /usr/bin/genie -iを指定して「次へ」を選択します
  8. 「完了」を押してタスクを登録します

 

参照サイト