博客还在运营中~
网址 : www.vtoo.pro
这是一个基于 python3.5 和 Django 的博客框架,python 作为语言,Django 作为一个 Web 框架,数据库使用 Django 自带数据库。
搭建博客详细教程:追梦人物的博客
最后吐槽,想要坚持做博客真的很难,因为看的人超级少(排除一些大牛博客),运营起来也费劲,并且图片外链老是失效我能怎么办?自己也不是专门做网站的,希望未来能找到一个坚持下去的动力。
假设已经根据django博客教程成功搭建了自己的博客,并且已经将其发布到github以及自己的私人服务器上。 现在需要在新的电脑或者环境上搭建一个管理该django博客的project,可以按照下面的步骤操作:
###在本地还原博客环境
- 安装py3.5(ubuntu16.04会自带py3.5.2)。
- 安装pip3,使用sudo apt-get install python3-pip。
- 安装virtualenv,使用pip3 install virtualenv。
- 创建blogproject_env虚拟环境,使用virtualenv home/vtoo/Document/blogproject_env,且因为是用的pip3安装的virtualenv,所以在这个环境里只能用py3.5.2。
- 激活blogproject_env虚拟环境,使用source home/vtoo/Document/blogproject_env/bin/activate。
- 将在github上的blogproject的工程git到本地,使用git clone url。
- 安装当前库依赖,使用pip install -r requirements.txt,会自动安装上博客project需要的库。
- 迁移数据库模型,先使用python manage.py makemigrations让django完成翻译,创建需要的迁移,之后使用python manage.py migrate,将各个应用的数据库模型进行迁移。如果之后对模型有修改,就依次使用python manage.py makemigrations和python manage.py migrate。
- 使用python manage.py runsrver,查看django是否可以正常运行,不报错的话就打开网址http://127.0.0.1:8000/。
- 登录网址http://127.0.0.1:8000/后报错IndexError Exception Value:list index out of range,这是因为当前数据库中没有home,about,Todolist,contact,blog的访问次数的初始化表格数据,但是远程服务器端是有的,这里需要在后台手动创建表格中的这五个数据,在代码中不能初始化,所以要先在代码中把这5个部分的view.py中的refresh_visitnumber(request,'home')代码注释,分别对应报错的那几句代码,便可以正常运行project。
- 使用python manage.py createsuperuser创建本地的后台管理账号,因为数据库的数据不会上传,所以这个和远程服务器端是不会冲突的,只用来管理本地的数据库。
- 进入后台,在后台各页面de访问次数中分别创建home,about,Todolist,contact,blog这5个数据,然后可以在代码中把先前注释了的代码复原,便可以完全正常运行博客project。
- **(可省略)**运行 python manage.py collectstatic 命令收集静态文件到 static 目录下.
- 在blogproject_env环境中查看本地blog的预览,方便修改blog的工程代码,此时的python版本是3.5的。
- 修改完blog的工程代码,使用git status + git add . + git commit -m "xxx" + git push -u将修改后的代码发布到github上。
- 因为fabric暂时不支持py3版本的,所以先退出blogproject_env环境,使用ubuntu自带的py2.7安装fabric,在终端使用命令pip install fabric==1.14.0来安装(如果还没安装pip,就使用sudo apt-get install python-pip先安装pip),注意,如果安装了高版本的fabric。可能会出错。
- 编写fabric脚本,即编写fabfile.py文件,放到博客工程文件夹,即/home/vtoo/Document/blogproject/fabfile.py。其中的内容如下:
# blogproject/fabfile.py
from fabric.api import env, run
from fabric.operations import sudo
GIT_REPO = "you git repository" ①
env.user = 'you host username' ②
env.password = 'you host password'
# 填写你自己的主机对应的域名
env.hosts = ['demo.zmrenwu.com']
# 一般情况下为 22 端口,如果非 22 端口请查看你的主机服务提供商提供的信息
env.port = '22'
def deploy():
source_folder = '/home/yangxg/sites/zmrenwu.com/django-blog-tutorial' ③
run('cd %s && git pull' % source_folder) ④
run("""
cd {} &&
../env/bin/pip install -r requirements.txt &&
../env/bin/python3 manage.py collectstatic --noinput &&
../env/bin/python3 manage.py migrate
""".format(source_folder)) ⑤
sudo('restart gunicorn-demo.zmrenwu.com') ⑥
sudo('service nginx reload')
以上代码包含一些注解:
① 你的代码托管仓库地址。
② 配置一些服务器的地址信息和账户信息,各参数的含义分别为:
env.user:用于登录服务器的用户名
env.password:用户名对应的密码
env.hosts:服务器的 IP 地址,也可以是解析到这个 IP 的域名
env.port:SSH 远程服务器的端口号
③ 需要部署的项目根目录在服务器上的位置。
④ 通过 run 方法在服务器上执行命令,传入的参数为需要执行的命令,用字符串包裹。这里执行了两条命令,不同命令间用 && 符号连接:
cd 命令进入到需要部署的项目根目录
git pull 拉取远程仓库的最新代码
⑤ 对应上述部署过程中 3-5 的几条命令。因为启用了虚拟环境,所以运行的是虚拟环境 ../env/bin/ 下的 pip 和 python
⑥ 重启 Gunicorn 和 Nginx,由于这两条命令要在超级权限下运行,所以使用了 sudo 方法而不是 run 方法。
- fabfile.py文件写完之后,保存下来。用python2的环境运行fabfile.py文件,使用命令fab deploy,这时 Fabric 会自动检测到 fabfile.py 脚本中的 deploy 函数并运行。
- 如果在最后看到Done. Disconnecting from zmrenwu.com... done,说明脚本运行成功。而如果看到Aborting. Disconnecting from zmrenwu.com... done.,说明脚本运行中出错,检查一下命令行输入的错误信息,修复问题后重新运行脚本。
- 首先启动blogproject_env环境,用source /home/vtoo/Documents/bolgproject_env/bin/activate来激活环境。
- 在blogproject_env环境中查看本地blog的预览,方便修改blog的工程代码,此时的python版本是3.5的。
- 修改完blog的工程代码,使用git status + git add . + git commit -m "xxx" + git push -u将修改后的代码发布到github上。
- 退出blogproject_env环境,使用python2的环境运行fabfile.py文件,使用命令fab deploy,这时 Fabric 会自动检测到 fabfile.py 脚本中的 deploy 函数并运行。
- 如果在最后看到Done. Disconnecting from zmrenwu.com... done,说明脚本运行成功。而如果看到Aborting. Disconnecting from zmrenwu.com... done.,说明脚本运行中出错,检查一下命令行输入的错误信息,修复问题后重新运行脚本。