开始之前:之前是用Cyberpanel内置的Docker 安装的Ghost博客网站,但是这次使用了新版本的Cyberpanel后发现失效了(也许在哪里需要重新设定下,或者是Cyberpanel的临时问题),想要通过其他方式安装Ghost,查过网上的资料后,才知道没这么简单,原因如下,在 Ghost 安装期间,Ghost CLI 会检查它是否具有对将安装 Ghost 博客的目录及其所有父目录拥有读写权限。但是 /home 目录中的所有内容(您的网站通常所安装的位置)都被锁定了,这个是用于防止多个网站间相互干扰的,但这也意味着无法通过 Ghost CLI 的检查,安装也会失败。
因此,这次将在 /home 目录之外的另一个/var/www 下创建一个新目录,供 Ghost 博客使用。
一.Ghost安装前的准备工作
在 /var/www 目录下,把目录名称设置成与 CyberPanel 中的域名一样,这样可以清楚地知道 这个目录的文件是属于哪个网站:
mkdir /var/www/blog.example.org
现在输入下列命令,列出 CyberPanel 站点建立的网站目录内容:
ls -al /home/blog.example.org
这里会显示为这个网站创建的CyberPanel用户 (例如 cloud1234),从这里开始将其称为 Ghost 用户:
drwx--x--x 4 cloud1234 bloge1234 4096 Jul 26 02:17 .
drwx--x--x 21 root root 4096 Jul 26 02:17 ..
drwxr-x--- 2 root nogroup 4096 Jul 26 02:17 logs
drwxr-x--- 2 cloud1234 nogroup 4096 Jul 26 02:17 public_html
对我们刚刚创建的/var/www/下的blog.example.org目录,授予 Ghost 用户读取和写入权限:
chown cloud1234:cloud1234 /var/www/blog.example.org
chmod 775 /var/www/blog.example.org
现在为 Ghost 用户设置密码,根据提示自己设置密码:
passwd cloud1234
将 Ghost 用户添加到 sudo 组(Ghost 工作所必需的):
adduser cloud1234 sudo
然后,就要切换到Ghost用户:
su - cloud1234
最后,进入我们将安装 Ghost 博客的目录。请注意,我们正在进入 /var/www下的目录 而不是 /home:
cd /var/www/blog.example.org
二.现在开始正式安装Ghost
用Ghost CLI安装 Ghost
ghost install --no-stack --no-setup-nginx --no-setup-ssl --db=sqlite3
- –no-stack: Avoid checking if server meets requirements.
- –no-setup-nginx: Don’t set up nginx; we’re using OpenLiteSpeed.
- –no-setup-ssl: Don’t set up SSL; we’re using CyberPanel.
- –db=sqlite3: use sqlite
--port 2368
: 默认不需要输入,如果需要其他端口输入其他的
参考 learn more about the Ghost CLI and its options
💡
这里输入之前为cloud1234设置的密码:
? Sudo Password [hidden]
要在服务器重启后自动启动 Ghost,请选择 Y 以设置 systemd:
? Do you wish to set up Systemd? Yes
最后,选择 Y 立即启动 Ghost 博客:
? Do you want to start Ghost? Yes
三.为Ghost配置virtual host
到 Websites > List Domains> blog.example.org > Manage 找到 vHost Conf .
把里面的东西清除后添加以下内容,注意里面红色标记是需要做相应修改的。绿色标记的另外用途。
docRoot $VH_ROOT/public_html
vhDomain $VH_NAME
adminEmails you@example.org
enableGzip 1
enableIpGeo 1
errorlog $VH_ROOT/logs/$VH_NAME.error_log {
useServer 0
logLevel WARN
rollingSize 10M
}
accesslog $VH_ROOT/logs/$VH_NAME.access_log {
useServer 0
logFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i""
logHeaders 5
rollingSize 10M
keepDays 10
compressArchive 1
}
extprocessor ghost {
type proxy
address localhost:2368
maxConns 100
pcKeepAliveTimeout 60
initTimeout 60
retryTimeout 0
respBuffer 0
}
context /.well-known/acme-challenge {
location /usr/local/lsws/Example/html/.well-known/acme-challenge
allowBrowse 1
}
context / {
type proxy
handler ghost
addDefaultCharset off
}
vhssl {
keyFile /etc/letsencrypt/live/blog.example.org/privkey.pem
certFile /etc/letsencrypt/live/blog.example.org/fullchain.pem
certChain 1
enableECDHE 1
renegProtection 1
sslSessionCache 1
enableSpdy 15
enableStapling 1
ocspRespMaxAge 86400
}
module cache {
storagePath /usr/local/lsws/cachedata/$VH_NAME
}
四.完工,查看你的Ghost博客
好了,你现在可以进入Ghost了,https://blog.example.org/ghost.