资讯专栏INFORMATION COLUMN

使用PythonAnyWhere和GitHub免费部署Django网站

Meils / 2327人阅读

摘要:在执行部署网站之前,应该先处理好前期工作,比如对文件进行设置以防止私密信息泄露等。本文只是简单的笔记,原文地址为将项目发布到申请免费的账号网址免费的账号只能建一个站。其中代表注册账户时所用的用户名。站点只能维持个月,个月后就会被删除。

在执行部署Django网站之前,应该先处理好前期工作,比如对settings.py文件进行设置以防止私密信息泄露等。本文只是简单的笔记,原文地址为:https://tutorial.djangogirls....

1, 将Django项目发布到GitHub

2, 申请免费的PythonAnyWhere账号
网址:https://www.pythonanywhere.com/
免费的账号只能建一个站。站名只能为XXX.pythonanywhere.com。其中XXX代表注册账户时所用的用户名。站点只能维持2个月,2个月后就会被删除。

3, 将GitHub上的项目发送至PythonAnyWhere
3.1 在PythonAnyWhere中,点击 “Consoles” –> start a “Bash” console
这个Bash是类似于Linux系统里的“终端”。
3.2 在这个新建的Bash里面输入:
注意:如下代码表示需要在PythonAnyWhere的Bash中执行!!

$ git clone https://github.com//my-first-blog.git

这个步骤将GitHub的项目发送到PythonAnyWhere。注意上面的这个链接就是GitHub里项目的仓库地址:

Bash的响应非常慢,需要耐心等候。
发送完成后可以使用下面的代码来看被复制到PythonAnyWhere的文件目录结构,需要强调的是,这个my-first-blog即为GitHub里的仓库的项目名字。
注意:如下代码表示需要在PythonAnyWhere的Bash中执行!!

tree my-first-blog

4, 为PythonAnyWhere里的项目创建virtual environment
继续在PythonAnyWhere的Bash里执行下面的命令,以创建一个名为myvenv的虚拟环境。
注意:如下代码表示需要在PythonAnyWhere的Bash中执行!!

$ cd my-first-blog
$ virtualenv --python=python3.5 myvenv
$ source myvenv/bin/activate
(myvenv) $ pip install django==1.10.0

上面的python和django版本号仅供参考!

5, 为PythonAnyWhere里的项目创建数据库并创建超级账户
注意:如下代码表示需要在PythonAnyWhere的Bash中执行!!

(myvenv) $ python manage.py migrate
(myvenv) $ python manage.py createsuperuser

6, 将Django项目作为Web App发布
到这里,我们的Django项目已经在PythonAnyWhere上了,虚拟环境也准备好了,数据库也创建好了,此时就可以将它作为Web App发布了!在PythonAnyWhere里,点击 “Web”选项卡 -> 点击 “Add a new web app”
-> 确认域名 -> 选择manual configuration(注意不是选择“Django”哦) -> 选择Python3.5 -> 点击Next以最终完成向导。

7, 配置Web App的虚拟环境
创建好了Web App之后,PythonAnyWhere就会将你带到该Web App的配置界面,点击Virtualenv下面红色的字体来编辑虚拟环境的位置,如下图所示:

将地址修改为:

/home/<你的PythonAnyWhere的账户名>/my-first-blog/myvenv

注意:上面的my-first-blog为GitHub里的项目的仓库地址。
注意:上面的myvenv是该创建的虚拟环境的名字

8, 配置PythonAnyWhere里的WSGI文件
仍然是在Web选项卡,点击WSGI configuration file后面的蓝色字体连接(如下图所示)。
PythonAnyWhere将带我们到一个新的页面(一个代码编辑器),将编辑器的代码全部用下面的代码替换。

import os
import sys

path = "/home/<你的PythonAnyWhere用户名>/my-first-blog"  # 在这里使用你自己的用户名和GitHub项目的名字。
if path not in sys.path:
    sys.path.append(path)

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" # 在这里mysite请用settings所在文件夹名,我用的是和GitHub仓库名一样的名字
from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())

点击 “Save” -> 返回Web选项卡 -> 点击大大的绿色按钮“Reload”。此时我们就可以通过Web选项卡上提供的地址(也就是XXX.pythonanywhere.com)访问了!这样我们的网站就真正在互联网上存在了,虽然只有两个月的有效期:-(

9, Debug
在配置过程中,难免会出错导致站点无法成功发布。首先应该:

查看出错页面显示的error log

查看Web选项卡页面有无任何错误提示
常见的错误包括:

在PythonAnyWhere的Bash漏了创建virtualenv,激活它,给它安装Django,给它初始化数据库

第7步设置虚拟环境的路径是时有错误

第8步配置WSGI时有错误,是否填入正确的path了呢?

安装虚拟环境时选择的Python版本和创建Web App时选择的Python是否都是同一版本?

10, 如何将GitHub里项目的修改反馈到PythonAnyWhere?
项目又要修改的时候,通常是在本地计算机修改,修改好之后发布到GitHub,之后发布到PythonAnyWhere。当GitHub里项目修改好之后,在PythonAnyWhere的Bash里面输入下面两行代码就可以同步了:
注意:如下代码表示需要在PythonAnyWhere的Bash中执行!!

cd my-first-blog
git pull

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38614.html

相关文章

  • 一步一步教你如何搭建自己的视频聚合站

    摘要:不过因为各个平台互相挖人的关系,导致关注的一些主播分散到了各个直播平台,来回切换有点麻烦,所以萌生了做一个视频聚合站的想法。后续我们会对这三个部分的功能做逐一展开说明。正则处理要求比较高,但是几乎能应对所有的情况,属于大杀器。 前言 作为一个炉石传说玩家,经常有事没事开着直播网站看看大神们的精彩表演。不过因为各个平台互相挖人的关系,导致关注的一些主播分散到了各个直播平台,来回切换有点麻...

    justjavac 评论0 收藏0
  • 《Python Web开发》作者Harry Percival:TDD就是微小而渐进的改变

    摘要:目前就职于,他在各种演讲研讨会和开发者大会上积极推广测试驱动开发。问很多敏捷教练都表示训练新人做测试驱动开发是一件辛苦而进度缓慢的事,并且收益也不是很大。首先是开发的对话式风格。第一个问题就是测试套件的速度。 Harry J.W. Percival目前就职于PythonAnywhere,他在各种演讲、研讨会和开发者大会上积极推广测试驱动开发(TDD)。他在利物浦大学获得计算机科学硕士学...

    Guakin_Huang 评论0 收藏0
  • 《Python Web开发》作者Harry Percival:TDD就是微小而渐进的改变

    摘要:目前就职于,他在各种演讲研讨会和开发者大会上积极推广测试驱动开发。问很多敏捷教练都表示训练新人做测试驱动开发是一件辛苦而进度缓慢的事,并且收益也不是很大。首先是开发的对话式风格。第一个问题就是测试套件的速度。 Harry J.W. Percival目前就职于PythonAnywhere,他在各种演讲、研讨会和开发者大会上积极推广测试驱动开发(TDD)。他在利物浦大学获得计算机科学硕士学...

    k00baa 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<