데브로그

프로그래밍 팁 그리고 프로그램 사용 방법 등을 공유 합니다.

FastAPISynology

Synology에 FastAPI 설치 및 실행 방법

이번 시간에는 Synology에 FastAPI를 설치하고 실행하는 방법에 대해서 알아보겠습니다.

.

우선 터미널로 Synology에 ssh 접속해서 FastAPI를 설치하겠습니다.

아래 명령어를 통해 ssh 접속을 시도합니다.

$ ssh [synology-account]@[ip-address] -p [ssh-port-number]

.

비밀번호를 입력하고 다음 명령어를 통해 root 권한을 요청합니다.

$ sudo -i

.

비밀번호를 입력하고 다음 명령어를 통해 FastAPI를 설치할 위치로 이동합니다.

$ cd ../../
$ cd volume/public 

.

다음 명령어를 통해 pip를 설치합니다.

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

.

다음 명령어를 사용해서 fastapi를 설치합니다.

$ pip install fastapi

.

그리고 fastapi를 서버에서 실행하기 위해서 다음 명령어를 사용해서 uvicorn[standard]를 설치합니다.

$ pip install "uvicorn[standard]"

.

그리고 다음 명령어를 사용해서 fastapi 폴더를 만들고 fastapi 폴더안으로 이동합니다.

$ mkdir fastapi
$ cd fastapi

.

그리고 다음 명령어를 사용해서 main.py 파일을 만들고 파일을 vi로 열어 수정합니다.

$ touch main.py
$ vi main.py

.

main.py 파일을 다음과 같이 작성합니다. 작성 시작은 “i” 키를 눌러 입력모드 전환 후 시작하고 작성 종료는 “ESC” 키를 눌러 입력모드 종료합니다.

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}

.

그 다음, 입력모드가 종료 되었다면 다음 명령어를 사용해서 main.py 파일을 저장하고 닫습니다.

:wq!

.

그 다음, uvicorn 명령어를 사용해서 fastapi를 실행합니다.

$ uvicorn main:app --reload --host=0.0.0.0 --port=9010

.

그러면 fastapi 서버가 실행됩니다.

시놀로지 DSM에 로그인해서 제어판 > 외부엑세스 > 라우터 구성에서 사용자 지정 포트 9010를 추가해서 외부에서 접속할 수 있도록 설정합니다.

.

제대로 구동되는지 확인하려면 웹브라우저에서 synology-account.synology.me:9010 로 접속해보면

{“message”: “Hello World”} 가 정상적으로 출력되는 것을 확인할 수 있습니다.

.

만약 도메인이 있다고 서브도메인으로 fastapi를 사용하고 싶다면, 도메인 구입한 곳에서 서브도메인을 추가해 줍니다.

유형: CNAME

이름: fastapi

데이터: synology-account.synology.me.

TTL: 1시간

.

다시 Synology DSM으로 역방향 프록시 설정을 해줍니다.

제어판 > 로그인 포털 > 고급 > 역방향 프록시

생성버튼을 클릭하고 다음과 같이 설정하고 저장버튼을 클릭합니다.

.

그리고 SSL 인증서를 추가해 줍니다.

제어판 > 보안 > 인증 > 추가 버튼 클릭

새인증서 추가 > Let’s Encrypt에서 인증서 얻기

도메인 이름: 사용하고자하는 서브도메인을 입력합니다.

이메일: 자신의 이메일을 입력합니다.

주제 대체 이름: fastapi.yourdomain.com; fastapi.synology-account.synology.me;를 입력합니다. 여기서 yourdomain 대시 여러분의 웹사이트 도메일 synology-account 대신 여러분의 QuickConnect ID 를 입력합니다.

그리고 마지막으로 “설정” 버튼을 클릭해서 fastapi.yourdomain.com 서비스에 새로 받은 SSL 인증서를 적용해 줍니다.

.

이렇게 모든 설정이 완료되면 fastapi.yourdomain.com 에서 fastapi 서버가 잘 작동되는 것을 확인할 수 있습니다.

다시 Terminal로 돌아와서 다음 ctrl + z 키를 눌러 현재 서버를 종료하고 다음 명령어를 사용해서 서버가 Terminal을 닫더라도 계속 작동할 수 있도록 백그라운드 실행합니다. 명령어 끝에 “&” 을 사용하면 백그라운드 에서 서버를 실행하며 터미널을 닫더라도 서버가 돌아갑니다.

$ uvicorn main:app --reload --host=0.0.0.0 --port=9010 &

.

대신 이 경우에는 실행되는 PID 값을 찾아서 서버를 종료해야 합니다.

다음 명령어를 사용해서 특정 포트에서 실행되는 프로그램을 찾습니다.

$ netstat -ltnup | grep ":9010"

.

PID 값이 보통 숫자 다섯 자리로 12345/python 이렇게 표시되면 다음 명령어를 사용해서 서버를 종료시킵니다.

$ kill 12345

.

이렇게 Synology에 FastAPI를 설치하고 실행하는 방법에 대해서 알아봤습니다.

감사합니다.

3 thoughts on “Synology에 FastAPI 설치 및 실행 방법

  • I do not even know how I ended up here but I thought this post was great I dont know who you are but definitely youre going to a famous blogger if you arent already Cheers.

    Reply
  • I sincerely appreciated the effort you’ve invested here. The sketch is tasteful, your authored material chic, however, you seem to have developed some uneasiness about what you aim to offer henceforth. Certainly, I shall revisit more regularly, just as I have been doing nearly all the time, should you uphold this climb.

    Reply
  • What a fantastic resource! The articles are meticulously crafted, offering a perfect balance of depth and accessibility. I always walk away having gained new understanding. My sincere appreciation to the team behind this outstanding website.

    Reply

Leave a Reply