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