웹사이트 검색

Ubuntu 22.04에서 Nginx 및 Gunicorn과 함께 Flask를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

이 페이지에서

  1. 전제 조건
  2. 새 사용자 설정
  3. 패키지 종속성 설치
  4. 개발 환경 설정\n
  5. 가상 환경에 Python Flask 설치\n
  6. Flask로 첫 번째 앱 프로젝트 만들기\n
  7. Gunicorn 설정
  8. Gunicorn 및 Supervisor로 Flask 애플리케이션 실행\n
  9. Nginx를 Flask 애플리케이션의 역방향 프록시로 설정\n
  10. 결론

Flask는 최신 웹 애플리케이션 및 API(Application Programming Interface) 개발을 위해 Python으로 작성된 마이크로프레임워크입니다. Werkzeug 툴킷과 Jinja2 템플릿을 기반으로 합니다. Flask는 복잡한 아키텍처를 사용하는 대신 코드가 적기 때문에 코어 확장이 쉽고 배우기 쉬운 작은 웹 프레임워크입니다. Flask는 ORM을 포함하지 않지만 여전히 URL 라우팅 및 템플릿 엔진과 같은 멋진 기능을 가지고 있습니다.

Gunicorn 또는 "Green Unicorn"은 프리포크 작업자 모드가 있는 WSGI HTTP 서버입니다. Rubys Unicorn 프로젝트에서 포팅되었습니다. Gunicorn은 여러 웹 프레임워크와 결합할 수 있으며 서버 리소스가 가볍고 빠릅니다. Gunicorn은 애플리케이션과 웹 서버 사이에 있으므로 Gunicorn을 Nginx 및 Apache2와 같은 웹 서버와 페어링할 수 있습니다.

이 게시물에서는 Ubuntu 22.04 시스템에서 Gunicorn 및 Nginx를 사용하여 Python Flask 웹 프레임워크를 설치하고 구성하는 방법을 보여줍니다. 이 자습서에서는 Gunicorn 및 Supervisord를 사용하여 Python Flask를 설정하는 방법도 다룹니다.

전제 조건

이 가이드에는 다음 전제 조건이 필요합니다.

  • Ubuntu 22.04 시스템 - Ubuntu 22.04 Desktop 또는 Server를 사용할 수 있습니다.\n
  • 루트 사용자 또는 루트가 아닌 사용자.

새 사용자 설정

첫 번째 단계에서는 개발 환경 Python Flask 웹 프레임워크에 대한 새 사용자를 설정합니다. 루트/sudo 권한이 있는 루트가 아닌 사용자가 이미 있는 경우 이 단계를 건너뛸 수 있습니다. 이 사용자는 Python Flask 애플리케이션을 실행하는 데 사용됩니다.

이 예에서는 이름이 "james"인 새 사용자를 생성합니다. 다음 명령을 실행하여 새 사용자 "james"를 만들고 사용자 "james"의 암호를 설정합니다. 강력한 암호를 사용하십시오.

sudo useradd -m -s /bin/bash james
sudo passwd james

다음으로 아래 명령을 사용하여 사용자 "james"를 "sudo" 그룹에 추가합니다. 이렇게 하면 새 사용자 "james"가 "sudo su" 명령을 실행하고 루트 관리자 권한을 얻을 수 있습니다. 패키지 설치 및 시스템 구성 설정에 필요합니다.

sudo usermod -aG sudo james

마지막으로 "james" 사용자로 로그인하고 "sudo su" 명령을 실행하여 새 사용자를 확인하고 확인하여 루트 권한을 얻습니다. "james" 사용자의 암호를 입력하면 루트 셸을 얻게 됩니다. 현재 셸이 "[email "에서 변경됩니다.

su - james
sudo su

이제 "Ctrl+d"를 누르거나 "exit"를 입력하여 루트가 아닌 사용자 "james"로 돌아갑니다.

패키지 종속성 설치

이제 Python Flask 설치를 위한 일부 패키지 종속성을 설치하게 됩니다. 여기에는 "python3-pip" 및 "python3-venv"가 포함됩니다. 마지막으로 Nginx 웹 서버와 감독자도 설치하게 됩니다.

패키지 설치를 시작하기 전에 아래의 apt 명령을 실행하여 패키지 저장소를 업데이트하고 새로 고치십시오.

sudo apt update

이제 다음 명령을 사용하여 python3-pip 및 python3-venv를 설치합니다. python3-pipPython 패키지의 패키지 관리자로 사용되고 python3-venv는 Flask 애플리케이션 개발을 위한 가상 환경을 만드는 데 사용됩니다.

sudo apt install python3-pip python3-venv

설치를 확인하려면 Y를 입력하고 계속하려면 ENTER를 누르십시오. 설치가 시작됩니다.

설치가 완료되면 다음 명령을 실행하여 Ubuntu 시스템에서 기본 Python을 설정합니다.

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

이제 Python 및 Pip의 버전을 확인하고 다음 명령을 실행하여 Python venv 모듈도 확인합니다. 다음 예제에서는 Python 3.10을 사용하여 Python Flask 웹 프레임워크를 설치합니다.

python --version
pip --version
python -m venv -h

다음으로 다음 apt 명령을 실행하여 Nginx 웹 서버 및 감독자 패키지를 설치합니다. Nginx 웹 서버는 Python Flask 웹 프레임워크의 기본 웹 서버로 사용되며 관리자는 Flask 프로세스 시작 및 중지와 같은 Flask 애플리케이션 제어에 사용됩니다.

sudo apt install nginx supervisor

설치를 확인하려면 Y를 입력하고 계속하려면 ENTER를 누르십시오. 패키지 설치가 완료될 때까지 기다리십시오.

개발 환경 설정

이 섹션에서는 Python Flask 웹 프레임워크의 개발 환경으로 사용될 새로운 Python 가상 환경을 생성합니다.

다음 명령을 실행하여 새 프로젝트 디렉터리 "/var/www/myapp"를 만듭니다. 이 디렉토리는 FLask 애플리케이션의 기본 프로젝트 디렉토리로 사용됩니다.

sudo mkdir -p /var/www/myapp

새 디렉터리의 소유권을 사용자 "james"로 변경하고 아래 명령을 사용하여 권한을 "755"로 변경합니다.

sudo chown -R james:james /var/www/myapp
sudo chmod 755 /var/www/myapp

프로젝트 디렉터리 "/var/www/myapp"로 이동하고 다음 명령을 사용하여 이름이 "myenv"인 새 Python 가상 환경을 만듭니다.

cd /var/www/myapp
python -m venv myenv

마지막으로 다음 명령을 사용하여 가상 환경 "myenv"을 활성화합니다. 활성화되면 셸 프롬프트가 "(myenv) [email "처럼 됩니다.

source myenv/bin/activate

가상 환경에 Python Flask 설치

가상 환경을 설정한 후 아래의 pip 명령을 실행하여 가상 환경에 Python Flask 및 Gunicorn을 설치할 수 있습니다. 이 모든 패키지는 PyPi Python 저장소에서 설치됩니다.

pip install flask gunicorn

이제 설치가 시작됩니다.

Flask로 첫 번째 앱 프로젝트 만들기

이제 Python Flask 웹 프레임워크를 설치했습니다. 이제 Flask를 사용하여 첫 번째 애플리케이션을 만들 것입니다.

Flask 프로젝트를 만들기 전에 주 프로젝트 디렉토리 "/var/www/myapp"에 있고 가상 환경 "myenv"이 활성화되어 있는지 확인하십시오. .

nano 편집기를 사용하여 새 파일 "myapp.py"을 만듭니다.

nano myapp.py

이제 다음 Python 스크립트를 파일에 추가합니다.

# myapp.py
from flask import Flask, render_template  # importing the render_template function

app = Flask(__name__)
# route to index page
@app.route("/")
def hello():
    return render_template('index.html')

if __name__ == ' __main__':
    app.run(debug=True)

완료되면 파일을 저장하고 닫습니다.

그런 다음 새 디렉토리 \templates\를 만들고 \template\ 안에 새 파일 \index.html\을 만듭니다. 디렉토리.

mkdir -p templates/
nano templates/index.html

다음 HTML 스크립트를 추가하십시오.

<html>
    <body>
        <h1><center>Hello World!</center></h1>
    </body>
</html>

완료되면 파일을 저장하고 닫습니다.

마지막으로 "myapp.py" 스크립트를 실행하여 첫 번째 Flask 애플리케이션을 실행합니다.

python myapp.py

Flask 프로젝트가 포트 5000을 사용하여 기본 로컬 호스트에서 실행되고 있음을 알 수 있습니다.

Ubuntu 시스템의 새 터미널 셸을 열고 아래 curl 명령을 실행합니다.

curl http://127.0.0.1:5000/

이제 다음 스크린샷에서 index.html 페이지의 출력을 볼 수 있습니다.

Flask 애플리케이션 프로세스를 종료하려면 "Ctrl+c" 버튼을 누르면 됩니다.

Gunicorn 설정

Gunicorn 또는 \Green Unicorn\은 HTTP 서버용 Python 웹 서버 게이트웨이 인터페이스입니다. HTTP 프로세스로 또는 sock 파일을 사용하여 Python 애플리케이션을 실행할 수 있습니다. 이제 Gunicorn을 Flask 프로젝트에 추가합니다.

Flask 프로젝트 디렉토리 내에서 nano 편집기를 사용하여 "wsgi.py" 새 파일을 만듭니다.

nano wsgi.py

다음 스크립트를 추가하십시오.

# import myapp Flask application
from myapp import app

if __name__ == "__main__":
    app.run(debug=True)

완료되면 파일을 저장하고 닫습니다.

다음으로 다음 명령을 실행하여 Gunicorn을 사용하여 Flask 프로젝트를 시작하고 실행합니다. 이 예에서 Flask 프로젝트는 포트 8000의 공용 IP 주소에서 실행됩니다.

gunicorn -w 4 --bind 0.0.0.0:8000 wsgi:app

웹 브라우저를 열고 포트 8000으로 Ubuntu 시스템 IP 주소(예: http://192.168.5.28:8000/)를 입력합니다. 그리고 Flask 프로젝트의 인덱스 페이지가 표시되어야 합니다.

이제 "Ctrl+c"를 눌러 Guncorn 프로세스를 종료하십시오.

Gunicorn 및 Supervisor로 Flask 애플리케이션 실행

이제 FLask 프로젝트용 Gunicorn을 구성했습니다. 이제 Flask 웹 프레임워크용 Supervisor를 설정할 때입니다.

감독자는 한 곳에서 프로세스를 제어할 수 있는 프로세스 관리입니다. 따라서 Flask 애플리케이션을 시스템 서비스로 실행하는 대신 Supervisor를 사용하게 됩니다.

nano 편집기를 사용하여 새 구성 파일 "/etc/supervisor/conf.d/myapp.conf"을 만듭니다.

sudo nano /etc/supervisor/conf.d/myapp.conf

파일에 다음 구성을 추가합니다. 그리고 구성 및 사용자의 세부 경로를 반드시 변경하십시오.

이 구성을 사용하면 Gunicorn과 함께 Flask 프로젝트를 실행하게 되며, 애플리케이션에 IP 주소를 사용하는 대신 양말 파일처럼 Flask 프로젝트를 실행하게 됩니다.

[program:myapp] 
command=/bin/bash -c 'source /var/www/myapp/myenv/bin/activate; gunicorn -w 3 --bind unix:/var/www/myapp/ipc.sock wsgi:app'
directory=/var/www/myapp
user=james
group=www-data
autostart=true
autorestart=true
stdout_logfile=/var/www/myapp/myapp.log
stderr_logfile=/var/www/myapp/error.log

완료되면 파일을 저장하고 닫습니다.

이제 아래 명령을 사용하여 감독자 서비스를 다시 시작하여 새로운 변경 사항을 적용하십시오.

sudo systemctl restart supervisor

마지막으로 다음 명령을 사용하여 Supervisor 아래의 프로세스 목록을 확인하고 확인합니다. 실행 중인 "myapp" 프로세스가 표시되어야 합니다.

sudo supervisorctl status

그리고 감독자 서비스를 확인하면 감독자 서비스가 활성화되어 실행되고 있음을 알 수 있습니다.

sudo systemctl status supervisor

Flask 애플리케이션의 역방향 프록시로 Nginx 설정

nano 편집기를 사용하여 새 가상 호스트 구성 "/etc/nginx/sites-available/myapp.conf"을 만듭니다.

sudo nano /etc/nginx/sites-available/myapp.conf

파일에 다음 구성을 추가합니다. 이 예에서 Flask 프로젝트는 로컬 도메인 "www.myapp.local"에서 실행됩니다. 또한 "proxy_pass" 옵션이 Gunicorn 및 Supervisor에서 실행 중인 UNIX sock 파일을 가리키는 것을 볼 수 있습니다.

server {
    listen 80;
    server_name www.myapp.local;

    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/myapp/ipc.sock;
    }
}

완료되면 파일을 저장하고 닫습니다.

그런 다음 다음 명령을 실행하여 서버 블록 구성 "myapp.conf"를 활성화한 다음 Nginx 구성을 확인합니다. 오류가 발생하지 않으면 "Syntax OK - test successful"과 같은 출력 메시지가 표시됩니다.

sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/
sudo nginx -t

그런 다음 다음 명령을 사용하여 Nginx 서비스를 다시 시작하여 Nginx 구성에 새로운 변경 사항을 적용할 수 있습니다.

sudo systemctl restart nginx

이제 로컬 컴퓨터에서 nano 편집기를 사용하여 /etc/hosts 파일을 편집합니다.

sudo nano /etc/hosts

아래와 같이 도메인 이름이 "www.myapp.local"인 Ubuntu 머신 IP 주소를 정의합니다.

192.168.5.28 www.myapp.local

파일을 저장하고 닫습니다.

이제 웹 브라우저를 열고 주소 표시줄에 Flask 프로젝트 도메인 이름(예: http://www.myapp.local)을 입력합니다. 그리고 Python Flask 프로젝트의 인덱스 페이지를 가져와야 합니다.

결론

축하합니다! Ubuntu 22.04 시스템에 Gunicorn 및 Nginx와 함께 Python Flask 웹 프레임워크를 성공적으로 설치했습니다. 또한 첫 번째 Python Flask 프로젝트를 만들고, Python 가상 환경을 설정하고, Flask 프로젝트에 대한 Supervisor 프로세스 관리를 설정하는 방법을 배웠습니다.