美文网首页
pythonanywhere 部署Django(转载)

pythonanywhere 部署Django(转载)

作者: 安纳金 | 来源:发表于2018-05-22 14:43 被阅读0次

    pythonanywhere 部署 Django

    本文为转载,我只是添加了一些实际操作中遇到的问题,最新的测试版本为python3.6+django1.11.8

    原作者:盗花
    原链接:https://www.jianshu.com/p/91047e3a4ee9

    1.创建账户

    在PAW(PythonAnyWhere)上创建免费beginner账户,网址为:
    PAW

    2.进入Dashboard

    创建账户成功后,登录账户,在页面的右上角点击Dashboard进入类似于控制面板的页面,在这里,你将看到
    “Consoles”、“Files”、“Web”、“Schedule”、“Databases”等标签。

    3.启动终端,创建虚拟环境

    Consoles标签了点击bash,页面会加载一个bash终端,首先创建rango(django app)的虚拟环境

    $ mkvirtualenv rango
    

    创建成功后,输入端的前面会多出(rango)标示,如下所示:

    (rango) 09:06 ~ $ 
    

    命令deactivate将退出虚拟环境,命令workon rango将再次进入虚拟环境。

    这里要注意,如果用上面的命令创建的虚拟环境可能是python2.7,如果要指定python版本,请用下面的命令

    mkvirtualenv dongyic3.6 --python=python3.6
    

    删除虚拟环境

    rmvirtualenv dongyic
    

    其它的:

    rmvirtualenv ENV:删除运行环境ENV

    mkproject mic:创建mic项目和运行环境mic

    mktmpenv:创建临时运行环境

    lsvirtualenv: 列出可用的运行环境

    lssitepackages: 列出当前环境安装了的包

    4.安装依赖包

    利用pip安装在开发中用到的各种python第三方包,这里我使用了如下命令:指定了django版本

    (rango) 09:06 ~ $ pip install django==1.11.8
    (rango) 09:10 ~ $ pip install django-registration-redux
    

    django 1.11.x是长期支持python2.x和python3.x的版本
    安装略慢,因为你注册的免费的beginner账户。

    (非常重要)实际开发中,对于开发环境的依赖包,在开发环境用下面的命令把依赖包的信息导出到文件

    pip freeze > requirements.txt
    

    然后把文件内容复制下来,在pythonanywhere中的虚拟环境中执行,来统一安装依赖包

    pip intall -r requirements.txt
    

    5.上传项目代码至服务器

    安装成功后,接下来从github克隆你的项目至PAW。但是我之前根本没有把项目放在github上,网上一番查找相关资料后,找到了git相关用法,很简单,只需要以下简单的步骤:

    5.1创建本地git仓库

    在本地mac上,进入tango_with_django的项目目录(此目录里能找到manage.py),键入:

    git init
    

    这样就在此目录里创建了一个本地repository,前提是你的电脑里已经安装了git。

    5.2添加文件引用

    将此目录的所有文件引用添加到git,命令为:

    git add --all
    

    5.3提交文件引用

    将添加的引用提交到本地repository,命令为:

    git commit -m "the first time to add all files"
    

    5.4推送项目至github远程仓库

    将本地repository推送到github上面的repository,首先需要登录github的网页,然后新建一个repository,命名为tango_with_django,接着在本地电脑终端键入如下命令:

    git remote add origin https://github.com/sass1s/tango_with_django.git
    git push -u origin master
    

    输入第二条命令的时候,可能要求输入你的github的账户和密码。这样,我就完成了将本地的repository推送到github的repository了。

    5.5克隆github仓库至PAW服务器

    回到PAW的终端,将github的repository克隆到PAW的服务器里,命令如下:

    git clone https://sass1s:<password>@github.com/sass1s/tango_with_django.git
    

    成功后,你将在~目录看到tango_with_django的文件夹。

    5.6 使用pycharm上传代码到github

    绑定账号

    File-settings 在搜索框输入git
    会出现github,然后在旁边输入你github的用户名和密码,或者是create API token


    image.png

    可以点击”test”测试一下,连接成功后,点下面的apply

    创建github仓库

    点击VSC——Import into Version Control——Share Project on Github


    image.png

    然后会弹出框让你输入一个仓库名(不能为中文)


    image.png

    然后点击share


    image.png

    最后弹出让你选择哪些文件需要被同步,选好后,在下面的commit Message可以输入自己的信息,然后点OK,你的代码就被提交到网上了。
    最下方可以看到pushing to github master,说明正在上传

    这个时候,你进入到你的github账户后,就可以看到刚才创建的仓库了

    6.创建数据

    创建项目启动前的一些命令,依次键入:

    (rango) 09:47 ~/tango_with_django (master)$ python manage.py makemigrations
    (rango) 09:47 ~/tango_with_django (master)$ python manage.py migrate
    (rango) 09:47 ~/tango_with_django (master)$ python populate_rango.py
    

    没有数据库可以不执行

    7.创建web app

    退出PAW的终端,点击Web标签,进入后,点击页面左边的Add a new web app,点击几个next,注意中途需要点击manual configuration,即可成功创建web app。此时,你在浏览器键入http://<username>.pythonanwhere.com后,会看到Hello, World!的页面。

    8.配置Virtualenv

    创建web app成功后,在Web标签页面会出现你创建的web app相关配置信息,我称之为项目管理页面。在该页面找到Virtualenv,点击Enter a path to a virtualenv, if desired,替换成你自己的virtualenv路径,如:/home/<username>/.virtualenvs/rango
    此处有个坑,若按照tango with django的教程,此处应为:/home/<username>/.virtualenvs/rango/bin/activate_this.py,但这是错误的配置方式,困扰了我好长时间。

    9.配置WSGI代码

    在项目管理页面找到WSGI configuration file: [/var/www/<username>_pythonanywhere_com_wsgi.py],点击该py文件,只保留以下代码,其余代码删除(或注释掉):

    # +++++++++++ DJANGO +++++++++++
    # To use your own django app use code like this:
    import os
    import sys
    #
    ## assuming your django settings file is at '/home/<username>/mysite/mysite/settings.py'
    ## and your manage.py is is at '/home/<username>/mysite/manage.py'
    path = '/home/<username>/tango_with_django'
    if path not in sys.path:
        sys.path.append(path)
    #
    os.environ['DJANGO_SETTINGS_MODULE'] = 'tango_with_django_project.settings'
    #
    ## then, for django >=1.5:
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    ## or, for older django <=1.4
    #import django.core.handlers.wsgi
    #application = django.core.handlers.wsgi.WSGIHandler()
    

    此处还有个坑,不要仿照tango with django的教程写入他的代码,因为部分代码过时了。以上代码保存退出后,可以重启(Reload)你的应用,一切顺利的话,你就可以在http://<username>.pythonanywhere.com/看到你的应用的页面了。

    10.配置静态文件

    在项目管理页面找到Static files,点击Enter URL,输入/static/admin,点击对应的Enter path,输入/home/<username>/.virtualenvs/rango/lib/python2.7/site-packages/django/contrib/admin/static/admin,以上步骤添加了admin相关页面的静态文件;下面添加应用中的静态文件,再次点击Enter URL,输入/static/,点击对应的Enter path,输入/home/<username>/tango_with_django/static/
    此处tango with django的教程还有个坑,它对应的/static/的path为/home/<username>/tango_with_django/tango_with_django_project/static,路径中多了一个tango_with_django_project,这也困扰了我好一会儿。
    以上一切顺利的话,在你的网址http://<username>.pythonanywhere.com/中就能看到诸如图片之类的东东了。

    11.导入数据库

    (1)导出本地数据库

    mysqldump -uroot -p <本地数据库名> > 保存文件名.sql
    

    (2)使用'git'或者在pythonanywhere上数据库文件<保存文件名.sql>。

    (3)进入pythonanywhere的mysql console,依次输入

    use <username>$<databasename>;
    source /home/<username>/<projectname>/<保存文件名.sql>
    

    12.常见问题

    如果django工程是在本地调试好的,要注意在setting.py中的ALLOWED_HOSTS加入
    <username>.pythonanywhere.com
    否则页面将无法显示

    参考资料:https://help.pythonanywhere.com/pages/UsingMySQL
    https://help.pythonanywhere.com/pages/ImportingYourLocalDatabaseToPythonAnywhere

    再次感谢大神

    相关文章

      网友评论

          本文标题:pythonanywhere 部署Django(转载)

          本文链接:https://www.haomeiwen.com/subject/utghjftx.html