关注互联网应用及运维技术的个人博客

使用Django快速搭建博客

一、大象装箱子, 我们把建设网站分为几个步骤来写。

1. 确定网站类型

这里我们想要一个可以写笔记并且自己随时随地能查看还能让别人看到的网站,那么个人博客类型的网站是不错的选择。那么这个网站需要有几个东西。
  • 1.1 前台模块
  • 1.2 后台模块
  • 1.3 标签模块
  • 1.4 分类模块
  • 1.5 友情链接
  • 1.6 评论模块
  • 1.7 文章模块
  • 1.8 权限管理
  • 1.9 当然还有最重要的支持MarkDown

2. 选择语言

  • 目前主流的JAVA、Python、PHP,但是对于一个小型网站来说选择JAVA未免成本有点高,而且本人不喜欢用JAVA来干这么飘逸的事情,用PHP?
  • 目前使用python来是个不错的选择。就当是的练习。

3. 选择框架

python主流的WEB框架有:

  1. – Django: Python Web应用开发框架
  2. – Flask:一个用Python编写的轻量级Web应用框架
  3. 这两个框架恰好满足我的需要, 事实上,使用Flask写出来的更快捷。但是稳定性能不怎么好。不过为了现在有像Gunicorn这样的优秀的web框架也就是所谓的Python WSGI UNIX HTTP Server,

它的目的就在于可以提升网站的性能,所以我也研究了一下使用Flask写出来的效果。

但是这篇博客的目的在于介绍使用Django这个框架来入门python。博客也是带着学习的心态来花两天的时间来彻底弄懂这个框架。

4. 选择服务器

  • 选择服务器就不说了,Amazon、阿里、百度、腾讯、华为、Google could都可以作为你是服务器(这篇博客不讲windows下的因为实在是太low了,如果你对于刚入门的小伙伴可以细心看下去)
  • 这里我们选用了阿里云的服务器,小伙伴根据自己的经济实力选择。如果作为学生可以买学生机,当然很多服务商都在搞活动也是非常便宜的。

5. 开始搭建

  1. 登陆阿里云控制台,随后我们连接自己的服务器
  2. 这里有两种进入方式一种的VNC图像界面,里面集成了LINUX的许多功能,还有一种的SSH服务登陆。
  3. 第二种方式当然是最好的。
  4. ## SSH 远程登录: Secure Shell 用于运维开发远程登录的,一般我们需要用远程工具例如XShell,putty,SecureCRT等程序来连接介绍几种工具:

那么我这里选择用 XShell 后面我会给出一些软件的地址给大家下载。

连接好后我们需要做的事情比较多我一一罗列

5.1 更新阿里云的源,apt-get

cd /etc/apt  //源文件位置可能不同
cp sources.list sources.list.bak
vim sources.list
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.cloud.aliyuncs.com/ubuntu/ bionic-backports main restricted universe multiverse

保存退出后就能下载更新了。这个实时可以根据原博客操作了。

5.2 下载相应的依赖包

缺少什么依赖包就下载什么依赖,根据报错的信息去排查。

5.3 安装 python3.8 与 pip

  1. 这里可以配置 python3.8 基本上python3以上都能兼容项目sudo apt install python3.8update-alternatives –config python //查看有哪些版本alternatives 这个命令具体可以百度Google
  • 值得注意的是在更换 python 版本的时候要注意其权重值的大小
  • 最后看看版本有没有换过来

接下来安装 pip

  1. pip的安装也安装原博客地址的方式安装
  2. sudo apt-get install python-pip
  3. 如果缺少依赖包自行解决……
  4. cd ~/.pip/ //更换pip的源
  5. cp pip.conf pip.conf.bak
  6. vim pip.conf //使用清华源,如果过期请更换其他的地址
[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn

注意如果这里pip一直不能使用指定的python版本

which pip  //看一下在哪
cd 所在的地方并编辑
#!/usr/bin/python  //这里可以修改成python2 或者 python3 看情况
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())
修改后如果还是不能连接到
pip -V //看看是否修改成功
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.8  //让其连接到指定版本

5.4 git 并使用完成部署

  1. git clone 地址
  2. 下载完成后依次操作
  3. 这里的 pip 安装依赖包需要注意,只要有以下依赖包极大可能可能出问题:
  • django-haystack==3.0b2
  • django-mdeditor==0.1.18
  • mysqlclient==1.4.6
  • rcssmin==1.0.6
  • rjsmin==1.1.0

//根据顺序来安装,最好的办法就是一个一个去试错。
sudo apt-get install libmysqlclient-dev sudo apt install libssl-dev sudo apt install libcrypto++-dev sudo pip3 install mysqlclient
sudo apt install python3.8-dev libmysqlclient-dev  //解决mysqlclient安装
pip install wheel
pip install rcssmin --install-option="--without-c-extensions"
pip install rjsmin --install-option="--without-c-extensions"
pip install setuptools-scm
pip install django-haystack

操作完以上基本能决绝百分之80的问题,如果还有其他问题需要自己排查。

5. 后期运维

根据原博客的操作,我们会遇到许多疑问,这里一一说明:

  1. virtualenv 是什么作用是什么?
    带着疑问我们去找问题,virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
    主要使用的的命令 activate 和 deactivate
pip freeze  //查看安装的包
  1. 数据库迁移 是什么?
    我们需要找到 manage.py 文件看看其源码一起来分析,可以发现就是很简单的载入配置,目的是和你的mysql联系起来 python manage.py migrate # 根据数据库迁移文件生成对应SQL语句并执行
     # 初次执行时为了先把默认Django需要的数据库创建出来
     python manage.py makemigrations # 创建数据库迁移文件
     # 这次执行是为了创建app中的class模型类的迁移文件
     python manage.py
     # 将新添加的模型类迁移文件生成对应SQL并执行,实际创建出来对应的表
  1. ./manage.py collectstatic –no-input //主要这条指令会生成 collectstatic 文件,如果没有样式疑问这里面没有缓冲文件
  2. ./manage.py compress –force //如果错误请看下面如果解决

一般上面在进行数据库迁移和操作的时候会报错,一般都是 supervisor.sock 文件的缺失的问题,本着具体问题具体分析的原则.

  • 什么是 supervisor ?
    说白了就是一个管理进程的东西
    1. 它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制
  • 如果解决这个问题 ?
    首先先确认自己已经安装了 , 这里假设你默认是安装了,只需要执行下面的命令:
    1. //在找不到sock文件的时候要先创建
    2. sudo touch /var/run/supervisor.sock
    3. sudo chmod 777 /var/run/supervisor.sock
    4. sudo service supervisor restart
    5. //并且要创建连接 (基本上连接成功后就行了)
    6. find / -name supervisor.sock
    7. unlink /***/supervisor.sock
    8. supervisord -c /etc/supervisor/conf.d/djangoblog.conf 启动的时候要加入配置文件启动(这里看情况,如果报错换主要的配置文件启动)

完成数据库迁移基本上大功告成,我们回顾下整个流程:

  • 首选安装框架 并且使用自带的端口启动测试 也就是: python manage.py runserver 0.0.0.0:8000
  • 使用 gunicorn 来进行重新跑网站,
    1. Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。
    2. 和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。
  • 使用 Supervisor 来不停的启动 gunicorn_start.sh 这个脚本,这里我们说说 gunicorn 为什么杀不掉。

  1. pstree -ap|grep gunicorn //查看 gunicorn 的进程情况(当然有许多方式可以查看)
  2. //需要说明的是这里你使用: kill -9 PID 是杀不掉进程的, 还记得上面说的 supervisor 的概念吗?
  3. //supervisor 会不停的监听这个进程,当进程关闭后会不停的启动。所有这里如果8000端口被占用了两种方法:
  1. 停止 supervisor ;
  2. 修改 gunicorn_start.sh 位置或者名称再杀掉进程。
  • 使用 Nginx 进行反向代码,进一步提高网站性能反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
    1. 那么拉起 Nginx 的时候应该注意什么呢 ?
  1. 是否安装成功
  2. 文件访问权限是否够, 或者访问的文件资源是否是 Nginx 配置文件中的用户。

cd /etc/nginx/nginx.conf  user root; //修改为文件资源的用户名

如何远程管理项目?

  1. 使用 PyCharm 可以友好的修改代码和更新代码
    开发流程: 工具栏 — Tools—-Deployment—-配置
  2. 使用 MySQL Workbench 优雅的管理数据库

mysql> use mysql;mysql> update user set host = '%' where user = 'root'; //授予任务主机使用root访问权限

6. 安全问题

  1. 确保防火墙打开
  2. 确保服务器商的安全规则端口不要全部打开值打开对应的
  3. 更换默认的端口
  4. 尽量把密码设置为复杂类型
  5. 把管理后台名称 默认 admin 修改
赞(0)
未经允许不得转载:飞天狒狒 » 使用Django快速搭建博客

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址