yokon's blog

yublog 文档

2017.05.25

介绍

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:passworduser: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语法,上传图片可使用七牛图床进行上传获取外链。填写说明:

write

分类:技术   # 限制只能写一个分类
标签:docker,nginx  # 标签不限制个数,每个标签之间使用英文的逗号隔开
链接:nginx-and-docker  # 文章的URL,自己可以随意指定,建议有些意义
日期:2018-08-18  # 年月日间需使用-连接

标题:nginx和docker  # 文章标题

可以选择保存草稿,待下次编辑,也可以直接发布,当然后续更改也很方便。

管理文章

可以对所有发布过的文章进行更新或者删除操作,删除需进一步确认,以防误删。

admin-post

审核评论

为了防止垃圾评论污染,用户的评论一律需要自己审核通过还是删除。

管理链接

博客支持添加友情链接和社交链接,他们展示在不同的地方。不要搞错了:

add-link

添加专题

博客支持系列专题功能,专栏一般是一类文章的聚合,比如系列教程或者日记啥的,文章可以自行选择加密或者不加密。由于之前的偷懒,文章密码是设置在环境变量的,未来会改进。

column

侧栏插件

博客支持自定义的侧栏box插件:

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

qiniu

默认的外链域名为:

qiniu2

空间名是个人创建的仓库名。

qiniu3

七牛图床主要是为了更方便的管理上传于七牛云的图片,目前支持上传,更名,删除等操作。

TODO

  • 更加美观的页面;
  • 更加人性化的管理后台;
  • 优化新评论邮件通知功能;
  • 七牛图床批量操作功能;
  • 更自由的专栏文章密码设定;
  • 改进评论系统;
  • other

最后

这是我个人使用的博客应用,开始只是用着感觉不错,后来有很多朋友说喜欢,发邮件和我说用的很麻烦,有很多疑问。这怪我在写的时候只按自己的喜好,没有想过太多,如果可能我会一直保持对他的改进。