WSL 2 (Ubuntu) + nginx 환경 설정
윈도우에서도 WSL 2 환경의 경우 다음과 같이 간단하게 nginx를 설치할 수 있습니다.
$ sudo apt-get install nginx -y
그런데, 리눅스 기준의 매뉴얼대로 서비스를 시작하면 이런 오류가 발생하는데요,
$ sudo systemctl start nginx
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
이것은 "
WSL 2가 기본적으로 systemd 지원"으로 설정돼 있지 않기 때문입니다. 따라서 "/etc/wsl.conf"에 systemd=true 설정을 해도 되겠지만, nginx 설치 시 systemd 환경이 아닌 경우 init.d에 (서비스) 파일이 대신 생성되므로,
$ cat /etc/init.d/nginx
#!/bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
...[생략]...
그냥 service 명령어로 제어하면 됩니다.
$ sudo service nginx start
$ sudo service nginx status
$ sudo service nginx stop
동작 확인을 위해 WSL 2 환경 내에서 curl을 이용하면,
$ curl http://localhost
...[생략: nginx 응답]...
localhost에 대해 정상적으로 응답을 받게 될 것입니다. 반면, WSL을 호스팅하는 윈도우 측에서 curl을 실행하면,
c:\temp> curl http://localhost
...[생략: iis 응답]...
응답이 없거나, IIS를 설치했다면 (nginx가 아닌) IIS로부터 응답을 받게 될 것입니다. 이에 대해서는 전에 설명한 적이 있습니다.
WSL 2의 네트워크 통신 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/13256
따라서, 윈도우 측에서 WSL 2에 설치한 nginx에 요청을 전송하려면 IP를 직접 구해서 사용해야 합니다.
c:\temp> wsl hostname -I
172.19.132.144
c:\temp> curl http://172.19.132.144
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]