Ghost 博客搭建
写在前面
本来不打算自己折腾搭建博客,自己维护也比较麻烦。非常喜欢简洁风格的Bitcron,但是多次申请邀请码无果,只好放弃。
在选择自己搭建博客后,参考了不少资料,这里特别感谢晚晴幽草轩 | 知乎 | 天玑博客。
Ghost 搭建
Ghost 博客介绍
Ghost是一个基于NodeJs完全开源的,用于构建和运行现代出版物的强大平台,平台支持博客、杂志、新闻等发布。它由前WordPress UI部门主管 John O’Nolan和WordPress 高级工程师(女) Hannah Wolfe 创立,目的是为了给用户提供一种更加纯粹的内容写作与发布平台,使命是为世界各地的独立记者和作家创建最好的开源工具。Ghost成立于2013年4月,在2013年9月份Ghost正式向公众发布。现在已经更新了多个版本,各方面也逐渐完善起来了,到目前(201910)Ghost已更新到了2.31.1版本,超过百万用户。
Ghost 优点
- 简洁、易用、高效、优雅
- 专注写作,支持在线预览,完美支持MarkDown
- 开放的REST风格API
- 新发布了桌面客户端
安装 Ghost
采用了CentOS Docker 安装
环境准备
- 阿里云服务器
- 已备案域名
安装步骤
1. 安装 Docker
2. 下载 ghost 镜像
docker search ghost
docker pull ghost
docker images ghost
3. 运行 ghost 镜像
注意,根据情况来修改
docker run -d --name itmm-ghost -p 2368:2368 -v ~/blog:/var/lib/ghost/content -e url=https://blog.itmm.wang -e mail__transport=SMTP -e mail__options__host=smtpdm.aliyun.com -e mail__options__port=465 -e mail__options__auth__user=admin@email.itmm.wang -e mail__options__auth__pass=xxxxxxx -e mail__options__secureConnection=true -e mail__from=admin@email.itmm.wang ghost
--name: 为容器指定一个名称,可以自定义。
-p: 端口映射,格式为:主机端口:容器端口,不通过nginx做代理的话可以直接映射到80端口(80:2368)。
-v:主机的文件夹~/blog映射到容器的/var/lib/ghost/content。如果使用默认主题就不需要映射文件夹了,主题定制、汉化等就需要映射(映射修改好的ghost系统content文件夹即可)。
-e:设置环境变量,可无,可以设置搭建好的系统访问地址(url=https://blog.itmm.wang)。后面-e mail相关的命令是配置邮件推送方面的参数,用的是阿里云邮件推送,为了解决阿里云服务器安装了不能发邮件的问题。如果遇到类似问题,可以参考上面命令的相关配置修改即可。
4. 检查安装是否成功
docker ps
用Docker安装搭建Ghost就完成了,非常简单,其实只需要两步,下载ghost镜像,让它跑起来就OK。
配置 Nginx
# Ghost 博客服务
server {
listen 80;
server_name blog.itmm.wang;
rewrite ^(.*) https://$server_name$1 permanent;#强制将http重定向到https
}
server {
listen 443 ssl;
server_name blog.itmm.wang; #填写绑定证书的域名
# 这里是阿里云证书的协议配置
ssl_certificate cert/blog.itmm.wang.pem;
ssl_certificate_key cert/blog.itmm.wang.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;#按照这个套件配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:2368/;
proxy_cookie_path /ghost/ /;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
参考资料