如何在UbuntuVPS上部署Flask应用程序

来自菜鸟教程
跳转至:导航、​搜索

高亮显示 是什么意思

用户需要输入或自定义的行在本教程中将被高亮显示! 其余的大部分应该是可复制粘贴的。

介绍

Flask 是一个用 Python 编写的微框架,基于 Werkzeug 和 Jinja2 模板引擎,用于开发 Web 应用程序。 它旨在快速开发 Web 应用程序。

设置

您需要在您的 VPS 上安装并运行 Apache。 如果不是这种情况,请按照我们关于 在 Ubuntu 上安装 LAMP 堆栈的文章的第一步。

第一步——安装并启用 mod_wsgi

WSGI(Web 服务器网关接口)是用于 python 的 web 服务器和 web 应用程序之间的接口。 Mod_wsgi 是一个 Apache HTTP 服务器 mod,它使 Apache 能够为 Flask 应用程序提供服务。

打开终端并输入以下命令来安装 mod_wsgi:

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

要启用 mod_wsgi,请运行以下命令:

sudo a2enmod wsgi 

第二步——创建一个 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()

保存并关闭文件。

第三步——安装 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 

它应该显示“在 http://localhost:5000/ 上运行”或“在 http://127.0.0.1:5000/ 上运行”。 如果您看到此消息,则说明您已成功配置应用程序。

要停用环境,请给出以下命令:

deactivate

第四步——配置和启用一个新的虚拟主机

在终端中发出以下命令:

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

第五步 - 创建 .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

第六步——重启 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 地址。

您已经成功部署了一个烧瓶应用程序。

文章提交人:昆丹·辛格