5.4 KiB
인트라넷 게시판 초보자 가이드
이 프로젝트는 WSL2 Ubuntu + VS Code 환경에서 실행하는 사내 게시판입니다.
중요한 점은, WSL2에서는 앱을 0.0.0.0:8010으로 띄워도 다른 PC가 곧바로 WSL 주소로 접속되지 않을 수 있다는 점입니다.
즉, 내부망 공유를 하려면 아래 2가지가 모두 필요합니다.
- WSL 안에서 FastAPI 서버 실행
- Windows가
8010요청을 받아 WSL의8010으로 전달하도록 설정
1. 이번에 정리된 내용
- 앱은 main.py 에서
0.0.0.0:8010으로 실행됨 - 데이터는
data.db에 저장됨 - WSL2 내부망 공유용 보조 스크립트를
scripts/폴더에 추가함 - Windows
portproxy와 방화벽 규칙 설정용 PowerShell 스크립트를 추가함
2. 폴더 구조
my-intranet-app/
├── main.py
├── requirements.txt
├── data.db
├── static/
├── templates/
│ └── index.html
└── scripts/
├── run_server.sh
├── show_access_info.sh
├── setup_windows_portproxy.ps1
└── remove_windows_portproxy.ps1
3. 왜 다른 PC에서 접속이 안 되었는가
당신의 현재 환경은 WSL2입니다.
WSL2는 Windows 안에 있는 별도 가상 네트워크를 사용합니다. 그래서 아래처럼 동작할 수 있습니다.
- 내 PC 브라우저에서
http://127.0.0.1:8010접속: 됨 - 다른 PC에서
http://WSL-IP:8010접속: 안 될 수 있음
이럴 때는 다른 PC가 Windows 호스트 IP:8010 으로 접속하고,
Windows가 그 요청을 WSL 앱으로 넘겨줘야 합니다.
4. 처음 한 번만 할 설정
프로젝트 폴더로 이동:
cd /home/b17301/my-intranet-app
가상환경 생성:
python3 -m venv .venv
가상환경 활성화:
source .venv/bin/activate
라이브러리 설치:
pip install -r requirements.txt
5. WSL에서 서버 실행
아래 명령으로 실행:
./scripts/run_server.sh
또는 기존처럼:
source .venv/bin/activate
python main.py
내 PC 테스트 주소:
http://127.0.0.1:8010
중요:
- 이제 서버는
reload=False로 실행되므로, 예전처럼 자동 재시작 로그가 반복해서 나오지 않습니다. - 코드를 수정한 뒤 반영하려면 서버를
Ctrl + C로 끄고 다시./scripts/run_server.sh를 실행하면 됩니다.
6. 현재 WSL 쪽 주소 확인
아래 명령 실행:
./scripts/show_access_info.sh
현재 값은 실행 시점마다 달라질 수 있습니다.
- WSL 내부 IP:
./scripts/show_access_info.sh실행 결과를 확인 - Windows와 연결된 주소 추정값:
./scripts/show_access_info.sh실행 결과를 확인
하지만 다른 PC가 접속할 때는 보통 WSL 내부 IP가 아니라 Windows 호스트 IP를 사용해야 합니다.
7. 가장 중요한 설정: Windows 포트 전달
다음 작업은 Windows PowerShell을 관리자 권한으로 열어서 실행해야 합니다.
가장 쉬운 방법은 PowerShell에서 아래 명령을 실행하는 것입니다.
& "\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\setup_windows_portproxy.ps1" -Port 8010
만약 CMD 창만 사용하고 있다면 아래 명령을 그대로 실행하면 됩니다.
"\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\setup_windows_portproxy.cmd"
이 스크립트가 하는 일:
- Windows의
0.0.0.0:8010수신 - 들어온 요청을
현재 WSL IP:8010으로 전달 - Windows 방화벽에서 TCP
8010허용
8. 다른 PC에서 접속할 주소
다른 PC 브라우저에서는 아래처럼 접속합니다.
http://Windows호스트IP:8010
예를 들어 Windows PC의 실제 사내 IP가 192.168.0.25 라면:
http://192.168.0.25:8010
여기서 중요한 점:
- WSL 주소를 다른 PC에 알려주면 안 될 수 있음
- 다른 PC에는 반드시
Windows IP를 알려주는 쪽이 안전함
9. WSL IP가 바뀌면 어떻게 하나
WSL을 재시작하면 내부 IP가 바뀔 수 있습니다. 그럴 때는 아래 순서로 다시 맞추면 됩니다.
- WSL에서
./scripts/show_access_info.sh실행 - 새 WSL IP 확인
- 관리자 PowerShell에서 다시 실행
.\setup_windows_portproxy.ps1 -Port 8010
10. 접속 확인 순서
- WSL에서
./scripts/run_server.sh실행 - 내 PC 브라우저에서
http://127.0.0.1:8010확인 - Windows 관리자 PowerShell에서
setup_windows_portproxy.ps1실행 - 다른 PC에서
http://Windows호스트IP:8010접속
11. 안 되면 확인할 것
- 서버가 실제로 실행 중인지 확인
lsof -i :8010
- 다른 프로그램이
8010을 이미 사용 중인지 확인 - Windows 방화벽 규칙이 생겼는지 확인
- 회사 네트워크에서 사설 포트 접근이 막히지 않았는지 확인
- WSL IP가 바뀌었는지 확인
12. 제거가 필요할 때
관리자 PowerShell에서:
& "\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\remove_windows_portproxy.ps1" -Port 8010
또는 CMD에서는:
"\\wsl$\Ubuntu\home\b17301\my-intranet-app\scripts\remove_windows_portproxy.cmd" 8010
13. 초보자용 한 줄 요약
이 프로젝트는 이제 코드 문제는 해결되어 있고, 내부망 공유의 핵심은 Windows IP:8010 -> WSL 8010 연결을 Windows에서 열어주는 것입니다.