Ghost博客搭建(二)

博客的基本配置,主要是解决域名重定向的问题。

Ghost博客搭建(二)

上节主要说明了ghost的基本安装,这节主要内容为配置文件的设置。

基础配置

7d09283-cli-install-config
如果一切顺利的话,应该能得到上面的界面。
(这个是从官方文档找的图,自己安装的时候没有去截图,版本号会不一样,其他的差不多)
需要的东西主要是:域名(url)、之前安装的mysql数据库账号、邮箱(用于SSL)。

下图为ghost setup运行结果,主要是相关配置
(已经配置过一次,所以大部分都跳过了)
QQ--20180531125105
必填项有:

博客网址
数据库主机名
数据库用户名
数据库密码
数据库名称

后面会给出一些其他的配置选项,有这些:
Do you wish to set up "ghost' mysql user?
是否配置ghost的服务器账户;
Do you wish to set up nginx?
配置nginx
Do you wish to set up ssl?
配置ssl证书(调用acme.sh,证书来自let's encrypt),配置的时候需要填入邮箱用于验证。证书有效期为三个月。
Do you wish to set up systemd?
设置开机自启
Do you want to start Ghost?
是否启动ghost;

DNS设置

当然,在此之前需要在域名提供商处修改DNS(domain name system),使用A标签,IP指向服务器ipv4地址(ipv6使用AAAA标签)。
HOSTNAME为三级域名(裸域名不填或者填@),IPV4地址为服务器IP,TTL为存活时间。
QQ--20180531170438
CNAME可以实现域名重定向,不过更推荐在NGINX中设置。
QQ--20180531165905

配置完成以后就可以进浏览器登录ghost网页了。
如果添加了SSL证书的话,控制台界面为https://域名/ghost

域名重定向(URL redirection)

首先要区分http和https,第一种信息明文发送,第二种采用了加密,现在大部分浏览器都会标识http网页为不安全,所以使用SSL证书加密网站是很有必要的。并且应当设置http重定向至https,以防用户访问出错。

然后要区分的是https://www.example.comhttps://example.com ,两者是不同的域名,可以指向两个网页,只是大部分网站对此做了优化,指向同一网页。
www开头的次级域名通常作为主页使用,不含www的一般称为裸域名。

比如访问http://baidu.com ,会自动跳转至https://www.baidu.com

为了实现重定向,两个域名都应当拥有ssl证书,可以调用ghost cli或者 acme.sh得到

#假设博客域名为example.com
cd /var/www/ghost
ghost config url https://www.example.com
ghost setup nginx ssl
ghost config url https://example.com

证书存放路径为/etc/letsencrypt,如果使用amce.sh,请注意ghost把路径改到了上面的文件夹,不会像acme.sh的说明文档一样,在~/.amce.sh文件夹内操作。

Nginx的配置文件放在目录/etc/nginx
ghost cli的配置是通过/etc/nginx/sites-available 下的软链接连接到
/var/www/ghost/system/files/your-domain.com-ssl.conf /var/www/ghost/system/files/[]your-domain.com.conf

一番作死之后找到了可以用的方式,没采用ghost自带的nginx配置方式。
我的做法是更改nignx.conf文件,去掉include /etc/nginx/sites-enabled/*;

server部分如下:(包含在http{}中)

server {
# example.com配置
    listen 80;
    listen [::]:80;
    
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    
    server_name example.com;
    root /var/www/ghost/system/nginx-root;
    ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/liyangkai.com/example.com.key;
    include /etc/nginx/snippets/ssl-params.conf;
    
    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;
}

server {
# http重定向
    if ($host = example.com)
    {
        return 301 https://$host$request_uri;
    }
    if ($host = www.liyangkai.com)
    {
        return 301 https://example.com$request_uri;
    }
  }
  
server {
# www.example.com ==> example.com
    server_name www.example.com;
    
    listen 443 ssl;
    
    ssl_certificate /etc/letsencrypt/www.example.com/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/www.example.com/www.liyangkai.com.key;
    include /etc/nginx/snippets/ssl-params.conf;
    
    return 301 $scheme://example.com$request_uri;
 }

至此,博客搭建基本完成,剩下的主要是自定义、美化和添加内容。
配置过程遇到问题,想寻求帮助可以前往ghost论坛