在 DreamHost 上搭建 Flask 项目

English version of this post / 本文英文版本

本文将介绍如何用 Passenger 设置 WSGI 应用,并在 DreamHost 服务器上搭建 Flask 项目。

在开始之前,如果你还没有在 DreamHost 服务器上安装 python 2.7 或者 virtualenv 的话,请先阅读《在 DreamHost 上安装 Python 和 VirtualEnv》。

1. 在 DreamHost 上添加新的子域名/域名

虽然你也可以把项目直接搭建在你的主域名的下级目录中,但是我仍然建议你把他们搭建在子域名里。要在 DreamHost 上增加一个子域名,首先要登录 DreamHost 的控制面板(Panel),然后

    在左上角的 ‘Toolbox’ 工具面板中,单击管理域名(Manage Domains)单击新建域名、子域名(Add New Domain/Sub-Domain)接下来照此设置:(记得更换斜体字)

    Domain to host: project_name.your_domain.comDo you want the www in your URL? : Remove WWWRun this domain under the user: choose a usernameWeb directory: /home/username/project_name.your_domain.com/public…Passenger(Ruby/Python apps only): 勾选!单击 ‘Fully host this domain’

之后可能需要等待较长时间,一定要耐心。你可以尝试着访问这个新的子域名,如果出现什么 DreamHost 的快速页面的话,可能域名就搭建完成了。这时可是尝试使用 ssh 登录 DreamHost 服务器来确认,如果用户目录下出现了名为’project_name.your_domain.com’的文件夹的话,就说明域名搭建完成了。使用 ‘cd project_name.your_domain.com’ 命令进入此目录,然后我们可以开始下一步操作。

2. 安装 Flask 以及配置 Passenger2.1 设置虚拟环境 virtualenv

首先确保你处于用户目录的子域名文件目录下:‘~/project_name.your_domain.com’

键入以下命令来设置虚拟环境:

# 设置虚拟环境[machinename]$ virtualenv .# 检查当前目录下的文件[machinename]$ ls

如果设置正确的话,现在的目录下面应该差不多有这些文件夹:

bin include lib public

接下来,我们要激活虚拟环境:

# 激活虚拟环境[machinename]$ . bin/activate

这时候命令行应该看上去像这样:

(project_name.your_domain.com)[machinename]$

2.2 安装 Flask

使用 easy_install 来安装 Flask

(project_name.your_domain.com)[machinename]$ easy_install flask

2.3 添加/导入 项目

现在我们要真正添加项目文件了!首先创建一个文件夹,起一个代表项目的名字,例如 ‘project_folder_name’。然后,我们在这个文件夹里面添加一个简单的 helloworld 项目文件,比如命名为 ‘app_run_python_file.py’。

(可以使用 vim 添加,如果不了解 vim,请搜索相关博文或者自行百度,谢谢!)

这个项目文件 app_run_python_file.py 可以非常简单,比如像这样:

# app_run_python_file.pyfrom flask import Flaskapp = Flask(__name__) @app.route("/")def test():    return "Hello World!"

当然,你也可以直接导入项目文件夹进来,或者,你也可以不创建子文件夹,而是直接创建项目文件,但是这样的话,在后续的步骤里又要稍作改变。

2.4 安装配置 Passenger

现在你需要创建一个命名为 passenger_wsgi.py 的脚本,把它放在子域名根目录下 ‘~/project_name.your_domain.com/’。Passenger 框架会调用这个脚本来运行你的程序。

这个 passenger_wsgi.py 脚本可以是类似这样的:

# passenger_wsgi.py import sys, osINTERP = os.path.join(os.environ['HOME'], 'project_name.your_domain.com', 'bin', 'python')if sys.executable != INTERP:        os.execl(INTERP, INTERP, *sys.argv)sys.path.append(os.getcwd())sys.path.append('project_folder_name')from app_run_python_file import app as application

一些解释:

第3行: 导向你项目文件中的 python 路径‘~/project_name.your_domain.com/bin/python’第6+8行: 导向可运行文件的路径 ‘~/project_name.your_domain.com/project_folder_name’. 所以如果之前没有创建新的子文件夹的话,就不需要这么设置。第9行: 标明可运行文件的文件名 ‘app_run_python_file’

现在,目录应该看起来像这个样子:

~

/project_name.your_domain.com

/bin/include/lib/public /project_folder_name

app_run_python_file.pypassenger_wsgi.py2.5 运行服务器

接下来我们还需要让服务器开始运行。这很简单,只要在子域名根目录下创建一个文件夹,叫做‘tmp’。然后在这个 tmp 文件夹下(~/project_name.your_domain.com/tmp) ,创建一个 restart.txt 文件。

# 确保你在路径 ~/project_name.your_domain.com/ 下(project_name.your_domain.com)[machinename]$ mkdir tmp(project_name.your_domain.com)[machinename]$ touch tmp/restart.txt

提醒: 每次在你对项目文件做过更改以后,你都需要重启服务器。重启服务器的做法很简单,就是在命令行输入 ‘touch tmp/restart.txt’。

现在,你的目录应该差不多是这样:

~

/project_name.your_domain.com

/bin/include/lib/public /project_folder_name

app_run_python_file.pypassenger_wsgi.py /tmp

restart.txt3. 测试

要进行测试,我们可以在命令行输入命令:

# 测试 (最好在用户目录下 ~)[machinename]$ curl project_name.your_domain.com

使用 curl 测试后,你应该可以在命令行里见到 “Hello World!” 字样。

或者你也可以直接使用浏览器访问子域名 ‘project_name.your_domain.com’,这样应该可以在浏览器页面上见到 “Hello World!” 字样。

现在全部设置已经完成,可以开始你的 Flask 项目开发啦!


参考资料:

Rick: Python WSGI Apps on DreamHost Shared Hosting

mattcarrier: Setting up and deploying Python Flask to Dreamhost

[浏览量 163]

在 DreamHost 上搭建 Flask 项目,首发于Neo叔叔的博客。

最快乐的时候,就是去旅行。

在 DreamHost 上搭建 Flask 项目

相关文章:

你感兴趣的文章:

标签云: