介绍
YuBlog 是一款功能强大且高度自由的个人博客应用。
安装
下载github
文件:here
安装依赖
pip install -r requestments.txt
Docker部署
使用docker-compose
管理各容器组件,一键部署:
安装Docker
使用官方提供的脚本安装:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
执行$ docker info
命令查看安装是否成功。
安装docker-compose:
Compose
项目是 Docker
官方的开源项目,负责实现对 Docker
容器集群的快速编排。从功能上看,跟 OpenStack
中的 Heat
十分类似。由于docker-compose
是使用 Python 编写的,可以直接使用pip
安装:
$ pip install docker-compose
启动
$ docker-compose up -d
停止运行:
$ docker-compose down
查看日志:
$ docker-compose logs # 查看总的容器日志
$ docker-compose logs web # 查看web应用运行日志
$ cat source/app.log # 由于我将uwsgi的日志输入到该log文件,可以直接查看
传统部署
详细部署方案:here
配置
博客运行前需要在config.py
中配置必须信息。YuBlog 采用mysql
存储,redis
做部分缓存,需配置数据库信息。linux 的mysql安装配置可参考上方部署方案。
mysql
的配置需根据使用场景选择配置,开发场景配置DevelopmentConfig
类中的SQLALCHEMY_DATABASE_URI
的信息。同样的生产环境的配置在ProductionConfig
类的SQLALCHEMY_DATABASE_URI
信息。其中默认的root:password
为user:password
,@localhost:3306/db
为@<host>:<port>/<db-name>
。
redis
的配置为:
# 配置类型,可选`simple`不使用 redis 数据库(不推荐)
CACHE_TYPE = 'redis'
CACHE_REDIS_HOST = '127.0.0.1'
CACHE_REDIS_PORT = 6379
CACHE_REDIS_DB = os.getenv('CACHE_REDIS_DB') or ''
CHCHE_REDIS_PASSWORD = os.getenv('CHCHE_REDIS_PASSWORD') or ''
其中私密信息建议使用环境变量的形式配置,如CHCHE_REDIS_PASSWORD
防止csrf攻击配置
CSRF_ENABLED = True
# 密钥
SECRET_KEY = 'you-guess'
分页条数配置
# 每页显示文章条数
POSTS_PER_PAGE = 10
# 管理文章页,每页显示条数
ADMIN_POSTS_PER_PAGE = 20
# 归档页文章条数
ACHIVES_POSTS_PER_PAGE = 20
# 搜索结果页每页条数
SEARCH_POSTS_PER_PAGE = 15
# 文章评论分页,每页条数
COMMENTS_PER_PAGE = 10
# 管理评论,每页条数
ADMIN_COMMENTS_PER_PAGE = 50
管理员初始设置
# 管理员姓名
ADMIN_NAME = 'kyu'
# 管理员登录信息
ADMIN_LOGIN_NAME = 'login-name'
# 登录密码
ADMIN_PASSWORD = os.getenv('ADMIN_PASSWORD') or 'password'
# 博客名
SITE_NAME = '意外'
# 博客标题
SITE_TITLE = '我的博客'
# 管理员简介
ADMIN_PROFILE = '克制力,执行力'
同样的ADMIN_PASSWORD
配置建议使用环境变量,初始设置除了登录名和登录密码,可以直接选择默认,可以在管理页面修改。
站点配置
# rss 配置
# 站点协议
WEB_PROTOCOL = 'http/https'
# 站点域名
WEB_URL = 'domain name'
# 站点创建时间
WEB_START_TIME = '2018-08-18'
# 显示条数
RSS_COUNTS = 10
# 发送邮件用户登录
MAIL_USERNAME = os.getenv('MAIL_USERNAME')
# 客户端登录密码非正常登录密码
MAIL_PASSWORD = os.getenv('MAIL_PASSWORD')
MAIL_SERVER = os.getenv('MAIL_SERVER') or 'smtp.qq.com'
MAIL_PORT = os.getenv('MAIL_PORT') or '465'
ADMIN_MAIL_SUBJECT_PREFIX = 'blog'
ADMIN_MAIL_SENDER = 'admin.com'
# 接收邮件通知的邮箱
ADMIN_MAIL = os.getenv('ADMIN_MAIL')
# 站点搜索的最小字节
WHOOSHEE_MIN_STRING_LEN = 1
# 专题保密文章的密码,建议设置环境变量
ARTICLE_PASSWORD = os.getenv('ARTICLE_PASSWORD') or 'password'
七牛图床配置
七牛图床是我个人使用,后来发现还很方便的功能,默认不开启。如需使用可将NEED_PIC_BED
配置为True
。
# 七牛云存储配置
NEED_PIC_BED = False
QN_ACCESS_KEY = os.getenv('QN_ACCESS_KEY') or ''
QN_SECRET_KEY = os.getenv('QN_SECRET_KEY') or ''
# 七牛空间名
QN_PIC_BUCKET = 'bucket-name'
# 七牛外链域名
QN_PIC_DOMAIN = 'domain-url'
本地使用
使用前确认是否开启了mysql,配置了相关信息。
- 创建迁移仓库:python manage.py db init;
- 创建迁移脚本:python manage.py db migrate -m “v1.0”;
- 更新仓库:python manage.py db upgrade;
- 创建管理员信息:python manage.py addAdmin;
- 运行程序:python manage.py runserver –host 0.0.0.0;
访问地址:http://127.0.0.1:5000
管理员地址: http://127.0.0.1:5000/admin
生产环境
如果程序成功部署,启动前需配置环境变量为生产环境:
windows
配置:C:\Users\Administrator>set CONFIG=production
’linux’配置:$ sudo export CONFIG=production
编辑文章
后文对网站的编辑操作,只允许有管理员权限的用户操作。
YuBlog
支持markdown
语法,上传图片可使用七牛图床进行上传获取外链。填写说明:
分类:技术 # 限制只能写一个分类
标签:docker,nginx # 标签不限制个数,每个标签之间使用英文的逗号隔开
链接:nginx-and-docker # 文章的URL,自己可以随意指定,建议有些意义
日期:2018-08-18 # 年月日间需使用-连接
标题:nginx和docker # 文章标题
可以选择保存草稿,待下次编辑,也可以直接发布,当然后续更改也很方便。
管理文章
可以对所有发布过的文章进行更新或者删除操作,删除需进一步确认,以防误删。
审核评论
为了防止垃圾评论污染,用户的评论一律需要自己审核通过还是删除。
管理链接
博客支持添加友情链接和社交链接,他们展示在不同的地方。不要搞错了:
添加专题
博客支持系列专题功能,专栏一般是一类文章的聚合,比如系列教程或者日记啥的,文章可以自行选择加密或者不加密。由于之前的偷懒,文章密码是设置在环境变量的,未来会改进。
侧栏插件
博客支持自定义的侧栏box
插件:
如果想要保持侧栏固定顶部,需要勾选广告选项。插件支持原生的html,css,js语法。但要保持宽度不得超过父元素,建议不超过230px。
<a href="https://www.yukunweb.com/static/upload/wenwen.png" target="_blank">
<img src="https://www.yukunweb.com/static/upload/wenwen.png" alt="wenwen" style="width:230px;">
</a>
更多的玩法有待考虑。
上传文件
由于是个人使用,没有对上传的文件做进一步的过滤操作。建议大家不要随意上传.php
、.sh
、.py
的文件。上传的文件位于静态目录:app/static/upload
下,可以使用http://<server-name>/static/upload/<filename>
访问。
七牛图床
如需使用七牛图床,需要配置好七牛图床的信息。包括个人的AccessKey/SecretKey
:
默认的外链域名为:
空间名是个人创建的仓库名。
七牛图床主要是为了更方便的管理上传于七牛云的图片,目前支持上传,更名,删除等操作。
TODO
- 更加美观的页面;
- 更加人性化的管理后台;
- 优化新评论邮件通知功能;
- 七牛图床批量操作功能;
- 更自由的专栏文章密码设定;
- 改进评论系统;
- other
最后
这是我个人使用的博客应用,开始只是用着感觉不错,后来有很多朋友说喜欢,发邮件和我说用的很麻烦,有很多疑问。这怪我在写的时候只按自己的喜好,没有想过太多,如果可能我会一直保持对他的改进。