在新浪云上部署Django应用程序

前言

近日,笔者利用空闲时间写了一个简单的在线预定系统,使用的工具包括Python 3.5.1 和 Django 1.9.5 。早就有据说Django响亮的口号,“The web framework for perfectionists with deadlines”。此次本身亲自尝试了事后,发现果真名不虚传,清晰简洁的支持文档,方便的API接口,都无一例外的吸引了我。html

既然是一个在线系统,那么确定绕不开服务器部署的问题。我选择了方便的新浪云做为后端服务器。本来觉得会比较顺利,没想到里面细节设置仍是比较多的。在这里,笔者记录下这些细节设置,也算是一个比较基础的新浪云入门设置教程了吧!python


准备工做

首先,保证你的系统在本地(127.0.0.1:[default port | 8000])测试无误。git

关于笔者的系统的一些基本信息:web

  1. 后端:Python 3.5.1docker

  2. 框架:Django 1.9.5数据库

  3. 数据库:SQLitedjango

在部署以前我曾经担忧过,新浪云支不支持Python 3.5呢?支不支持Django 1.9?好像新浪云的云应用手册上面写了仅支持Python 2.7,那是否是意味着没法部署呢?其实并不是这样的,咱们使用的是新浪云的容器(container)的功能,至关因而一个存放区域,能够存听任何形式的应用程序。这一点后面会讲到。后端

确认了你的系统信息以后,就要开始准备一些配置文件了,咱们须要准备如下文件:安全

  1. runtime.txt服务器

  2. requirements.txt

  3. Procfile

    (请保证命名一致)

官方参考文档: Python应用部署

runtime.txt

若是你想要指定你想要使用的Python版本,你能够经过在你的应用的根目录下建立一个 runtime.txt 文件,在里面写上你要使用的Python版本。内容格式以下:

python-3.5.1

requirements.txt

容器云在构建应用的时候自动执行特定的命令来安装全部的第三方依赖包,因此你须要在 requirements.txt 文件中指定你有哪些依赖。内容格式以下:

django==1.9.5

这个有个小问题,若是我有若干个第三方依赖库,应该如何定义?行尾需不须要分号?这个语法在文档里没有说明,笔者也没有尝试。若是有了解的请留言,谢谢!

关于requirements.txt格式问题,请看评论。 23/5/2016
Procfile

官方参考文档: Procfile

这个文件将告诉云端服务器,如何运行你的系统。内容格式以下:

web: python manage.py runserver 0.0.0.0:5050

注意:Django服务器默认监听的端口是127.0.0.1:8000,这会致使新浪云应用程序的运行实例收不到任何请求,因此,在云端开启服务器的时候,你必须显式地告诉服务器,监听在0.0.0.0这个接口上,默认端口设置为5050。这一点很关键!

最后,咱们会用到git命令行进行代码的上传,请确保你的机器上安装有git命令行工具


开始部署

首先,在本地运行你的Python服务器。多是由于以后在上传代码和配置云端,服务器生成镜像的时候,远程服务器和本地服务器须要有连接。若是不在本地启动,会提示错误,生成镜像失败。开启一个终端,进入应用程序根目录,而后执行:

python manage.py runserver 0.0.0.0:5050

而后,开启另外一个终端,进入应用根程序目录,依次执行如下代码:

git remote add sae [新浪云给你生成的git仓库连接]
git add .
git commit -am "make it better"
git push sae master:1

这样以后,咱们就已经

  1. 建立了一个远程仓库,之后的每一次push都会自动的存放到这个仓库中;

  2. 检测了代码是否发生变化;

  3. 开始上传代码;

不出意外的话,这个时候须要你输入 安全邮箱 安全密码 了,不要输错了。

部署成功

上传成功以后,稍等片刻,你就能够登陆你的新浪云管理帐号,前往 应用 - 容器管理 中,查看 状态 了。理论上来讲应该是“运行”字样。

这里有一个小插曲,在走通了以前的全部步骤,而且没有报错的状况,我等待了超过1小时,发现本身的两个实例的 状态 依旧是“处理中”。这非常奇怪。没辙了,只可以提交工单,联系客服。后来才知道,原来正好那段时间他们在作系统升级。因此,有的时候,该调戏客服的时候,仍是要大胆行动的。


Weiming
2016.4.21

相关文章
相关标签/搜索