ubuntu24.04使用ghost搭建博客教程
主要参考了这两篇文档
具体步骤如下
# 创建一个新用户自己定义名字,这里要设置密码其他可以按回车跳过
adduser 新用户
#给新用户增加权限
usermod -aG sudo 新用户
#登录新用户
su - 用户名
sudo apt-get update //输这个后需要填刚才设置的密码
sudo apt-get upgrade //更新包
安装nginx
sudo apt-get install nginx
nginx -v //查看安装了没
安装mysql
sudo apt-get install mysql-server
sudo mysql //进入mysql
CREATE DATABASE ghostdata; //创建一个数据库
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; //设置密码、
exit //退出mysql
安装node.js (这步一定要按照文档来)
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=22 # Use a supported version
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install nodejs -y
安装 Ghost-CLI
sudo npm install ghost-cli@latest -g
sudo mkdir -p /var/www/sitename //创建目录
sudo chown 新用户:新用户 /var/www/sitename
sudo chmod 775 /var/www/sitename
cd /var/www/sitename
安装ghost
ghost install
配置设置
? Enter your blog URL: http://你的域名 #Ghost博客的真实域名,直接输入你的域名,如果自己买了ssl证书,这里要打成:https://你的域名
? Enter your MySQL hostname: localhost #数据库的连接地址,本文中数据库在实例上,因此输入localhost即可
? Enter your MySQL username: root #数据库的用户名,此处输入root
? Enter your MySQL password: [hidden] #数据库的密码,请输入root的密码
? Enter your Ghost database name: ghostdata #Ghost使用的数据库,请输入mysql那步创建的数据库
后面填配置选y没有的它会自动跳过,出现你的网址就安装好了,如果还是不能访问请看下一步
Nginx反向代理+ssl生成
sudo apt update && sudo apt install nginx python3-certbot-nginx -y
创建nginx配置
sudo bash -c 'cat > /etc/nginx/sites-available/xxblog <<EOF
server {
listen 80;
server_name 你的域名 www.你的域名;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}EOF'
启用配置
sudo ln -sf /etc/nginx/sites-available/xxblog /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
启动 Nginx
sudo systemctl restart nginx
一键申请 Let’s Encrypt 免费 SSL(自动改配置 + 强制 https)
sudo certbot --nginx -d xxblog.top -d www.你的域名
按提示填邮箱 → Y → 2(强制跳转 HTTPS)
echo "全部完成!现在打开 https://你的域名 就是你的博客了!"
自己买了ssl证书
下载下来传到自己服务器上,一般商家会给你一个压缩包,解压
tar -xvf 你的域名.xx.tar
一般是这种格式
yourdomain.xx.crt ← 证书文件(也可能是 .cer / .pem)
yourdomain.xx.key ← 私钥文件
2145343.chain.crt ← 中间证书束(也可能是 bundle.crt / ca.crt)
)
一键写入完美兼容的 Nginx + HTTPS 配置(自动 http→https 跳转
sudo bash -c 'cat > /etc/nginx/sites-available/你的域名前面一部分 <<EOF
server {
listen 80;
server_name xxblog.top www.你的域名;
return 301 https://$host$request_uri; # http 自动跳 https
}
server {
listen 443 ssl http2;
server_name 你的域名 www.你的域名;
ssl_certificate /etc/ssl/你的域名前面一部分/123456789.pem; # ← 改成你的证书文件名
ssl_certificate_key /etc/ssl/你的域名前面一部分/123456789.key; # ← 改成你的私钥文件名
# 如果有 chain.pem 就加下面这行,没有就删掉这行
# ssl_trusted_certificate /etc/ssl/你的域名前面一部分/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
client_max_body_size 50m;
}
EOF'
我这里指的你的域名前面一部分就是比如百度是:baidu.com 前面一部分就是baidu,我这里默认不要www,因为最开始我在安装的时候输入的是
? Enter your blog URL: https://www.xxxx.com
nginx给我解析为wwww.xxxxx.com,这个异常也困扰了我很久。
另一个困扰我的就是域名一定要去解析绑定在主机上,不然外网就都无法访问,在哪买的域名就在哪解析
| 主机记录 | 记录类型 | 记录值(填你服务器的公网IP) | TTL |
|---|---|---|---|
| @ | A | 你的服务器公网IP | 600 |
| www | A | 你的服务器公网IP | 600 |

