前言
前言
首先,欢迎大家访问我的博客,现在运行的博客已经是第五个版本了吧(因为一直折腾呀,所谓生命不止,折腾不休哈哈)。先看下本博客的项目架构吧,架构如下:
类别 | 选型 |
编程语言 | 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了。这里就贴一下我的当时写好的所有页面原型目录,看图如下↓↓
目前博主正在推出一个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 | 定时任务管理 |
博客的评论并没有引入开源的第三方评论系统如valine和gittalk,主要是自己觉得博客评论这块挺重要,涉及到的技术难点挺多,也想挑战下自己,所以本博客评论功能是自己摸索开发出来的,支持评论回复邮件通知。
站点注册的话目前博客支持邮箱注册,建议使用QQ邮箱可以同步qq头像不然就是站点默认头像。另外为了防止垃圾评论,评论会统一邮件通知博主本人审核评论,审核通过才会显示,大家放心,如果是qq头像,本站已经对qq头像地址已进行了加密处理,不会暴漏大家的qq。希望来访的人尽可能真诚,莫不要随便填个邮箱,以免本站点邮件发送到他人邮箱,感谢理解。
博客在开发初期遇到多个文章共享同一个封面图片的问题,但是这个图片已经存在,不可能再重复上传一张(当时是因为服务器磁盘太小啦,重复图片浪费空间啦)。所以也是自己扩展开发了UploaderField。用来选取图片。效果如下:
博客部署
博客部署
本博客项目运行环境为nginx+gunicorn+supervisor,supervisor用来管理gunicorn、nginx、celery-worker、celery-beat进程。利用docker构建项目镜像推送到腾讯云镜像仓库,通过docker-compose配置yml文件来管理docker容器完成站点部署。
wfsf
回复啊23445566顶顶顶顶厉害
回复测试
回复*测试一下* ![](https://tse1-mm.cn.bing.net/th/id/OIP-C.4GHcYO2O55VemRT5NugjkgHaE8?w=278&h=185&c=7&r=0&o=5&dpr=1.3&pid=1.7)
回复6
回复老大我想要简单的代码,这太厉害了吧,打字还会发光
回复代码我写了教程呀
回复太厉害了,还是Python基础阶段,希望以后也能自己写一个这样的博客
回复加油,朋友
回复大佬,搭好的项目如何通过github上传到网络呢
回复这个就创建GitHub账号然后通过命令行或者git可视化工具将项目源代码上传到你的github仓库即可
回复页面设计很美
回复谢谢
回复看起来很不错,从刚刚从追梦人生那里学习了搭建简单的博客,希望自己也能整出个漂亮点的博客
回复追梦人生的网站打不开了。
回复谢谢,如果能自己搭建一个出来。相信我,这其中的过程会带给你很多前所未有的感觉。
回复8
回复朋友,你好。欢迎你的到来!
回复大佬就是大佬,真是太强了,俺之前用Django搭了一个小博客,看到大佬也是用Django搭建的,崇拜哈哈!!!我要去整第二版了,期待博主后面出一些架构思路之类的,可以给我这样的小白提供一些帮助,哈哈,太强了...
回复不瞒你说,我也是搭建了好多个版本的博客,这个算是心血投入比较多的,也是加入了自己的想法,毕竟自己亲手一点点实现那成就感爆棚啊!欢迎一起交流学习。
回复网站源码可以开源吗?
回复不好意思,考虑到本站搭建时间不长,目前本网站代码还不打算开源。后期准备出一个简单一点的但架构与当前博客架构一致的django搭建博客教程。
回复