Flask(Python) 사이트/API 온라인 만들기🌐

안녕하세요 여러분, 이전post에서는 Flask를 사용하여 REST API를 만들었습니다. 이제 API를 온라인으로 만드는 방법이 궁금할 것입니다. 따라서 이 게시물에서는 Digital Ocean 서버에서 Flask API를 호스팅할 것입니다.

Digital Ocean에서 서버 생성



따라서 우리는 Digital Ocean의 신규 사용자에게 제공되는 100$ 무료 크레딧을 활용할 것입니다(참고: 이 단계는 다른 클라우드에 서버가 있는 경우 선택 사항입니다).

단계는 다음과 같습니다.

계정이 없으시면 Digital Ocean에 접속하여 신규가입
  • 카드 정보를 입력하여 인간임을 확인하십시오.


  • 생성 메뉴에서 드롭릿을 클릭하여 페이지를 생성하는 드롭릿을 엽니다. 드롭릿이 없는 경우 리소스 탭에 큰 파란색 드롭릿 시작하기 버튼이 표시되어 페이지를 만드는 동일한 드롭릿으로 이동합니다.‌‌


  • 원하는 OS/이미지를 선택하세요. 이 경우에는 Ubuntu 18.04‌‌
  • 를 사용하겠습니다.


  • 필요에 가장 적합한 계획을 선택하십시오. 이 경우에는 18$ 계획을 선택하겠습니다.


  • 시간이 걸린다⏳
  • 물방울이 생성됩니다!
  • SSH에 대해 알아보려면 이 문서Post를 읽으십시오.

  • 기본 플라스크 앱 만들기



    이 코드를 실행합니다pip install gunicorn flask.

    이것은 최소한의 플라스크 앱이며 이름을 wsgi.py로 지정하겠습니다. 원하는 대로 파일 이름을 지정할 수 있습니다.




    • gunicorn --bind 0.0.0.0:8000 wsgi를 실행하여 구성을 테스트할 수 있습니다.
    • Flask를 사용하여 Rest API를 생성하려면 다음을 확인하십시오Post.


    Gurnicorn 구성



    서버에서 SSH를 실행sudo nano /etc/systemd/system/myproject.service하여 프로젝트의 구성 파일을 엽니다.



    그것은 터미널에 편집기를 가져오고 다음을 작성합니다(필요에 따라 편집)




    [Unit]
    Description=Gunicorn instance to serve myproject
    After=network.target
    
    [Service]
    User=user
    Group=nginx
    WorkingDirectory=/home/user/myproject
    Environment="PATH=/home/user/myproject/myprojectenv/bin"
    ExecStart=/home/user/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi
    
    [Install]
    WantedBy=multi-user.target 
    


    • 그런 다음 crtl+c를 눌러 저장하고 crtl+x를 눌러 편집기를 종료합니다
    • .
    • 실행 sudo systemctl start myproject & sudo systemctl enable myproject
    • sudo systemctl status myproject를 실행하여 응용 프로그램의 상태를 확인할 수 있습니다.


    요청을 프록시하도록 Nginx 구성



    <올>
  • sudo apt update sudo && sudo apt-get install nginx를 실행하여 오래된 소프트웨어를 업데이트하고 Nginx를 설치합니다.

  • Nginx가 설치되면 sudo nano /etc/nginx/sites-available/myproject

  • 를 통해 구성 파일을 편집할 수 있습니다.
  • 그런 다음 다음 코드를 구성 파일에 붙여넣습니다.




  • server {
        listen 80;
        server_name your_domain www.your_domain;
    
        location / {
            include proxy_params;
            proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
        }
    }
    


    • 위의 코드는 Nginx가 이전에 생성한 sock 파일에 요청을 프록시하도록 지시합니다
    • .
    • 프로젝트를 Nginx 사이트에 연결하려면 실행sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
    • 이 코드를 실행하여 구성을 테스트합니다sudo nginx -t.
    • 그런 다음 이를 실행하여 Nginx를 다시 시작합니다sudo systemctl restart nginx.
    • UFW를 활성화한 경우 실행합니다sudo ufw allow 'Nginx Full'.
    • http://yourip를 방문하면 앱이 지금 활성화됩니다
    • .


    SSL로 앱 보호



    <올>
  • sudo add-apt-repository ppa:certbot/certbot sudo apt install python-certbot-nginx를 실행하여 certbot 및 Nginx certbot 플러그인을 서버
  • 에 설치합니다.
  • sudo certbot --nginx -d your_domain -d www.your_domain --agree-tos -m [email protected]를 실행하여 certbot
  • 에서 새 인증서를 받습니다.
  • 이와 유사한 출력을 얻을 수 있습니다 👇



  • Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
    -------------------------------------------------------------------------------
    1: No redirect - Make no further changes to the webserver configuration.
    2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
    new sites, or if you're confident your site works on HTTPS. You can undo this
    change by editing your web server's configuration.
    -------------------------------------------------------------------------------
    Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
    


    <올>
  • 원하는 옵션을 선택하세요

  • 다음과 같은 출력이 표시됩니다.




  • IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at:
       /etc/letsencrypt/live/your_domain/fullchain.pem
       Your key file has been saved at:
       /etc/letsencrypt/live/your_domain/privkey.pem
       Your cert will expire on 2018-07-23. To obtain a new or tweaked
       version of this certificate in the future, simply run certbot again
       with the "certonly" option. To non-interactively renew *all* of
       your certificates, run "certbot renew"
     - Your account credentials have been saved in your Certbot
       configuration directory at /etc/letsencrypt. You should make a
       secure backup of this folder now. This configuration directory will
       also contain certificates and private keys obtained by Certbot so
       making regular backups of this folder is ideal.
     - If you like Certbot, please consider supporting our work by:
    
       Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
       Donating to EFF: https://eff.org/donate-le
    


    • (선택 사항) UFW에서 HTTP를 비활성화하려면 실행sudo ufw delete allow 'Nginx HTTP'
    • https://your IP or Your domain를 방문하면 귀하의 사이트는 안전합니다🔒

    좋은 웹페이지 즐겨찾기