本篇是一个纯技术向的文章,需要你对计算机以及前端的知识进行一定的了解。一定会有人问:“都 2020 年了,做博客还有意义吗?”,其实这个意义看你怎么看待了。在现今这个流量社会,人们的关注点都被吸引在了微信公众号、微博、知乎等头部平台。如果你想在里面写作,那么相对的就要遵守规则。
而建立自己的网站,某种意义上来说就是为了追寻自由,可以被搜索引擎收录,可以与各式各样入口的人交流,被观察到。发展到现在,网站分为 静态网站
和 动态网站内
,最明显的区别就是是否用到了 数据库
。有数据库就意味着有后台
,就可以在线编辑,发布管理文章;但是对应的也需要很多其他的成本,比如说服务器。
Ghsot 简介
Ghost 是一款基于 Node.js 语言和 MySql 数据库的个人博客系统。其设计主旨是简化个人网站发布以及网上出版的过程。创始人是 Wordpress 的前员工。从 2013 年发布第一个版本以来,到今年的 v3.0,功能越发的完善。如果你不喜欢 Wordpress 的臃肿,那 Ghost 无疑更加的适合你。
官方推荐配置:
- Ubuntu 16.04,Ubuntu 18.04 或 Ubuntu 20.04
- NGINX(支持 SSL 的最低版本为 1.9.5)
- 一个支持版本的 Node.js
- MySQL 5.7 或 8.0
- Systemd
- 至少有1GB内存的服务器
- 注册域名
Ghost 安装
目前为止我尝试了三种安装方式:
- 本地安装:适合自己玩,体验 Ghost;以及开发测试主题。
- 服务器部署:需要服务器和域名。
本地安装
本地安装的官方教程:https://ghost.org/docs/install/local/
主要分为三步:
- 在本地下载一个官方推荐版本的 Node.js
- 安装 Ghost-CLI
npm install ghost-cli@latest -g
安装完成后,可以运行 ghost help
查看支持的命令列表。
- 建立一个空的文件夹,安装 Ghost
首先建立一个空的文件夹,进入这个文件夹,运行以下命令:
ghost install local
安装完成后,可以访问 http://localhost:2368
浏览新站点。
也可以访问 http://localhost:2368/ghost
访问 Ghost 的后台。
服务器部署
来到了这一步,相信你已经有一定的心里准备了,那么开始吧。
- 我们要有一个自己的服务器,博主用的是阿里云。现在他们家也在进行双十一的活动,一年85元,三年只需 255 元(注意:仅限新用户)
- 登陆服务器
现在要首先确定下你的系统是否为 Ubuntu 16.04,Ubuntu 18.04 或 Ubuntu 20.04,如果是那么恭喜你,可以按照官方教程一步一步走。
Ghost 官方教程:https://ghost.org/docs/install/ubuntu/
如果不是,那么有以下两个选择:(不过这两者是类似的,都是需要在 Nginx 这块需要自己手动配置)
- 虽然是 Ubuntu 系统,但是已经安装了宝塔等面板,那么安装的时候会出现一些波折。不过幸运的是博主已经帮你踩了这些坑。
- Centos 等非官方推荐版本,那么同样也要恭喜你,博主也已经帮你折腾完了,你只需要照着做就可以了。
安装步骤 CentOS:
- 安装必要的组件:
# Install NGINX
sudo apt-get install nginx
# 激活 ufw,允许 HTTP 和 HTTPS 连接
sudo ufw allow 'Nginx Full'
# Add the NodeSource APT repository for Node 12
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash
# Install Node.js
sudo apt-get install -y nodejs
# Install MySQL
sudo apt-get install mysql-server
在进行接下来的步骤前,需要添加 Ghost 的数据库及所属用户。在下面的 Ghost 安装的过程中需要普通用户进行操作,而普通用户没有权限登陆 MySQL,需要我们先配置好。Centos 和 Ubuntu 也需要进行这个操作!
mysql -uroot -p
create database <数据库名称>;
create user <数据库用户名> identified by '<数据库密码>';
grant all privileges on <数据库名称>.* to <数据库用户名>@'localhost' identified by '<数据库密码>';
flush privileges;
exit
- 安装 Ghost-CLI
html sudo npm install ghost-cli@latest -g
安装完成后,可运行命令 ghost help
查看命令列表。
- 安装 Ghost
出于安全考虑,在接下来的操作中不能使用 root
用户,所以我们要新建一个用户,把下面的 <user>
换成用户名(不要起名 ghos,容易起冲突)。
# Create a new user and follow prompts
adduser <user>
# Add user to superuser group to unlock admin privileges
usermod -aG sudo <user>
# Then log in as the new user
su - <user>
接着需要创建一个空文件夹,用来安装 Ghost。
# We'll name ours 'ghost' in this example; you can use whatever you want
sudo mkdir -p /var/www/ghost
# Replace <user> with the name of your user who will own this directory
sudo chown <user>:<user> /var/www/ghost
# Set the correct permissions
sudo chmod 775 /var/www/ghost
# Then navigate into it
cd /var/www/ghost
安装 Ghost。
ghost install
安装过程根据主机性能来决定,下面是选项配置讲解:
Enter your blog URL:
博客展示地址,格式:http(s):(www.)example.com
,不支持ip地址。Enter your MySQL hostname:
数据库主机地址,回车默认是localhost
。Enter your MySQL username: / Enter your MySQL password:
数据库用户名/密码,上面安装的数据库用户名是root
,密码是自己设置的。Enter your Ghost database name:
Ghost博客数据库名Do you wish to set up "ghost" mysql user?
设置数据库用户名为ghost
,这个为了避免权限太大导致数据瞎搞,Ghost官方推荐是y
。Do you wish to set up Nginx?
自动化Nginx,推荐y
。Do you wish to set up SSL?
配置SSL
证书,推荐y
,如果你有证书问题,请查看文章最下面的问题。Enter your email (For SSL Certificate):
个人邮箱,配置ssl证书需要的邮箱地址。Do you wish to set up Systemd?
使用ghost进程管理工具,推荐y
,个人觉得海星。Do you want to start Ghost?
启动Ghost博客就可以进入网址访问。
注意:
System checks failed with message: 'Linux version is not Ubuntu 16 or 18'
Some features of Ghost-CLI may not work without additional configuration.
For local installs we recommend using `ghost install local` instead.
? Continue anyway? Yes #提示系统不是ubuntu,是否继续?当然
- 还有个问题就是在安装的过程中会碰到下载失败的问题,再次安装就会提示
A SystemError occurred.
Message: Current directory is not empty, Ghost cannot be installed here.
#对应的解决办法是:
#只需要执行 rm -rf *,删除全部文件,然后再次执行安装命令即可;、
#如果还是提示目录非空的话,那就删除 .ghost-cli 文件
如果可以正常启动那么恭喜你,你已经可以访问你的博客了。如果不可以那么大概率是 Nginx 配置的问题。那么接下来我们继续
Nginx 配置
博主遇到的情况是,在 Ubuntu 上安装宝塔面板,之后在面板里安装的 Ghost,但是由于宝塔面板安装的 Nginx 的默认位置与 Ghost 设置时的位置不一致,导致检测不到,无法自动配置 Nginx,所以需要我们手动设置 Nginx 的配置文件。
CentOS 情况类似,也是 Ghost 设置安装过程中无法检测,自动配置文件,都需要我们手动配置。
我们需要先运行 nginx -t
来检查下文件的路径,比如我的显示的是 /www/server/nginx/conf/nginx.conf
。
博主的由于是宝塔面板,所以需要在 /www/server/panel/vhost/nginx
下新建一个配置文件,填入以下内容:
如果你的不是宝塔面板,可以在 /etc/nginx/conf.d/
下新建文件填入!
server {
listen 80;
listen [::]:80;
server_name huozk.com; #你的域名
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
location ~ .well-known{
allow all;
}
client_max_body_size 50m;
}
填写完成后,只需重启下 Nginx 即可 systemctl restart nginx
SSL + HTTPS
如果你想为你的网站启用 SSL,那么就需要在 Nginx 中额外监听 443 端口,以及链接公钥和私钥。需要修改上述配置如下:
server {
listen 80;
listen 443 ssl;
listen [::]:80;
server_name huozk.com; #更改为你的域名
ssl_certificate "/www/server/panel/vhost/ssl/huozk.com/_.huozk.com.crt";
ssl_certificate_key "/www/server/panel/vhost/ssl/huozk.com/_.huozk.com.key";
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
#一键申请SSL证书验证目录相关设置
location ~ .well-known{
allow all;
}
client_max_body_size 50m;
}
到此,就大功告成了。你可以登录后台,跟着指引进行配置了。恭喜你,成为一名知识分享者!
多个域名设置
一般来说,我们都会用顶级域名来设置进入我们的博客,但是同时也会设置 www.huozk.com
这种方式来做另一个入口,那么我们需要怎么来做呢?
- 重新配置:
ghost config url https://www.huozk.com
- 为该域名申请证书:
ghost setup nginx ssl
- 再把域名修改回来:
ghost config url https://huozk.com
- 还需要建立 Nginx 的配置文件,内容与上面类似。
- 添加 301 跳转到顶级域名:
if ($ssl_protocol = "") {
return 301 https://$host$request_uri;
}
if ($host != iiong.com) {
return 301 $scheme://huozk.com$request_uri; #请注意这里的huozk.com替换你的域名。
}
- 重启 Nginx 服务
systemctl restart nginx
开发测试主题环境搭建
如果你想从零开发一个新的主题,那么非常推荐你看官方主题开发文档:https://ghost.org/docs/api/v3/handlebars-themes/
如果你不想这么麻烦只想在官方主题的基础上修改下样式,那么可以按照以下步骤搭建环境:
- 下载主题源文件,上传到本地搭建的 Ghost 里面。
- 找到
D:WebProjectsGHostcontentthemes
进入里面。 - 你还需要在你的电脑上全局安装
Yarn
和Gulp
。 - 命令行进入主题文件夹中,运行:
# Install
yarn
# npm 包下载
npm install
5. 如果你需要开发和测试主题,那么需要进入开发模式
# Run build & watch for changes $ yarn dev
6. 之后进行打包,执行命令后会打包到 dist/<theme-name>.zip
,现在你可以在你部署的博客里上传使用了。
yarn zip
END
总的来说,Ghost 虽然没有 Wordpress 安装那么轻松,但是其简介大方的后台和主题,还是很让人值得尝试的。而且使用了之后确实比 Wordpress 速度快(不过也和服务器带宽等有关联)。
参考链接
- https://ghost.org/docs/install/ubuntu/
- https://ghost.org/docs/install/local/
- https://xiaoyc.com/2020/10/15/2020-10-build-website-with-ghost/
- https://www.techsir.com/a/2020/01/60604.html
- https://www.moonue.com/03/521/
- https://www.ldsun.com/https-wei-ghostshe-zhi-ssllian-jie/
- https://iiong.com/gost-blog-install-notes/
关注微信公众号:huozk-com,查看更多关于技术、游戏、折腾的内容。