将本地的代码同步Github 然后再把代码从Github同步到 pythonanywhere

Git

Git是一个被大量程序员使用的”版本控制系统”。 此软件可以跟踪任何时间文件的改变,这样你以后可以随时召回某个特定版本。

创建Git 版本库

Git跟踪一组特定的在代码仓库(或简称“仓库”)中文件的更改。 我们开始用git管理自己的项目吧。 打开你的终端,进入MAC 用户的根目录 文件夹运行以下的命令:

  1. $ git init
  2. Initialized empty Git repository in /Users/mofu/.git/
  3. $ git config --global user.name "Your Name"
  4. $ git config --global user.email you@example.com

让Git 忽略特定文件

输入命令 git status 查看一下当前会被追踪的文件。这里我们只需要以下目录和文件被追踪。

  1. blog/
  2. db.sqlite3
  3. manage.py
  4. mysite/

在用户目录(mofu)创建一个名称为.gitignore的文件。 打开编辑器,创建新文件并写入以下内容(git status 出现到的 排除上面的,得出下面的列表)

  1. *.pyc
  2. __pycache__
  3. myvenv
  4. .DS_Store
  5. .CFUserTextEncoding
  6. .atom/
  7. .bash_history
  8. .bash_sessions/
  9. .config/
  10. .gitconfig
  11. .gitignore
  12. .gitignore_global
  13. .hgignore_global
  14. .oracle_jre_usage/
  15. .python_history
  16. .ssh/
  17. .stCommitMsg
  18. .vscode/
  19. Applications/
  20. Desktop/
  21. Documents/
  22. Downloads/
  23. GitBook/
  24. Library/
  25. Movies/
  26. Music/
  27. Pictures/
  28. Public/

文件被创建成功,但是看不到,应为它是.开头的。

保存我们的更改

输入 git add --all 保存 上面的 4个文件和文件夹。
20170826150372683924016.png

推送我们的代码到 Github

访问 https://github.com/new 创建一个仓库,.gitignore 选项为无 (我们已经手动创建了) ,让License设置为无。
20170825150364681745839.png
在下一屏中,你将看到你的仓库克隆 URL。选择“HTTPS”版本,拷贝地址,我们马上要把它粘贴到终端:
2017082515036468326786.png
第一次执行需要做以下操作
git add . 添加所有的改动
git commit -m "init" 发送刚刚添加的所有的改动,并命名 init
git remote add origin https://github.com/zfl420/my-first-blog.git
选择上传到的仓库
git push -u origin master 上传,并按照提示输入账号密码,就成功了。

git log 可以查看git的日志。
history|tail 可以查看终端的命令历史。

这个时候,在github上就可以看到这个仓库已经被更新了。
20170825150364686270466.png

在 PythonAnywhere 设置我们的博客

在pythonAnywhere 创建一个 begingner账户,账号名称会是你的用户名 https://www.pythonanywhere.com
这是我的首页 http://zfl420.pythonanywhere.com/

在 PythonAnywhere 上拉取我们的代码

点击 Bash 启动 PythonAnywhere 给我们提供的命令行工具
20170825150364688492306.png
打开 Bash后,在PythonAnywhere里面输入西面的命令,后面的链接是仓库地址。

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

把代码下载到了 PythonAnywhere后,通过命令

  1. tree my-first-blog

查看本地的项目 my-first-blog 的树形结构。
20170825150364690537563.png

在PythonAnywhere上创建Virtulalenv

进入 my-first-blog
cd my-first-blog
命令 virtualenv --python=python3.6 myvenv 创建虚拟环境
20170825150364692159909.png
命令source myvenv/bin/activate进入虚拟环境
命令 pip install django whitenoise 安装 whitenoise
20170825150364692159909.png

whitenoise

什么是”whitenoise”白噪音? 它是用来服务所谓的“static files”静态文件的工具。 静态文件是很少改动或者并非可运行的程序代码的那些文件,比如 HTML 或 CSS 文件。 在我们的计算机上,它们以不同的方式工作,我们需要比如“whitenoise”这样的工具来为其服务。在教程后续编辑网站 CSS 章节会介绍更多有关静态文件的内容。

收集静态文件

命令 python manage.py collectstatic 告诉 Django 去收集服务器上所有需要的静态文件。

执行完毕 会提示 61 static files copied to '/home/zfl420/my-first-blog/static'.

在 PythonAnywhere 上创建数据库

命令 python manage.py migrate 初始化数据库
创建超级用户
python manage.py createsuperuser
按照要求输入用户名、邮箱和密码
新建一个 new web app
20170825150364838334236.png
选择Manual configuration 再选 python 3.6.

注意 不要选择 Django

设置 virtualenv
在选项卡 Virtualenv: 里面输入
/home/zfl420/my-first-blog/myvenv
保存后如图
20170825150365102932286.png

配置WSGI文件

Django 使用 “WSGI 协议”,它是用来服务 Python 网站的一个标准。PythonAnywhere 支持这个标准。 PythonAnywhere 识别我们 Django 博客的方式是通过配置 WSGI 配置文件。

点击这个wsgi.py文件。
20170826150372515758865.png
他会出现一个编辑器,然后删除里面的内容,并且替换成以下内容。

  1. import os
  2. import sys
  3. path = '/home/zfl420/my-first-blog' # use your own username here
  4. if path not in sys.path:
  5. sys.path.append(path)
  6. os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
  7. from django.core.wsgi import get_wsgi_application
  8. from whitenoise.django import DjangoWhiteNoise
  9. application = DjangoWhiteNoise(get_wsgi_application())

注意: 第三行那个路径(path)换成自己的博客路径。

这个文件的作用是告诉 PythonAnywhere 我们的Web应用程序在什么位置,Django 设置文件的名字是什么。它也设置 “whitenoise” 静态文件工具。

Reload

20170826150372567915242.png

出现一个错误

20170826150372642248914.png
这个时候需要把,zfl420.pythonanywhere.com 放到ALLOWED_HOSTS里面。
20170826150372653354861.png
完美解决。

第二个问题

我在本地设置的 superuser 用户名是 mofu , 但是我在pythonanywhere 上设置为mofu的时候是失败的,于是我就把 zfl420 设置为了 superuser。
所以,在登陆 zfl420.pythonanywhere.com/admin/ 的时候,用的用户名是 zfl420。

上线了!

好啦,可以访问啦
20170826150372696382488.png