说说我的博客

2020年06月02日 未雨晴空 17评论 2744阅读 381喜欢

 前言

    首先,欢迎大家访问我的博客,现在运行的博客已经是第五个版本了吧(因为一直折腾呀,所谓生命不止,折腾不休哈哈)。先看下本博客的项目架构吧,架构如下:

类别

选型

编程语言

python

后端框架

django

数据库

postgresql

缓存

redis

项目架构

supervisor+gunicorn+nginx

构建工具

docker

容器管理

docker-compose

目前整个项目是放在通过本地构建镜像推送到镜像仓库,然后利用docker-compse来管理容器的。贴一下我的docker-compose.yml

version: "3"
services:

  app-redis:
    image: redis:4.0-alpine
    container_name: app-redis
    restart: always
    volumes:
      - ./data/redis:/data

  app-postgres:
    image: postgres:10-alpine
    container_name: app-postgres
    restart: always
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=xxxx
      - POSTGRES_USER=xxxx
      - POSTGRES_PASSWORD=xxxx
    ports:
      - "0.0.0.0:5432:5432"

  app-blog:
    image: xxxxxxxxxxxxxxxxxxxxx
    container_name: app-blog
    restart: always
    depends_on:
      - app-redis
      - app-postgres
    volumes:
      - ./data/backend:/data
    environment:
      - POSTGRES_DB=xxxx
      - POSTGRES_USER=xxxx
      - POSTGRES_PASSWORD=xxxx
    ports:
      - "0.0.0.0:80:8000"
      - "0.0.0.0:443:1443"

有了docker,到时候整站迁移也方便点,毕竟不用担心更好服务器后环境没有的问题了。那说下我的建站过程吧,博主在开发博客网站的时候是开发好页面原型,熟悉django的人应该知道django是可以基于template模板语言开发,如果网站页面原型搭建好了,剩下的就是完成后台逻辑,进行数据渲染就ok了。这里就贴一下我的当时写好的所有页面原型目录,看图如下↓↓

1fc9a2c23691450b89f495a99600167a.png

目前博主正在推出一个django搭建博客系列教程,算是整理下自己的搭建(踩坑)过程,同时也方便提供一些对django感兴趣的人借鉴之处。其实很早就准备写了只不过当时发现自己搭建这个博客的时候笔记比较凌乱,如果要推出有体系的教程,挺费时间的,加上工作比较忙。现在疫情,居家办公,所以时间多点,可以好好整理写出来,开始盘他娘一个教程。

 博客页面

    博客门户页面都是基于bootstrap4.3框架进行开发,由于bootstrap支持响应式布局,所以本博客在pc端、手机端以及ipad均兼容显示。页面大量使用到了bootstrap组件的来开发功能,整个网站开发下来的确省了不少事情。当然页面也依赖了不少开源的优秀js插件,前端就是这样子嘛,光有页面,没有交互那肯定不行的。如图片预览、文章阅读模式等。门户页面不需要一一展示了,大家都可以点点看。

后台页面目前是用的django-simpleui来增加后台UI效果,效果如下图:

 博客后台

    博客后端是基于django3.2搭建的,目前项目涉及到主要的应用如下:

应用

功能点

system

用户管理|导航管理|文件管理|系统管理|邮件管理|友链管理

comment

评论管理

article

文章管理|标签管理

uploader

文件上传扩展

editor

集成editormd和ueditor两种编辑器

simleui

集成django-simpleui

django-celery-result

celery任务管理

django-celery-beat

定时任务管理

博客文章后台支持markdown编辑器和百度UEditor编辑器,因为偶然发现秀米编辑器支持UEditor编辑器,这样可以用来写一些个人随笔(秀米编辑器样式比较多哈哈),markdown主要是写技术文章,方便到时候多端同步。文章搜索接口则是利用django-haystack来完成站点文章搜索功能的,搜索结果支持搜索关键词高亮显示。同时文章支持了三种加密方式:①全文加密;②部分内容加密;③部分内容需要登陆及任意评论站点内容一次。博客解决了markdown和ueditor代码样式美化的问题,支持文章设置多种代码风格。

    博客的评论并没有引入开源的第三方评论系统如valine和gittalk,主要是自己觉得博客评论这块挺重要,涉及到的技术难点挺多,也想挑战下自己,所以本博客评论功能是自己摸索开发出来的,支持评论回复邮件通知。

    站点注册的话目前博客支持邮箱注册,建议使用QQ邮箱可以同步qq头像不然就是站点默认头像。另外为了防止垃圾评论,评论会统一邮件通知博主本人审核评论,审核通过才会显示,大家放心,如果是qq头像,本站已经对qq头像地址已进行了加密处理,不会暴漏大家的qq。希望来访的人尽可能真诚,莫不要随便填个邮箱,以免本站点邮件发送到他人邮箱,感谢理解。

    博客在开发初期遇到多个文章共享同一个封面图片的问题,但是这个图片已经存在,不可能再重复上传一张(当时是因为服务器磁盘太小啦,重复图片浪费空间啦)。所以也是自己扩展开发了UploaderField。用来选取图片。效果如下:

 博客部署

    本博客项目运行环境为nginx+gunicorn+supervisor,supervisor用来管理gunicorn、nginx、celery-worker、celery-beat进程。利用docker构建项目镜像推送到腾讯云镜像仓库,通过docker-compose配置yml文件来管理docker容器完成站点部署。



  1. 菜鸟程序猿
    2022-09-11 23:09:18

    页面设计很美

    回复
    1. 2022-09-11 23:09:53

      谢谢

      回复
  2. amelie
    2020-10-31 09:10:14

    看起来很不错,从刚刚从追梦人生那里学习了搭建简单的博客,希望自己也能整出个漂亮点的博客

    回复
    1. dyp amelie
      2020-12-09 14:12:07

      追梦人生的网站打不开了。

      回复
    2. 2020-10-31 09:10:01

      谢谢,如果能自己搭建一个出来。相信我,这其中的过程会带给你很多前所未有的感觉。

      回复
  3. 675675
    2020-10-26 12:10:33

    8

    回复
    1. 2020-10-26 12:10:04

      朋友,你好。欢迎你的到来!

      回复
  4. huanyy
    2020-08-31 15:08:29

    大佬就是大佬,真是太强了,俺之前用Django搭了一个小博客,看到大佬也是用Django搭建的,崇拜哈哈!!!我要去整第二版了,期待博主后面出一些架构思路之类的,可以给我这样的小白提供一些帮助,哈哈,太强了...

    回复
    1. 2020-08-31 15:08:24

      不瞒你说,我也是搭建了好多个版本的博客,这个算是心血投入比较多的,也是加入了自己的想法,毕竟自己亲手一点点实现那成就感爆棚啊!欢迎一起交流学习。

      回复
  5. hpp
    2020-06-26 16:06:18

    网站源码可以开源吗?

    回复
    1. 2020-06-26 16:06:11

      不好意思,考虑到本站搭建时间不长,目前本网站代码还不打算开源。后期准备出一个简单一点的但架构与当前博客架构一致的django搭建博客教程。

      回复

发表评论 取消回复

电子邮件地址不会被公开。

请输入以http或https开头的URL,格式如:https://oneisall.top