이번 프로젝트에서는 이전에 만든 파이썬 로직을 사용해야해서 파이썬 웹서버를 만드려고 했다.
다시 오랜만에 만지는 웹서버 세팅에 며칠을 소비했다.
하지만... 중꺽마
정말 며칠간 조금씩 시간을 내서 했다.
그 과정을 기록한다.
간단하게 해결된 부분은 간단하게 적고, 애먹은 포트포워딩 부분을 잘 기록하고 싶다.
1. 라즈베리파이 리셋
라즈베리파이를 이전에 사용하고 있었지만, 더 이상 사용하지 않아서 리셋을 했다.
구글링 해보면 잘 나오고, 아래 사이트에서 다운로드 받아서 진행할 수 있다.
https://www.raspberrypi.com/software/
2. Fast API 설치
아래 Fast API 홈페이지에서 볼 수 있다.
https://fastapi.tiangolo.com/ko/
설치
pip install fastapi
예제
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
실행
uvicorn main:app --reload
이 부분에서 잘 되지 않았는데, 라즈베리 파이라서 그런가, 파이썬 내에서 실행하는 명령어라 그런지, 앞에 python3 명령어를 붙여주고 실행했다.
python3 -m uvicorn main:app --reload
3. NGINX 설치 및 설정
설치
sudo apt install nginx
설정
설정하기 위해 먼저 아래 경로로 들어간다.
여기에서 설정을 먼저 해주고, 나중에 sites-enable 폴더로 복사를 해준다.
이를 심볼릭 링크를 생성해준다고 하더라.
cd /etc/nginx/sites-available/
그리고 편집기로는 내가 사용하기 편한 nano를 사용했다. vi, vim 등 다양하다.
파일이 생성되어 있지 않더라도 아래 명령어를 통해 생성&편집을 같이 할 수 있다.
sudo nano fastapi.conf
기존 default라는 파일이 있는데, 이는 건들지 않았다.
그리고 아래와 같이 내용을 작성했다.
listen: 내가 사용할 포트 번호, 웹의 기본 포트는 80이어서 바로 이동할 수 있도록 했다.
추가로 ssh의 기본 포트는 22, 다른 기본 포트도 있다. (접기/펼치기 참고)
그리고 server_name에는 내 도메인이나 (ex. emessell.com) IP를 넣는다.
IP 찾는 방법은 검색하기
location / 은 웹에 접속할 때 path 없이 제일 default 인 값으로 / 루트 path로 들어간다면 이동하게 될 때를 설정한다.
따라서 /write 같이 쓰면 그에 따른 설정을 할 수 있다.
그 안에는 include proxy_params; 이건 무슨 용도인지 모르고 썼다. 기본일 것 같아서.
그리고 proxy_pass는 이 IP, 도메인, PORT, location을 타고 따라 들어온 사용자를 어디로 pass 할 것인지 적는 곳이다.
이 서버의 localhost 8000번 포트로 보내겠다는 것이다.
8000번은 위에서 FAST API를 실행시킨 포트이다.
server {
listen 80;
server_name {내 IP};
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
그리고 심볼릭 링크 생성
sudo ln -s /etc/nginx/sites-available/fastapi.conf /etc/nginx/sites-enable/fastapi.conf
그리고 재실행
sudo systemctl restart nginx
이렇게 되면 내 컴퓨터 및 라즈베리 파이에서 할 수 있는 설정은 끝.
'기타 개발관련' 카테고리의 다른 글
[BBOX] BBOX란 무엇일까? (0) | 2023.07.24 |
---|---|
Ubuntu, MySQL - 'Failed with result 'oom-kill' 에러 해결 방법 (0) | 2023.07.21 |
[Docker] Docker 실행 후 바로 종료될 때 (0) | 2022.11.11 |
[Git] 기본적인 Git flow 흐름도 (0) | 2022.10.22 |
[RaspberryPi] Maria DB 설정 (0) | 2022.09.20 |
댓글