如果你租了一台外国 vps 同时想一机多用,在服务器运营商默许的情况下,除机场外再搭建一个博客是个不错的选择。
部署 Trojan-go 协议机场
此部分介绍如何搭建机场,方法及脚本参考了 https://js2panda.com/vultr-trojan ,如果你已具备机场,可跳过这一部分。
既然是为了搭建机场,一个外国服务器必不可少,这里用野草云上的 Ubuntu 22.04 为例演示。购买对应产品后,可使用 Windows 自带 cmd 或其它 SSH 工具连接。
ssh 用户名@服务器地址
在执行脚本前,我们需要完成一些准备工作:备好一个伪装域名,并解析到服务器上。
如果你没有域名,可以从 Cloudflare (需国外支付方式)或者 Namecheap (支付较容易)等购买一个,一些后缀如 .xyz 比较便宜。
购买完成后,选择一家 DNS 解析服务商,这里以 Cloudflare 为例,在 Domains -> 选中你的域名 -> DNS -> Records 中添加记录,用 tro 作伪装域名, blog 作博客域名,则配置如下图:

要检查是否解析成功,可以在 cmd 中输入如下指令,返回结果应为服务器地址。
ping -4 伪装域名
接下来就可以进入部署阶段。在服务器执行一键部署 Trojan-go 的脚本:
bash <(curl -sSL "https://raw.githubusercontent.com/veip007/hj/main/trojan-go.sh")
会得到如下界面:

第一次安装输入“1”,然后输入“y”继续,依次按照提示输入伪装域名、密码。到了端口这里,如果你要搭建博客,应避免占用 443 或 80 端口,不然后期会出问题,推荐选择 8443。后面伪装站、禁用搜索引擎抓取任意,开启 BBR 加速。之后安装过程中一直回车就可以。

最后不可忽略的是,检查服务器内外的防火墙,确保 8443 端口被放行。服务器面板一般会提供防火墙规则,可手动添加;服务器内使用如下指令检查是否启用防火墙:
ufw status
如果 active,则再执行:
ufw allow 8443
systemctl restart trojan-go.service
以 Clash 为例,我们需要编写一个 yaml 文件导入,格式可按如下修改:
proxies:
- name: "美国 - LA"
type: trojan
server: 你的伪装域名
port: 8443
password: "1"
sni: 你的伪装域名
skip-cert-verify: false
udp: true
proxy-groups:
- name: "Default"
type: select
proxies:
- "美国 - LA"
- DIRECT
rules:
- MATCH,Default
至此,机场搭建完毕。
安装 WordPress 并搭建 Argon 主题博客
此部分进入正题,但在安装 WordPress 前,我们依然需要做准备工作:确保服务器上具备 LNMP,
即 Linux + Nginx + Mysql + Php-fpm。
既可以下载打包好的 LNMP,但刚才搭建机场的时候已经顺便安装了 Nginx,Ubuntu 官方仓库又包含剩下的,我们也可以手动分别安装:
(实际上在这种情况下安装打包好的 LNMP 会出现系统里有两套 Nginx 抢占端口的情况,所以还是尽量避免吧)
sudo apt update
sudo apt install nginx
sudo apt install mysql-server
sudo apt install php8.1-fpm php8.1-cli php8.1-mysql
Ubuntu 22.04 对应 php 8.1, 24.04 对应 php 8.3,应注意版本区别。而且只装 php-fpm 是不够的,还需要一些必要的扩展然后重启服务:
sudo apt install -y \
php-mysql \
php-curl \
php-gd \
php-mbstring \
php-xml \
php-zip \
php-opcache \
php-intl
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
它们的作用分别是:
- mysql —— 让 PHP 能连接 MySQL (数据库必需)
- curl —— 让 PHP 请求外部 URL / API
- gd —— 图片处理 (缩放、裁剪、验证码、缩略图)
- mbstring —— 多字节字符串支持 (中文)
- xml —— 解析xml
- zip —— 解压缩 zip
- opcache —— PHP 脚本缓存加速,可提升性能
- intl —— 国际化支持 (语言、时区、日期、排序)
都安装完成后,再确认一遍是否安装上了:
nginx -v
php -v
mysql --version
然后确认服务在跑:
sudo systemctl status nginx
sudo systemctl status php8.1-fpm
sudo systemctl status mysql

进入 MySQL 创建 WordPress 用的数据库,记好数据库名、用户名和密码,后面要用:
mysql -u root -p
CREATE DATABASE blog DEFAULT CHARACTER SET utf8mb4;
CREATE USER '你的用户名'@'localhost' IDENTIFIED BY '设置密码';
GRANT ALL PRIVILEGES ON blog.* TO '你的用户名'@'localhost';
FLUSH PRIVILEGES;
EXIT;
新建一个博客目录,下载并放置 WordPress:
sudo mkdir -p /var/www/blog
cd /var/www/blog
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo mv wordpress/* .
sudo rmdir wordpress
也别忘了很重要的一步,设置正确的权限,包括把站点目录交给 Nginx 用户和设置安全权限:
sudo chown -R www-data:www-data /var/www/blog
sudo find /var/www/blog -type d -exec chmod 755 {} \;
sudo find /var/www/blog -type f -exec chmod 644 {} \;
配置 Nginx,一方面新建博客站点的配置文件:
sudo nano /etc/nginx/sites-available/blog
使用下面的模板完善站点配置文件:
server {
listen 80;
server_name 博客地址;
root /var/www/blog;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\. {
deny all;
}
}
另一方面修改 nginx.conf,使其包含 sites-enabled:
sudo nano /etc/nginx/nginx.conf
在 http { ... } 里面,找到这行:
include /etc/nginx/conf.d/*.conf;
在它下面加一行:
include /etc/nginx/sites-enabled/*;

如果忘记加上,Nginx 就不会加载你的博客站点配置,会导致访问只会命中机场的伪装站(默认站点),于是被重定向过去。
两者写入退出后重载 Nginx 以启用新配置:
sudo ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
然后就可以用浏览器访问了,由于没装证书,只能用 http 而不能用 https。第一次访问会进入 WordPress安装界面,这时就用上了刚才创建数据库时记下的信息,按照要求填写信息即可。在注册用户的时候也要记好密码,方便后续登录。
用管理员身份进入 WordPress 后台,在左侧 外观 -> 主题 一栏可以安装主题。这里采用 Argon 主题演示,下载好后上传启用后就可以在左侧看见 Argon 主题选项 一栏,按照自己喜好配置即可。
此时已经能满足基本使用,但我们还是应该完善一下证书,用 certbot 一条指令就可以完成。
首先安装 certbot:
sudo apt update
sudo apt install -y certbot python3-certbot-nginx
然后用这条指令申请 https:
sudo certbot --nginx -d 博客域名
期间需要填一个邮箱以便提醒证书过期、同意服务条款等,完成后应出现“Congratulations! You have successfully enabled HTTPS on https://博客域名”,如图

内容到这里就结束了,以后可能考虑出个一键脚本什么的,但毕竟需求不多,适用场景也比较局限,大概会搁置罢。