웹사이트 검색

Ubuntu VPS에 Flask 애플리케이션을 배포하는 방법


하이라이트의 의미

사용자가 입력하거나 사용자 지정해야 하는 줄은 이 자습서에서 강조 표시됩니다! 나머지는 대부분 복사하여 붙여넣을 수 있어야 합니다.

소개

Flask는 Python으로 작성되고 웹 애플리케이션 개발을 위한 Werkzeug 및 Jinja2 템플릿 엔진을 기반으로 하는 마이크로 프레임워크입니다. 웹 앱을 빠르게 개발하기 위한 것입니다.

설정

VPS에 Apache가 이미 설치되어 실행 중이어야 합니다. 그렇지 않은 경우 Ubuntu에 LAMP 스택 설치에 대한 기사의 1단계를 따르십시오.

1단계 - mod_wsgi 설치 및 활성화

WSGI(Web Server Gateway Interface)는 Python용 웹 서버와 웹 앱 간의 인터페이스입니다. Mod_wsgi는 Apache가 Flask 애플리케이션을 제공할 수 있도록 하는 Apache HTTP 서버 모드입니다.

터미널을 열고 다음 명령을 입력하여 mod_wsgi를 설치합니다.

sudo apt-get install libapache2-mod-wsgi python-dev

mod_wsgi를 활성화하려면 다음 명령을 실행합니다.

sudo a2enmod wsgi 

2단계 - Flask 앱 만들기

이 단계에서는 플라스크 앱을 만듭니다. /var/www 디렉토리에 앱을 배치합니다.

다음 명령을 사용하여 /var/www 디렉토리로 이동합니다.

cd /var/www 

그림과 같이 mkdir을 사용하여 애플리케이션 디렉토리 구조를 만듭니다. "FlaskApp"을 애플리케이션에 지정하려는 이름으로 바꿉니다. 다음 명령을 제공하여 초기 디렉토리 FlaskApp을 생성합니다.

sudo mkdir FlaskApp

다음 명령을 사용하여 이 디렉터리 내로 이동합니다.

cd FlaskApp

다음 명령을 제공하여 다른 디렉터리 FlaskApp를 만듭니다.

sudo mkdir FlaskApp

그런 다음 이 디렉토리 내부로 이동하고 다음 명령을 사용하여 statictemplates라는 두 개의 하위 디렉토리를 만듭니다.

cd FlaskApp
sudo mkdir static templates

이제 디렉토리 구조는 다음과 같아야 합니다.

|----FlaskApp
|---------FlaskApp
|--------------static
|--------------templates

이제 플라스크 애플리케이션 로직을 포함할 __init__.py 파일을 생성합니다.

sudo nano __init__.py 

파일에 다음 논리를 추가합니다.

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello, I love Digital Ocean!"
if __name__ == "__main__":
    app.run()

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

3단계 – Flask 설치

가상 환경을 설정하면 애플리케이션과 해당 종속성이 기본 시스템과 분리됩니다. 이에 대한 변경 사항은 클라우드 서버 시스템 구성에 영향을 미치지 않습니다.

이 단계에서는 플라스크 애플리케이션을 위한 가상 환경을 생성합니다.

pip를 사용하여 virtualenvFlask를 설치합니다. pip가 설치되어 있지 않으면 apt-get을 통해 Ubuntu에 설치합니다.

sudo apt-get install python-pip 

virtualenv가 설치되지 않은 경우 pip를 사용하여 다음 명령을 사용하여 설치합니다.

sudo pip install virtualenv 

다음 명령을 내립니다(여기서 venv는 임시 환경에 지정하려는 이름입니다).

sudo virtualenv venv

이제 다음 명령으로 가상 환경을 활성화하여 해당 환경에 Flask를 설치합니다.

source venv/bin/activate 

내부에 Flask를 설치하려면 다음 명령을 내리십시오.

sudo pip install Flask 

그런 다음 다음 명령을 실행하여 설치가 성공적으로 완료되었고 앱이 실행 중인지 테스트합니다.

sudo python __init__.py 

"Running on http://localhost:5000/\ 또는 "Running on http://127.0.0.1:5000/"이 표시되어야 합니다. 이 메시지가 표시되면 앱을 성공적으로 구성한 것입니다.

환경을 비활성화하려면 다음 명령을 제공하십시오.

deactivate

4단계 – 새 가상 호스트 구성 및 활성화

터미널에서 다음 명령을 실행하십시오.

sudo nano /etc/apache2/sites-available/FlaskApp

참고: 최신 버전의 Ubuntu(13.10+)에는 VirtualHost 파일에 대한 ".conf" 확장자가 필요합니다. 대신 다음 명령을 실행하십시오.

sudo nano /etc/apache2/sites-available/FlaskApp.conf

파일에 다음 코드 줄을 추가하여 가상 호스트를 구성합니다. ServerName을 도메인 또는 클라우드 서버 IP 주소로 변경해야 합니다.

<VirtualHost *:80>
		ServerName mywebsite.com
		ServerAdmin admin@mywebsite.com
		WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
		<Directory /var/www/FlaskApp/FlaskApp/>
			Order allow,deny
			Allow from all
		</Directory>
		Alias /static /var/www/FlaskApp/FlaskApp/static
		<Directory /var/www/FlaskApp/FlaskApp/static/>
			Order allow,deny
			Allow from all
		</Directory>
		ErrorLog ${APACHE_LOG_DIR}/error.log
		LogLevel warn
		CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

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

다음 명령을 사용하여 가상 호스트를 활성화합니다.

sudo a2ensite FlaskApp

5단계 – .wsgi 파일 만들기

Apache는 .wsgi 파일을 사용하여 Flask 앱을 제공합니다. /var/www/FlaskApp 디렉터리로 이동하고 다음 명령을 사용하여 flaskapp.wsgi라는 파일을 만듭니다.

cd /var/www/FlaskApp
sudo nano flaskapp.wsgi 

flaskapp.wsgi 파일에 다음 코드 줄을 추가합니다.

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/FlaskApp/")

from FlaskApp import app as application
application.secret_key = 'Add your secret key'

이제 디렉토리 구조는 다음과 같아야 합니다.

|--------FlaskApp
|----------------FlaskApp
|-----------------------static
|-----------------------templates
|-----------------------venv
|-----------------------__init__.py
|----------------flaskapp.wsgi

6단계 – Apache 다시 시작

다음 명령으로 Apache를 다시 시작하여 변경 사항을 적용합니다.

sudo service apache2 restart 

다음과 유사한 메시지가 표시될 수 있습니다.

Could not reliably determine the VPS's fully qualified domain name, using 127.0.0.1 for ServerName 

이 메시지는 경고일 뿐이며 추가 문제 없이 가상 호스트에 액세스할 수 있습니다. 애플리케이션을 보려면 브라우저를 열고 가상 호스트 구성에 입력한 도메인 이름 또는 IP 주소로 이동합니다.

플라스크 애플리케이션을 성공적으로 배포했습니다.