我 Blog 从 2018年11月开始就是部署在搬瓦工的一台1核512M内存的机器上,没错!就是在一台512M内存机器上部署了 PHP 和 MariaDB 数据库!直到今年 6 月我迁移到 RackNert 上的2核2G的机器。
迁移 Blog 的起因是我在小众软件上看到有篇文章提到 RackNert 的新一批平价机器上架,配置和价格很是吸引。但是我还是犹豫了两周的,这价格很吸引,看到有评论说速度一般(直连)。犹豫了很久,其实我直连的时候基本就是 SSH 和传文件时候用到,其他情况我都是通过 CloudFlare 访问的,所以基本就没问题就决定买了,开始是打算买最便宜的 1G 的机器,然后看到2核2G才$17.66/年,比我搬瓦工的便宜多了,然后就决定买 2G 的机器,也能多跑很多服务。
基础设置
买了机器第一件事当然就是做安全设置,除了标准的修改 SSH 端口和设置证书登录,禁用密码之外,还要装防火墙。我现在除了 SSH 端口,其他所有非必要端口都是禁止访问的,然后安装 ZeriTier,之后将内外 IP 添加白名单,所有连接都通过 ZeroTier 连接,然后网站用的 80 和 443 端口则仅允许 CloudFlare IP 访问。
部署 1Panel
因为这次机器有 2G 内存,这样我就能在机器上面安装 1Panel。
curl -sSL https://resource.1panel.pro/quick_start.sh -o quick_start.sh && bash quick_start.sh
允许安装脚本一直下一步会生成面包的入口和设置账号密码,生成后一定要记得,要不然要重置了。
因为是 Docker 部署的,如果你使用 UFW 作为防火墙的话则需要先使用 UFW-DOCKER 自动配置好 UFW 对 Docker 的端口控制,要不然 Docker 的端口就直接暴露在外面了。
配置环境
1Panel 中部署网站都是通过 Docker 镜像的,在应用商店中有各种配置好的应用镜像。我不喜欢直接用镜像部署 WordPress,直接用文件好些。现在我们需要安装 OpenResty、MariaDB。只需要在应用商店找到对应应用安装即可。
设置数据库
先安装 MariaDB ,在应用商店找到应用,直接安装。选择好版本,填好管理密码就OK了。

因为我是迁移服务器的,所以安装后在数据库页面创建好 WordPress 对应的数据库。我是使用 DBeaver 将原来服务器上的数据导出,然后在 1Panel 数据库页面导入就可以了。
设置环境
部署好 OpenResty 后先在 CloudFlare 上下载对应域名的源证书,在网站页面下的证书页面上传证书。

还有需要在运行环境中创建运行环境,选最新版的 PHP,扩展源选择默认,然后扩展模板选择 WordPress 就会自动选择所需要的扩展,很方便。

设置网站
部署好环境就在网站页面创建网站。
证书和运行环境都配置好就在网站页面创建网站,选择「运行环境」,默认就选好 PHP 了,填好域名,勾选「启用HTTPS」,Acme账户选择手动创建,然后按「确认」就完成基本配置。
点击对应网站的配置,下面的「资源」页面中切换数据库选择对应的数据库,保存。

设置后在网站目录中可以直接打开网站目录,进去后将网站的文件上传到这个目录。
我使用 ZeroTier 然后服务器之间组网了,然后我用 rsync 直接将文件传到新服务器上,很是方便。
rsync -avz 本地目录 root@RackNert:新服务器网站目录
上传好目录后需要对 wp-config.php
修改数据库主机。在 1Panel 容器页面找到数据库的容器,我的是 1Panel-mariadb-fxso
,然后 wp-config.php
中数据库主机一项不再是 127.0.0.1
,要将其改为容器中找到的 1Panel-mariadb-fxso
容器名。
最后就是在 CloudFlare 上将域名指向新服务器就完成了。
插曲
在部署网站的时候出现好多次访问 1Panel 无响应的情况,排查之后发现是跨国 ZeroTier 组网不是很流畅,经常被阻断,然后我就用其他办法了,直接在服务器部署 EasyTier。
直接在容器页面的「编排」页面创建编排就是编辑 docker-compose。
自建 EasyTier 网页管理界面
version: '3.8'
services:
easytier:
restart: always
labels:
com.centurylinklabs.watchtower.enable: 'true'
privileged: true
mem_limit: 0m
container_name: easytier-ui
hostname: rack
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- /files/docker/easytier/data:/app #数据目录
- /etc/machine-id:/etc/machine-id:ro
environment:
- TZ=Asia/Shanghai
image: easytier/easytier:latest
command: --api-host https://管理界面域名/ -d /app/et.db --file-log-dir /app/eztui.log
entrypoint: easytier-web-embed # 管理界面程序
运行后就在网站创建一个反向代理,默认端口是 11211
。
还要开启服务器对应的端口,Web界面默认是 22020
端口的 UDP,防火墙开启一下。
访问 WebUI 后注册一下账户,后面客户端连接需要指定账户的。
启动 EasyTier 连接 WebUI
version: '3.8'
services:
easytier:
restart: always
labels:
com.centurylinklabs.watchtower.enable: 'true'
privileged: true
mem_limit: 0m
container_name: easytier
hostname: kyvps #服务器名称
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- /files/docker/easytier/data:/app
- /etc/machine-id:/etc/machine-id:ro
environment:
- TZ=Asia/Shanghai
image: easytier/easytier:latest
command: --config-server udp://服务器IP:22020/kaiyuan
运行后就可以在 WebUI 看到客户端了。在 WebUI Device 可以看到服务器,点击齿轮然后选择 Crater
创建一个配置文件。

取消 DHCP,填写自己的 IP,网络名称和网络密码填自己的,然后网络方式选择独立就可以作为服务器了。
高级设置中填写监听地址,最好就是只使用 wss:0.0.0.0:11012
,wss 可以通过 CloudFlare 代理,如果你需要 iOS 连接的话就加上 wg:0.0.0.0:11011
。
EasyTier 默认端口是 11010-11012
,建议改为其他端口。
结语
我之前一直都是直接配置运行环境,第一次使用 1Panel 部署网站,第一次在外网用 Docker 部署服务才知道 UFW 默认没法管理 Docker 端口,还是我发现数据库怎么会被人攻击才知道这回事。还有就是 1Panel 连接数据库的方式也不一样。都是遇到了搜索才知道。但是解决了这些之后就简单了,1Panle 图形化管理是方便很多。
您必须登录才能发表评论。