Nginx, Gunicorn 및 Uvicorn을 사용하여 Ubuntu에 FastAPI 애플리케이션 배포
5251 단어 pythonnginxfastapideployment
전제 조건
위의 모든 요구 사항이 충족되었는지 확인한 후 다음 단계로 이동할 수 있습니다. 실제 배포.
지원서 준비
이제 SSH를 통해 서버에 접속하고 애플리케이션을 저장할 디렉토리를 생성하고 탐색합니다.
/var/www/myapp
입니다.$ mkdir /var/www/myapp
$ cd /var/www/myapp
사용자에게 이 디렉토리에 대한 적절한 읽기-쓰기 액세스 권한이 있는지 확인해야 합니다. 이 포스트에서는
virtualenv
를 사용하여 Python 가상 환경을 관리합니다. 당신은 당신이 좋아하거나 선호하는 것을 사용할 수 있습니다. 내부/var/www/myapp
에서 다음을 하나씩 수행해야 합니다.$ virtualenv -p python3.8 venv
$ mkdir src
$ . venv/bin/activate
(venv) $ cd src
src 디렉토리 안에 들어가면 애플리케이션 소스 코드를 그곳으로 가져와야 합니다. 우리의 애플리케이션 소스 코드는
requirements.txt
를 사용하지 않는 한 모든 종속성을 가진 PIPFILE
파일을 포함해야 합니다.(venv) $ git init
(venv) $ git remote add origin <your-repo-url>
(venv) $ git pull origin <your-branch-name>
(venv) $ pip install -r requirements.txt
(venv) $ pip install gunicorn uvicorn
Nginx 구성
이제 애플리케이션을 실행하고 테스트할 준비가 되었습니다. HTTP를 통해 애플리케이션을 제공할 수 있으려면 애플리케이션에 대한 Nginx 구성을 만들어야 합니다.
(venv) $ sudo vim /etc/nginx/sites-available/myapp
해당 파일에 다음을 입력합니다.
server{
server_name <your-site-name>;
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8000;
}
}
이제 파일을 저장하고 종료합니다. 그런 다음
/etc/nginx/sites-enabled
디렉토리에 있는 이 구성 파일에 대한 심볼릭 링크를 만듭니다.(venv) $ sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
그런 다음 Nginx 서비스를 다시 시작합니다.
(venv) $ sudo systemctl restart nginx.service
이제 uvicorn 서버를 시작하여 애플리케이션이 작동하는지 여부를 확인할 수 있습니다.
(venv) $ gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
main:app
대신 응용 프로그램에 맞는 것을 사용할 수 있습니다. 이제 애플리케이션이 실행되고 프록시 서버가 올바르게 구성되었으므로 URL을 방문하여 브라우저에서 애플리케이션을 볼 수 있어야 합니다.ASGI 서버 구성
이제 응용 프로그램이 올바르게 배포 및 구성되었으므로 마지막으로 해야 할 일은 Gunicorn 서버에 대한 서비스를 생성하여 항상 실행되고 서버가 재부팅될 때 자동으로 시작되도록 하는 것입니다. 서비스를 생성하기 위해 사용자
systemd
를 사용할 것입니다.(venv) $ deactivate
$ sudo vim /etc/systemd/system/myapp.service
이 새 파일에 다음을 넣어야 합니다.
[Unit]
Description=Gunicorn instance to serve MyApp
After=network.target
[Service]
User=<username>
Group=www-data
WorkingDirectory=/var/www/myapp/src
Environment="PATH=/var/www/myapp/venv/bin"
ExecStart=/var/www/myapp/venv/bin/gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
[Install]
WantedBy=multi-user.target
자신의 설정에 따라 위치를 수정한 다음 파일을 저장하고 종료합니다.
$ sudo systemctl start myapp.service
그러면 새 서비스가 시작되고 ASGI 서버가 백그라운드에서 실행됩니다.
Reference
이 문제에 관하여(Nginx, Gunicorn 및 Uvicorn을 사용하여 Ubuntu에 FastAPI 애플리케이션 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shuv1824/deploy-fastapi-application-on-ubuntu-with-nginx-gunicorn-and-uvicorn-3mbl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)