Initial intranet dashboard app
This commit is contained in:
@@ -0,0 +1,205 @@
|
||||
# 인트라넷 게시판 초보자 가이드
|
||||
|
||||
이 프로젝트는 `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에서 열어주는 것입니다.
|
||||
Reference in New Issue
Block a user