前面SSH的坑踩完了,现在开始正式部署。我准备搭个博客和网盘,记录下整个过程。2020年左右在eu.org网站注册过免费的域名:sdnas.cn.eu.org
启动Docker容器
先确保在正确的目录,然后把所有服务启动起来。
进入目录:
cd /opt/docker_apps
启动容器:
docker compose up -d
这一步会下载WordPress、数据库等镜像,第一次运行可能要几分钟。我这边1核1G的配置,下载了大概5分钟。
检查状态:
docker compose ps
如果所有容器的状态都显示Up,就说明启动成功了。我第一次运行的时候,MySQL容器一直重启,后来发现是内存不够,关掉了一些不必要的进程才正常。
配置Cloudflare域名解析
买VPS就是为了用自己的域名,不想直接暴露IP地址。Cloudflare提供免费的CDN和SSL证书,顺便还能隐藏真实IP。
登录Cloudflare后台,选择你的域名。
添加DNS记录:
我用的域名是sdnas.cn.eu.org,添加了两条A记录:
| Type | Name | Content | Proxy Status | 说明 |
|---|---|---|---|---|
| A | blog | 你的服务器IP | 开启(橙色云朵) | 博客访问地址 |
| A | pan | 你的服务器IP | 开启(橙色云朵) | 网盘访问地址 |
橙色云朵就是Cloudflare的CDN代理,开启后别人看不到你的真实IP。
设置SSL模式:
这一步很重要,不设置的话WordPress会无限重定向打不开。
点击左侧菜单的SSL/TLS,把加密模式改成Full或者Full (Strict)。
千万别选Flexible,我第一次就是选错了,WordPress死活打不开,折腾了半天才发现是这个问题。
配置Nginx Proxy Manager
NPM是一个可视化的反向代理管理工具,可以给网站自动申请SSL证书。
访问管理后台:
打开浏览器输入http://你的IP:81
默认账号密码:
- Email:
[email protected] - Password:
changeme
登录后第一件事就是改密码,在右上角账户设置里改。
给WordPress配置域名:
点击Hosts -> Proxy Hosts -> Add Proxy Host
在Details这一栏填:
- Domain Names: ai
.sdnas.cn.eu.org - Scheme:
http - Forward Hostname/IP:
wordpress(填容器名,不要填IP) - Forward Port:
80 - 勾选
Block Common Exploits
在SSL这一栏:
- SSL Certificate: 选
Request a new SSL Certificate - 勾选
Force SSL和HTTP/2 Support - Email: 填你的邮箱
- 勾选
I Agree to the Let's Encrypt Terms of Service
点击Save。
证书申请大概需要10-30秒,成功后会显示绿色的勾。这时候就可以用https://blog.sdnas.cn.eu.org访问博客了。
我第一次申请的时候失败了,检查发现是Cloudflare的DNS解析还没生效。等了5分钟再试就成功了。
WordPress主题和插件推荐
现在WordPress能访问了,但是默认主题很丑,需要换个简洁的主题。
主题选择:
如果你想要类似ahhhhfs那种极简风格,推荐用argon
。
安装方法:
- 进入WordPress后台(
https://blog.sdnas.cn.eu.org/wp-admin) - 点击外观 -> 主题 -> 添加新主题
- 我是从github下载后上传到WordPress后台安装的
这个主题免费版就够用,而且特别轻量,1G内存的服务器跑起来没压力。
必装插件:
在插件菜单里搜索安装Redis Object Cache。
安装后点击启用,然后在设置里点击Enable Object Cache。
这个插件配合Docker里的Redis容器,能大幅提升网站速度。我启用后,页面加载时间从2秒降到了0.5秒。
设置自动备份
服务器随时可能出问题,定期备份是必须的。
编辑定时任务:
在终端输入:
crontab -e
如果是第一次用,会让你选择编辑器,选1(nano)就行。
添加备份任务:
在文件最下面加一行:
0 3 * * * /bin/bash /opt/docker_apps/backup_script.sh
这行命令的意思是:每天凌晨3点自动运行备份脚本。
保存方法:
- 按
Ctrl+O保存 - 按
Enter确认 - 按
Ctrl+X退出
备份文件会保存在/root/backups目录,每天一个压缩包。
验证备份是否生效:
等第二天早上,进入备份目录看看:
ls -lh /root/backups
如果看到昨天的日期命名的压缩包,就说明自动备份成功了。
我一开始设置的时候,第二天发现没有备份文件。检查后发现是脚本路径写错了,改成绝对路径/opt/docker_apps/backup_script.sh才正常。
几个注意事项
1. 内存不够用怎么办
1核1G的配置跑WordPress+MySQL+Redis,内存会比较紧张。
可以创建swap交换空间:
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
创建1G的swap后,服务器就不会因为内存不足而卡死了。
2. WordPress更新后打不开
有时候WordPress自动更新后会出问题,这时候进入Docker容器重启一下:
docker restart wordpress
3. 备份文件占空间
备份文件会越积越多,建议每月清理一次旧的备份:
cd /root/backups
# 保留最近30天的备份
find . -name "*.tar.gz" -mtime +30 -delete
总结
现在整个环境搭好了:
- WordPress博客能正常访问
- Cloudflare提供了CDN和SSL
- NPM管理反向代理
- 每天自动备份
从买VPS到搭好环境,前后花了两天时间。中间踩了很多坑,SSH连不上、WordPress打不开、证书申请失败,都一个个解决了。
写这篇记录主要是给自己做个备份,以后重装系统可以照着来。如果你也在折腾VPS,希望能帮到你。