Ubuntu Apache Server 部署 Flask 程序
很早前做过一个 HTML table 转 markdown table 的小程序 HTML2Markdown,一直以为出了我别人应该没这么特殊的需求。但博客和 Github 上有小伙伴表示自己也有这个需求,如果能在 windows 上也能用就好了。然而 windows 开发爱莫能助,想了下以前用过 Python Flask,就使用 Flask 简单实现了该功能。下面就简单记录一下把 Flask 程序部署到服务器的过程。
注:本文是 Digital Ocean 社区上的的 How To Deploy a Flask Application on an Ubuntu VPS 的翻译
安装 mod_wsgi
WSGI (Web Server Gateway Interface) 是Python应用程序或框架和Web服务器之间的一种接口。我们需要在服务器上安装并启用它。
ssh连接到服务器后用一下命令安装和启动 WSGI。
1 | sudo apt-get install libapache2-mod-wsgi python-dev |
创建 Flask 程序
这一步主要是用来创建一个 demo app,如果有现成的 Flask 程序可以跳过这一步。
创建应用目录结构:
1 | cd /var/www |
此时你的目录结构应该如下:
1 | html2markdown |
在 app 目录下创建 __init__.py
文件,文件内容如下:
1 | from flask import Flask |
安装 Flask
为了避免程序的环境影响系统环境或反之,一般需要用虚拟环境来安装应用依赖。所以我们先为此 app 安装虚拟环境。
我们使用 pip
来安装 virtualenv
和 Flask
。如果还没安装 pip
,先使用 apt-get 安装。
1 | sudo apt-get install python-pip |
接下来使用 pip
安装 virtualenv
1 | sudo pip install virtualenv |
创建虚拟环境,此操作应该在 html2markdown/app 进行。其中 venv
为虚拟环境名字,可以自定义取名。
1 | sudo virtualenv venv |
激活虚拟环境
1 | source venv/bin/activate |
安装 Flask
1 | sudo pip install Flask |
运行程序
1 | sudo python __init__.py |
此时如果显示 Running on http://localhost:5000/
或 Running on http://127.0.0.1:5000/
表示配置成功。
创建 .wsgi 文件
Apache 使用 .wsgi 来启动 Flask 程序。使用以下命令打开 /var/www/html2markdown
目录,创建一个 flaskapp.wsgi
文件。
1 | cd /var/www/html2markdown |
向文件增加以下内容,不包括#后的中文注释。
1 | #!/usr/bin/python |
此时你的目录结构应该如下
1 | html2markdown/ |
增加 apache 虚拟主机
输入以下命令创建虚拟主机配置文件
1 | sudo nano /etc/apache2/sites-available/html2markdown.conf |
配置虚拟主机信息,别忘了修改 ServerName
,WSGIScriptAlias
和 项目路径。
1 | <VirtualHost *:80> |
启动该虚拟主机
1 | sudo a2ensite html2markdown |
此时去访问设定的连接 [http://html2markdown.eliyar.biz](http://html2markdown.eliyar.biz)
即可看到部署已成功。