单机游戏下载单机游戏下载基地
最新游戏|热门游戏|游戏大全|游戏专题

自建VPS搭建教程:完整步骤与常见报错

2026/11/4 12:31:00 来源:本站整理 编辑:飞翔小编

您的位置:首页 → 资讯教程 → 软件教程 → 自建VPS搭建教程:完整步骤与常见报错

【飞翔导读】自建 VPS 搭建不是装几个软件那么简单,一台机器从购买到上线要经历选配置、初始化系统、部署应用、绑定域名、配置 HTTPS、上线验收六个环节,每一环都有量化验收标准。本文按真实操作顺序逐步拆解,用商品库里的真实机型价格算出单位内存、磁盘、流量成本,给出首字节小于 300 毫秒等具体阈值,并指出六类不适合自建 VPS 的场景与替代方案。

一、先算账:自建一台 VPS 每月到底要花多少钱

自建 VPS 的第一道题不是怎么装,而是买多少。先把单位成本摊开,才能判断"多花一倍钱换一倍配置"到底值不值。

折合月价的算法很简单:按年计费的机型把年付价除以 12,按月计费的直接用月价。然后用折合月价除以内存、磁盘、流量三个容量,得出三个单价。

机型 折合月价 内存 磁盘 月流量 每 GB 内存 每 GB 磁盘 每 TB 流量
RosCloud-01 19.99 美元 1GB 20GB 1024GB 19.99 0.999 19.99
RosCloud-02 29.99 美元 2GB 40GB 2048GB 14.99 0.750 14.995
RosCloud-03 39.99 美元 4GB 80GB 3072GB 10.00 0.500 13.33
RosCloud-04 49.99 美元 8GB 160GB 4096GB 6.25 0.312 12.498
RosCloud-05 59.99 美元 16GB 240GB 5120GB 3.75 0.250 11.998
RosCloud-06 69.99 美元 24GB 320GB 6144GB 2.92 0.219 11.665
LAX-STARTER 16.67 美元 2GB 40GB 5000GB 8.33 0.417 3.413
LAX-MICRO 33.33 美元 4GB 80GB 10000GB 8.33 0.417 3.413
LAX-MEDIUM 66.67 美元 8GB 160GB 20000GB 8.33 0.417 3.413
LAX-LARGE 133.33 美元 16GB 320GB 40000GB 8.33 0.417 3.413
LAX-Storage-500G 33.33 美元 4GB 500GB 10000GB 8.33 0.067 3.413
LAX-Storage-1TB 58.33 美元 8GB 1000GB 15000GB 7.29 0.058 3.982
云途 HK.DS.M 350 元 32GB 480GB 10000GB 10.94 0.729 35.84
云途 DS.ES.C 700 元 64GB 800GB 40000GB 10.94 0.875 17.92
云途 HK.DS.S 800 元 128GB 6000GB 40000GB 6.25 0.133 20.48

查看 iwebfusion 当前月价与库存

这张表能读出三个直接可用的结论。第一,每 GB 内存成本随配置变大而下降,RosCloud 从 19.99 美元一路降到 2.92 美元,降幅超过 85%,这是规模效应的直接体现。第二,磁盘单价和流量单价是两条独立的曲线,LAX-Storage-1TB 的磁盘只要 0.058 美元/GB 但内存要 7.29 美元/GB,说明它买的是磁盘不是内存。第三,年付机型的流量单价远低于月付机型,sixtynet 的 LAX 系列每 TB 流量只要 3.413 美元,RosCloud 最便宜也要 11.665 美元,云途最高到 51.2 美元。

把这三个单价代入你的实际用量,答案就出来了。举例:一个日均 5000 次访问的个人站,按每次访问 0.5MB 算,月流量约 75GB,落在 RosCloud-01 的 1024GB 配额内,成本 19.99 美元;一个日均 5 万次访问的小站,月流量约 750GB,RosCloud-01 不够用,RosCloud-02(2048GB)刚好覆盖,成本 29.99 美元;同样流量放到 LAX-STARTER(5000GB)上绰绰有余,成本 16.67 美元还更低。

自建 VPS 的性价比拐点在 8GB 内存。低于 8GB 时每 GB 内存单价陡峭,高于 8GB 后趋于平缓。如果你的应用确定长期要跑在 8GB 以上,直接选大档位比从小档位一路升上来更省钱——因为你省掉的是反复迁移的时间成本和每次迁移的停机。

还有一条容易被忽略的账:年付与月付的差价,按摊销周期算。 sixtynet 全部 13 档都是年付周期,LAX-STARTER 年付 200 美元、LAX-MICRO 年付 400 美元、LAX-MEDIUM 年付 800 美元、LAX-LARGE 年付 1600 美元,折合月价分别是 16.67、33.33、66.67、133.33 美元。这四档的每百万次访问成本完全相同,说明带宽和流量配额是等比例放大的,加带宽不加溢价——这一点在同厂商内部很难看到。RosCloud 则全部 6 档按月付,RosCloud-01 到 RosCloud-06 月价 19.99 到 69.99 美元,每 TB 流量 19.99 降到 11.665 美元。

把这两条放在一起就是完整的决策:如果你确定机器要用一年以上,年付机型在流量单价上的优势会持续放大;如果只是先试试,月付机型避免了承受一年的容量锁定成本。

二、选配置:四个维度的取舍顺序

配置不是越大越好。要按下面四个维度的先后顺序做判断,跳过前面直接看后面就是浪费钱。

第一维度:内存。它决定你的进程数上限。经验公式是:系统本身约占 512MB,一个 Nginx + PHP-FPM 组合约占 200MB,数据库约占 1.5GB(按每 GB 内存缓存约 65% 算),再加上业务代码本身的占用。跑一个 WordPress 站点,1GB 会很紧张,2GB 是起步线,4GB 舒服。

第二维度:磁盘。系统加镜像占 5GB 左右,数据库数据、日志、上传文件会持续增长。经验规则是磁盘至少留出数据量的三倍,因为备份解压、数据库临时文件、日志轮转都要空间。磁盘单价在 sixtynet 的存储型机型上低到 0.058 美元/GB,硬盘完全不是瓶颈。

第三维度:带宽与流量。带宽决定峰值速度,流量决定总量上限,两者都要看。个人站的瓶颈几乎总是流量而非带宽——500Mbps 的带宽配 1024GB 月流量,理论上能跑满,但总量先见底。

第四维度:CPU 核数。这是最容易被超配的一项。Web 服务的瓶颈通常是 I/O 和内存,不是 CPU。2 核跑起一个日均几万访问的站点毫无压力,除非你有编译任务、图像处理或者高并发计算。

计费周期要在选型时就定。年付通常比月付便宜很多——LAX-STARTER 年付 200 美元折合每月 16.67 美元,月付同样的配置不会是这个价。但年付也意味着容量被锁死一年。新手第一次自建,先月付一个完整计费周期,跑通再转年付。

还有一个容易被忽略的维度是备份与快照。有些面板支持对整机做快照,误删文件时能一键回滚;有些只支持自己搭 rsync 备份。两种方式的成本差别很大,整机快照通常按存储容量单独计费但恢复是分钟级的,自建 rsync 免费但恢复要手动操作。判断标准很简单:如果你的业务有明确的恢复时间目标(RTO),问清楚商家支不支持快照、多久能恢复;如果没有明确要求,自建 rsync 加定期验证就够。

机房位置要按访客分布选,不是按自己的位置选。 你在国内但访客在欧美,那么服务器就该放欧美;反过来也一样。距离每多 100 毫秒,页面跳出率就明显上升。这个判断比配置高低更影响最终体验。

查 racknerd 在售套餐与库存

最后是 IPv4 资源的可得性。 主流云厂商的 IPv4 是有限资源池,新开机器可能分配不到独立 IPv4,只能共享。这对建站没影响,但会影响需要独立 IP 的场景(多站点、需要固定来源 IP 的 API 调用、某些支付接口)。商品库里能看到的库存字段可以作为参考:云途这边 HK.DS.S 库存 13、HK.DS.P 库存 5,而 DS.ES.A、DS.ES.F、HK.DS.M 库存都是 0。

三、初始化系统:15 分钟拿到一台干净机器

拿到机器后第一件事是拿到 root 密码并立刻改掉。主流 VPS 面板(Vultr、Linode、DigitalOcean、CloudCone 等)的流程都是:注册后收到 IP 和 root 密码,通过 SSH 登录。

第一步,改密码并禁止密码登录。先用密码登进去,装好密钥再关密码:

ssh root@你的IP
passwd
mkdir -p ~/.ssh && chmod 700 ~/.ssh

把本地公钥传上去:

ssh-copy-id root@你的IP

第二步,关闭密码登录和 root 直接登录:

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

改完先不要关掉当前这个 SSH 窗口,另开一个新窗口测试能不能登进去。确认可以了再关旧窗口,否则配置写错就把自己锁在外面了,只能通过面板的 VNC 控制台抢救。

第三步,创建日常管理用的普通账号:

adduser deploy
usermod -aG sudo deploy
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy

第四步,更新系统并设置时区:

apt update && apt upgrade -y
timedatectl set-timezone Asia/Shanghai

第五步,配置防火墙。默认拒绝入站,只放行必要端口:

apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw allow 80/tcp && ufw allow 443/tcp
ufw enable

常见报错:ufw: ERROR: You need to root privileges to run this script. 说明没加 sudo。另一个是 Command may disrupt existing ssh connections,可以加 ufw --force enable 跳过。

第六步,配置 swap。小内存机器必做,2GB 内存建议配 4GB swap:

fallocate -l 4G /swapfile && chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

第七步,设置免密码 sudo:

echo 'deploy ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/deploy
chmod 440 /etc/sudoers.d/deploy

查 cloudcone 在售套餐与库存

到这一步,基础环境就合格了。验收方法:ss -lntp 确认只有 22 端口在监听,free -m 确认 swap 已生效,curl -s ifconfig.me 确认公网 IP 和面板一致。

四、部署应用:从裸机到能访问的站点

环境干净之后装环境。这里以 Nginx + PHP + MySQL 这套最常见的组合为例。

Ubuntu 22.04/24.04 上直接用官方源:

apt install -y nginx mysql-server php-fpm php-mysql php-cli
systemctl enable nginx mysql php-fpm
systemctl start nginx

把网站目录建好并放一个测试页:

mkdir -p /var/www/site/public
echo "<h1>ok</h1>" > /var/www/site/public/index.html
chown -R www-data:www-data /var/www/site

配置 Nginx 站点:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/site/public;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

写好后检查语法再重载:

nginx -t && systemctl reload nginx

nginx -t 这一步绝对不能省。 语法错误直接 reload 会导致 Nginx 起不来,站点全挂。常见报错是 unknown directive "xxx",多半是少了一个分号;invalid number of arguments in "root" directive 是路径带引号或者变量写法不对。

如果用 Docker 部署,流程是另一条路:

apt install -y docker.io docker-compose-plugin
systemctl enable --now docker
mkdir -p /opt/app && cd /opt/app
docker compose up -d

Docker 部署的常见坑是容器里用了 localhost 连数据库。容器里的 localhost 是容器自己,要用服务名或宿主机 IP。用 Compose 时服务名直接就是 db、redis 这样的名字,Compose 会自动做 DNS 解析。

数据库的账号和权限按最小权限原则配,不要用 root 跑应用:

CREATE DATABASE site CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site'@'127.0.0.1' IDENTIFIED BY '强密码';
GRANT SELECT, INSERT, UPDATE, DELETE ON site.* TO 'site'@'127.0.0.1';
FLUSH PRIVILEGES;

部署应用有两条路线,选错了会返工。 第一条是直接在宿主机上装 Nginx、PHP、MySQL,好处是资源占用低、排查直观,坏处是不同项目之间会互相影响,升级某个组件可能把整台机器搞挂。第二条是用 Docker 把每个组件装进容器,好处是环境隔离、一份配置跑所有机器,坏处是有一层虚拟化开销,而且新手排查容器问题要额外学。

判断标准是项目数量。 一个项目就直接装,多个项目(尤其是不同技术栈的)才值得上 Docker。个人自建 VPS 绝大多数场景属于前者。

直接装的话,有两个细节要处理。一是 PHP 版本选择,Ubuntu 22.04 默认是 PHP 8.1,24.04 默认是 8.3;如果项目要求特定版本,用 Ondrej 的 PPA 源切换:

add-apt-repository ppa:ondrej/php
apt update
apt install -y php8.2-fpm php8.2-mysql

二是 PHP-FPM 进程数要按内存算。默认 pm = dynamic 时,PHP-FPM 会按 CPU 核数配进程,每个进程大约占 30 到 50MB。2 核机器默认 5 个进程就是 150 到 250MB,在 1GB 内存的机器上占比过高。改配置:

[www]
pm = ondemand
pm.max_children = 4
pm.process_idle_timeout = 10s

内存越小越要用 ondemand,空闲时进程会被回收。

用 Docker 的话,Compose 文件写好之后先做一次配置校验再启动:

docker compose config
docker compose up -d
docker compose ps
docker compose logs --tail 50 web

docker compose config 能在启动前发现 YAML 语法错误和变量未替换的问题,比启动后看日志快得多。

应用部署完成后要做一次本机自测,确认后端真的通了再配 Nginx:

curl -s http://127.0.0.1:8080/health

返回 200 和预期内容才算数。如果这一步跳过,直接配好域名后才发现后端起不来,排查方向容易跑偏到 DNS 和证书上,浪费时间。

数据库连接也要单独验证:

mysql -h 127.0.0.1 -u site -p site -e "SELECT VERSION();"

连得上说明账号、权限、字符集三样都对。

最后把数据库的连接数上限和应用侧的连接池大小对齐。应用池子开 200、数据库 max_connections 是 151,是典型的配置错位,会在流量高峰时爆发 Too many connections:

max_connections = 200

digitalocean 官网机型与实时报价

两边的口径必须一致,宁可数据库略大一点。

五、域名解析与 HTTPS 证书

应用能跑通之后,下一步是让外面的人能访问。这一步分两段:DNS 解析和 HTTPS。

DNS 解析要在域名注册商的控制台做。加一条 A 记录,主机名填 @(根域名),记录值填 VPS 的公网 IP,TTL 用默认的 300 秒或更短。解析生效通常几分钟,但全球各地生效时间不一,最长可达 24 小时。

验证解析是否生效:

ping -c 3 example.com
dig +short example.com

dig 返回的 IP 必须和你的 VPS 一致。如果返回的是旧 IP,说明 DNS 缓存还没过期,等几分钟再测。

HTTPS 证书用 Let's Encrypt 免费签发。Certbot 是最省事的工具:

apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com

Certbot 会自动改 Nginx 配置并设置续期定时任务。验证续期是否正常:

certbot renew --dry-run

这一步必须做,否则 90 天后证书到期,网站直接全红。常见报错 DNS problem: NXDOMAIN 是解析还没生效;Timeout during connect 是 80 端口没放行或者 Nginx 没监听;too many certificates already issued 是同一域名短时间签发太多次。

如果站点要强制跳转 HTTPS,在 Nginx 里加:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

另外一定要加 HSTS 头,否则用户第一次访问还走 HTTP,中间人仍能拿到明文:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

静态资源要开缓存和压缩,这是提升 TTFB 和下载速度性价比最高的两步。给 Nginx 加 Gzip 和缓存头:

gzip on;
gzip_comp_level 5;
gzip_min_length 1k;
gzip_types text/plain text/css application/json application/javascript text/xml;

location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2?)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
}

图片、样式、脚本这些文件一个月内基本不变,缓存 30 天后,第二次访问的下载时间几乎为零。上面第一节说的"1MB 下载 < 2 秒"这条阈值,对命中缓存的资源直接能达到 0。

查 hostwinds 在售套餐与库存

邮件服务是另一个常被忽略的坑。 如果站点要发注册验证邮件、密码重置邮件,新开的 VPS 通常没有反向 DNS(PTR 记录),发出的邮件很容易进垃圾箱。申请 PTR 记录要通过商家的控制台提工单,一般几分钟到几小时内处理。同时要配置 SPF、DKIM、DMARC 三条 DNS 记录,否则发信方会直接拒收。这件事在测试阶段不解决,到正式发信时才发现,整套注册流程都会失效。

六、上线验收:五个数字全部达标才算完成

搭完不等于能用。上线前把这五项跑一遍,任何一项不达标都不要对外开放。

首字节时间(TTFB)< 300 毫秒。这是用户感知的"点下去到开始出字"的时间:

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com

超过 300 毫秒说明后端处理太慢或者网络绕路太远,需要查 PHP 慢日志和数据库慢查询。

1MB 文件下载 < 2 秒。测静态资源带宽:

curl -o /dev/null -s -w "下载: %{speed_download} B/s\n" https://example.com/testfile.bin

算一下实际速度:1MB 文件如果 2 秒下载完,速度是 500KB/s,换算成 Mbps 约 4Mbps。远低于机型标称的带宽,说明瓶颈在磁盘 I/O 或者服务器端限速。

内存谷值 < 15%。上线静置十分钟后看:

free -m

2GB 内存的机器,空闲占用应在 300MB 以内。

CPU 空闲时占用 < 5%:

top -bn1 | head -3

磁盘可用空间 > 40%:

df -h /

服务开机自启已生效。重启一次机器,验证所有服务自动起来:

systemctl enable nginx mysql php-fpm docker
reboot

等两分钟后从外部访问站点,能正常打开就说明配置都生效了。这一步比前面所有检查都重要——很多服务是手动启动的,平时看不出来,重启后站点就彻底没了。

HTTPS 证书链完整。有些签发工具给出的证书不包含中间证书,浏览器会报 ERR_CERT_AUTHORITY_INVALID,但在 curl 里看着一切正常。用这条命令确认:

curl -v https://example.com 2>&1 | grep -i "issuer\|subject"

站点通过外部节点测速。本机 curl 测的是回环速度,没有参考价值。用第三方节点测,TTFB 超过 300 毫秒就要查线路:

curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s | Total: %{time_total}s\n" https://example.com

站点通过移动网络访问正常。用手机流量打开一次,比任何模拟工具都准。很多线路在电信和联通表现好,在移动上很差,这是真实用户投诉的高发点。

自动任务在跑。如果站点有定时任务,确认 cron 生效:

crontab -l
systemctl status cron

日志里有预期的启动记录:

查看 interserver 当前月价与库存

journalctl -u nginx --since "10 minutes ago" | tail -20

七、六类不适合自建 VPS 的场景与替代方案

这一节是反向判断,依据只取公开事实——机房位置、线路类型、计费方式、IP 资源。

场景一:主要访客在国内,机房在美国西海岸。 sixtynet 的 LAX 与 Residential 系列机房在洛杉矶,物理距离决定了 TTFB 不可能低于亚洲节点。如果你的 TTFB 验收目标是 300 毫秒以内,跨太平洋线路在晚高峰几乎不可能稳定达标。替代方案:换亚洲机房,云途的 HK.DS 系列就是香港节点;或选 justg 这种东京、首尔、莫斯科布局且带原生 IPv4 的商家。

场景二:需要年付锁定的低流量成本,流量需求又不大。 RosCloud 全 6 档都是月付周期,每 TB 流量单价 11.665 到 19.99 美元;sixtynet 全 13 档都是年付,每 TB 流量只要 3.413 美元。如果你只跑一个日均几千访问的站点,月付灵活性带来的价值有限。替代方案:选 sixtynet 的 LAX 系列年付,LAX-STARTER 年付 200 美元折合每月 16.67 美元,流量 5000GB、带宽 2000Mbps。

场景三:需要弹性扩容应对突发。 年付机型的容量在一年里是固定的,旺季想加机器必须额外下单,淡季闲置的钱也退不回来。替代方案:按月付的 RosCloud 与云途系列,RosCloud 全部 6 档为 month 周期,云途 9 档也为 month 周期,闲置时停机、旺季加一台。

场景四:需要独立 IP 做多站点或多账号。 云途部分型号库存为 0:DS.ES.A、DS.ES.F、HK.DS.M 的 stock 是 0,DS.ES.C 与 DS.ES.D 是 1,HK.DS.M 与 HK.DS.B 也是 0。库存为 0 意味着当前无可购。相对宽松的是 HK.DS.S(库存 13)和 HK.DS.P(库存 5)。sixtynet 与 RosCloud 的库存字段为空,实际数字以商品页为准。替代方案:下单前先在商品页确认库存,优先选库存大于 1 的型号。

场景五:磁盘需求大但内存需求小。 这类需求选通用型机型是最贵的做法。LAX-Storage-500G 用 4GB 内存配 500GB 磁盘,每 GB 磁盘只要 0.067 美元,而同内存的 LAX-MICRO 是 0.417 美元,差 6 倍多。替代方案:直接选存储型,LAX-Storage-500G 年付 400 美元折合每月 33.33 美元,带宽 10000Mbps、月流量 10000GB。

查看 itldc 当前月价与库存

场景六:需要中国优化线路的大带宽场景。 sixtynet 的 Los Angeles China Unicom-Premium 是年付 2500 美元(折合 208.33 美元/月)的中国联通优化线路,带宽只有 100Mbps,且商品库里没有内存与磁盘字段,属于专线型产品。替代方案:普通 LAX 系列带宽 2000 到 10000Mbps,走 BGP 路由,成本低一个数量级;确实需要大陆方向优化时,用 justg 这类在莫斯科提供 CN2 GIA 的商家对比。

八、常见报错与排查手册

报错:ssh: connect to host x.x.x.x port 22: Connection timed out。 三个可能:防火墙挡了 22 端口、SSH 服务没起来、IP 写错。用面板的 VNC 控制台进去检查 systemctl status sshd 和 ufw status。注意如果你的机器商默认封了 22 端口之外的管理端口,VNC 是唯一入口。

报错:Permission denied (publickey)。 公钥没传上去或者权限不对。用 ssh -v 看详细过程,确认 ~/.ssh 权限是 700、authorized_keys 是 600、公钥内容是完整一行没有换行。

报错:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)。 端口被占。先 ss -lntp | grep :80 看是谁占的,通常是 Apache 或另一个 Nginx 实例。

报错:nginx: [emerg] invalid number of arguments in "root" directive。 路径写错或带了变量却没加引号。检查 root 路径是否存在:ls -ld /var/www/site/public。

报错:502 Bad Gateway。 Nginx 起来了但后端没起来或者端口对不上。查 systemctl status php-fpm,确认 fastcgi_pass 指向的 socket 文件真实存在:ls -l /run/php/php8.1-fpm.sock。版本号对不上是最常见的。

报错:504 Gateway Time-out。 后端处理超时。查 PHP 慢日志和数据库慢查询,通常是某个查询没走索引。

报错:域名解析到 IP 但打不开页面。 依次排:防火墙没放 80/443、Nginx 没监听 0.0.0.0、云厂商安全组没放行。ss -lntp | grep nginx 看监听地址,curl -sI http://127.0.0.1 -H "Host: example.com" 在本机绕过 DNS 测试。

报错:certbot: error: rate limit reached for ...。 Let's Encrypt 对同一域名签发有频率限制。用 certbot certificates 看已有证书,用 --dry-run 测试续期流程,别反复重试。

报错:重启后站点全挂。 服务没设开机自启。用 systemctl list-unit-files | grep enabled 检查,把 nginx、mysql、php-fpm、docker 全部 enable。

报错:502 Bad Gateway 但 Nginx 错误日志里没有 upstream 记录。 通常是 PHP-FPM 的 socket 路径写错,或者 PHP 版本升级后 socket 文件名变了。查实际路径:ls /run/php/,然后把 fastcgi_pass 改成实际存在的那个。

报错:413 Request Entity Too Large。 上传文件超过 Nginx 默认的 1MB 限制,改 client_max_body_size:

client_max_body_size 50m;

报错:Too many open files 或 EMFILE。 文件描述符耗尽。系统级调 ulimit -n 65535,Nginx 里配 worker_rlimit_nofile 65535,PHP-FPM 里配 pm.max_children 也要同步收敛,别让每个进程都开太多句柄。

报错:磁盘空间还有不少,但建文件时报 No space left on device。 inode 用光了。用 df -i 查看 inode 使用率,删掉海量小文件(常见于缓存目录和 session 文件)释放 inode。

报错:apt update 报 GPG error ... NO_PUBKEY。 系统源密钥过期或者换过第三方源。修复方式:重新导入对应源的签名密钥,或者删掉失效的源列表项后重新添加。

查 spinservers 在售套餐与库存

报错:网站能开但后台提交表单没反应。 检查 PHP 错误日志和 Nginx 错误日志,最常见的是 PHP 扩展没装(缺 gd、zip、intl),或上传临时目录不可写:ls -ld /var/lib/php/sessions。

九、自建完成后的运维清单

上线不是终点。下面这些是必须长期保持的状态,每一项都能用一条命令验证。

监控。至少装一个资源采集,否则机器被打了你最后才知道:

apt install -y htop iotop nload

进阶一点可以用 node_exporter 配合 Prometheus 采集,或者直接用云厂商自带的监控面板。关键指标:CPU、内存、磁盘使用率、磁盘 IO、网络流量、连接数。

日志。Nginx 访问日志和错误日志、PHP 错误日志、MySQL 错误日志和慢日志、系统日志 dmesg。日志不轮转迟早撑满磁盘:

cat > /etc/logrotate.d/custom <<'EOF'
/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    sharedscripts
}
EOF

安全。定期看登录记录和开放端口:

last -20
ss -lntup
journalctl -u sshd --since "7 days ago" | grep -c "Failed"

失败登录次数突然飙升,就要检查是不是被扫了。

备份。站点文件和数据库分开备份。数据库用 mysqldump 加 --single-transaction,网站文件用 rsync 增量同步,然后同步到另一台机器或对象存储。异地备份才是真备份。

更新。系统安全补丁及时打,但更新前先快照:

apt update && apt list --upgradable

数据库备份同样不能省。站点文件备份了但数据库没备份,等于没备份:

mysqldump --single-transaction --quick --routines --triggers \
  -u deploy -p site | gzip > /backup/site_$(date +%F).sql.gz

--single-transaction 保证 InnoDB 一致性快照且不锁表,--quick 避免大表撑爆内存,--routines --triggers 把存储过程和触发器一起带上——只导表结构的备份在恢复时最容易出事。备份完必须验证:

gunzip -t /backup/site_*.sql.gz

异地同步。备份放在同一块盘上,磁盘坏掉时一起消失:

0 3 * * * rsync -az --delete /backup/ backup@另一台机器:/data/backup/

磁盘水位监控。磁盘写满是 VPS 上最常见的故障原因,加一条提前预警:

0 * * * * [ $(df --output=pcent / | tail -1 | tr -d '%') -ge 85 ] && echo "disk high" | mail -s "disk alert" [email protected]

给机器做定期健康检查。下面这条脚本每 5 分钟跑一次,检查负载、内存、磁盘和服务状态,异常就发邮件:

*/5 * * * * /usr/local/bin/healthcheck.sh

查 justg 在售套餐与库存

脚本内容可以写成检查四项:负载超过 4、内存可用低于 15%、磁盘使用超过 85%、Nginx 和 MySQL 任一不在 running 状态。把这四项都监控上之后,你的 VPS 才是真正能托管业务的服务器,而不是一台碰巧还开着的机器。

按你的情况,下一步该看哪家

上面讲的是判断标准,但多数人最后还是想问一句「那我该买谁」。按你的实际情况对照下面几条,直接去看对应的机型页比继续比价更快:

价格与库存以商家页面当日显示为准,下单前建议先确认退款窗口与是否支持按月付费。

十、按你的情况该选哪一档:四类人的具体推荐

按实际情况对照下面四条,直接去看对应机型的当日报价比继续比价更快。

第一类:第一次自建,只想跑通一个个人博客或练手项目。 选 RosCloud-01(19.99 美元/月,2 核 1GB 内存、20GB 盘、500Mbps 带宽、1024GB 月流量)。配置足够跑 Nginx 加一个轻量应用,每 TB 流量 19.99 美元虽然单价不低,但你用不满 1024GB。按月付,跑通了再决定要不要升级,别一上来就买年付。

第二类:日均 1 万次访问的小型生产站,需要正常冗余和备份空间。 选 RosCloud-04(49.99 美元/月,5 核 8GB 内存、160GB 盘、500Mbps 带宽、4096GB 月流量)。每 GB 内存 6.25 美元已经进入规模效应的舒适区,4096GB 流量按每次访问 0.5MB 算能撑住每天约 28 万次访问,余量充足。磁盘 160GB 留出三倍空间给备份和日志,够用。

第三类:流量大、需要大带宽和低单位流量成本的站点。 选 sixtynet 的 LAX 系列,按规模从小到大:LAX-STARTER 年付 200 美元折合 16.67 美元/月(2000Mbps 带宽、5000GB 流量),LAX-MEDIUM 年付 800 美元折合 66.67 美元/月(10000Mbps、20000GB),LAX-LARGE 年付 1600 美元折合 133.33 美元/月(10000Mbps、40000GB)。这几档的每百万次访问摊到的成本完全相同,都落在 1.63 这一档,加带宽不加溢价。机房在洛杉矶,适合海外访客为主的业务。

第四类:主要访客在国内,需要就近机房和按月弹性伸缩。 选云途的香港节点:HK.DS.P 月付 750 元(64GB 内存、1024GB 盘、2000Mbps 带宽、40000GB 流量,库存 5),或 HK.DS.S 月付 800 元(128GB 内存、6000GB SAS HDD、40000GB 流量,库存 13)。每 GB 内存成本 6.25 美元,在大内存档位里属于最低一档;机房在香港,TTFB 比美国西海岸稳定得多;全部按月付,旺季加一台淡季停掉。

第五类补充:磁盘需求特别大、内存需求很小的批量数据处理场景。 比如跑视频转码、数据清洗这类一次性任务,LAX-Storage-1TB 是明确答案:8 核 8GB 内存、1000GB 磁盘、10000Mbps 带宽、15000GB 月流量,年付 700 美元折合 58.33 美元/月,每 GB 磁盘 0.058 美元是全表最低。跑完任务就释放,配合按月付的其他机型做临时扩容,比为峰值长期养一台大内存机器划算。

还有一类特殊情况:需要中国大陆方向优化线路的业务。可以看 justg 这类在东京、首尔、莫斯科布点且提供原生 IPv4 的商家,莫斯科方向提供 CN2 GIA。具体价格以官网当日报价为准,本文引用的所有价格均来自渠道库快照(快照时间 2026-11-04 11:20),库存字段随时变动,下单前请以商品页当日显示为准。

zenlayer 官网机型与实时报价

最后一句:自建 VPS 上线之后真正决定成败的不是配置,是你有没有在第一天就配好监控、备份和日志轮转。这三样东西补起来要停机,而一开始就配好只要半小时。

飞翔声明:飞翔网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。

评论:0 次

阅读本文后您有什么感想? 已有 人给出评价!

  • 0 喜欢
  • 0 高兴
  • 0 鬼脸
  • 0 呵呵
  • 0 无聊
  • 0 伤心

相关新闻

网友评论

评分
★
★
★
★
★
力荐
选择头像:
10
999+人评分
★★★★★
★★★★
★★★
★★
★
查看更多 >

魔兽世界Dota式击杀音效插件PVPSound

点击进入 立即下载

关于飞翔 | 联系我们 | 大事记 | 下载帮助(?) | 广告联系 | 版权声明 | 网站地图 | 友情链接

Copyright 2010-2025 单机游戏下载 (R) 版权所有 飞翔下载所有游戏及软件下载资源来源互联网,并由网友上传分享。如有侵权,请来电来函告之。
飞翔忠告:抵制不良色情、反动、暴力游戏 合理安排游戏时间 享受健康生活 鄂公网安备:42011102003115号 【鄂ICP备17000818号-1】