ubuntu24.04使用ghost搭建博客教程

ubuntu24.04使用ghost搭建博客教程
How To Install Ghost On Ubuntu - Ghost Developer Docs
A full guide for installing, configuring and running Ghost on your Ubuntu **22.04** or **24.04** server, for use in production
搭建Ghost博客--云服务器-火山引擎
火山引擎官方文档中心,产品文档、快速入门、用户指南等内容,你关心的都在这里,包含火山引擎主要产品的使用手册、API或SDK手册、常见问题等必备资料,我们会不断优化,为用户带来更好的使用体验

主要参考了这两篇文档


具体步骤如下

# 创建一个新用户自己定义名字,这里要设置密码其他可以按回车跳过

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你的服务器公网IP600
wwwA你的服务器公网IP600

Subscribe to xx的快乐生活

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe