一、VPS搭建网站需要准备什么:一台机器、一个域名、一份代码

搜索「vps搭建网站」的人,真正需要的答案分三块:要准备什么、怎么做、错了怎么办。这一节先把准备工作说清楚,因为很多人是卡在这一步而不是技术步骤上。
需要准备的东西,一共五项:
| 项目 | 说明 | 常见误区 |
|---|---|---|
| VPS 服务器 | 有公网 IP、能 SSH 登录 | 以为要买独立服务器 |
| 域名 | 已注册或准备注册 | 用 IP 直连就算建站 |
| 域名解析 | A 记录指向 VPS 的 IP | 解析没生效就申请证书 |
| 网站代码 | HTML 或 PHP、WordPress 等 | 忘了自己备份代码 |
| 备案(如果用国内大陆节点) | ICP 备案 | 用大陆节点不备案直接上线 |
关于备案这一条要说清楚:它取决于你的服务器在哪。 服务器在香港、美国、日本等境外地区,不需要 ICP 备案,域名解析过去就能访问。服务器在中国大陆境内节点,必须完成 ICP 备案才能通过 80/443 端口对外提供服务。用香港节点做面向大陆用户的站,常见做法就是"境外服务器 + 免备案",这正是很多人在搜索这个关键词时会问「VPS搭建网站需要备案吗」的答案。
关于服务器规格,说一个最实际的判断:先看你的代码有多重。
- 纯静态站(纯 HTML、少量 CSS/JS):1 GB 内存就够,Nginx + PHP-FPM 装完内存谷值能压在 15% 以内;
- WordPress + MySQL + Redis:至少 2 GB 起,4 GB 更稳;
- Node/Java 应用、多个站点、还要跑面板:4 GB 起步。
商品库里最低一档的 RosCloud-01 是 19.99 美元/月,2 vCPU、1 GB 内存、20 GB 硬盘、500 Mbps、1024 GB 流量——这个配置跑静态站绰绰有余,跑 WordPress 会吃力。同系列的 RosCloud-03 是 39.99 美元/月,4 vCPU、4 GB 内存、80 GB 硬盘、3072 GB 流量,这是跑 WordPress 的实用起点。
关于域名,域名本身的成本通常和服务器同量级。 如果你只是做个人项目或练手,也可以先用 IP 直连(http://服务器IP),把流程跑通再买域名。但要提醒:用 IP 直连时 HTTP 也能访问,等你换成域名 + HTTPS 后再对外发布。
最后一条准备工作的建议:先把代码在本地准备好。 上传代码、配置环境、绑域名,这三件事在服务器上同时做,出问题时你分不清是哪个环节。先传代码,再配环境,最后绑域名,是最省时间的顺序。
关于代码上传方式,也要提前定好,后面会反复用到:
方式一,Git 拉取(推荐):
apt install -y git
cd /var/www
git clone https://github.com/你的用户名/你的仓库.git
Git 的优势是以后更新只要一条 git pull,不用重新传一遍。 如果你的站点会长期迭代,这个优势很实在。
方式二,SCP 直接传:
# 在本地机器上执行,把本地文件夹传到服务器
scp -r ./我的站点 root@服务器IP:/var/www/
方式三,用 rsync 做增量同步,适合大文件多、需要反复同步的场景:
rsync -avz --delete --exclude '.git/' ./我的站点/ root@服务器IP:/var/www/example.com/
--delete 会删除目标目录里源目录没有的文件,用之前务必确认路径写对。 路径写错的后果是删掉服务器上别的东西——这条命令是本文所有命令里最危险的一条,值得单独强调。
方式四,WordPress 这类 CMS,直接下官方压缩包:
cd /var/www
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzf latest-zh_CN.tar.gz
解压出来是 wordpress 这个目录,名字太通用,多人共机时容易撞名,建议改成你的站点名。
上传完之后,一定要检查文件属主和权限,这是后面 403 报错的根源:
chown -R www-data:www-data /var/www/example.com
chmod -R 755 /var/www/example.com
chmod -R 775 /var/www/example.com/wp-content/uploads
最后那行针对 WordPress:上传目录需要可写权限,否则你在后台传图片会失败。 而其他目录保持 755 就好——权限给得越宽,攻击面越大。
关于域名,还有三个必须提前知道的事:
第一,域名解析生效有延迟,且不可控。 大多数情况下几分钟内生效,但有些注册商的 DNS 刷新可能长达 24 小时。所以如果你打算当天上线,域名解析这一步要留出缓冲。
第二,www 和不带 www 是两个不同的主机名。 很多人在 Nginx 里只写了一个 server_name,结果访问另一个形式时落到默认站点、显示的是别人的页面或者 404。两个都要写进 server_name,或者写一个 server_name example.com www.example.com;,再配一个 301 跳转统一到一个形式。
第三,域名备案和主机位置是两件事。 域名在哪儿注册不影响是否需要备案,决定要不要备案的是服务器在哪。用境外服务器,域名注册在任何注册商都可以,不需要备案。
再补一条现实建议:如果你的站点要做 SEO,先把域名和主域名形式定下来再上线。 换域名意味着之前的收录、外链全部作废,这件事在站点上线前决定,成本几乎为零;上线后再改,代价很大。
二、VPS搭建网站第一步:SSH 登录并做基础安全设置

准备就绪后,第一步是连上服务器并把安全基线做掉。
登录:
ssh root@你的服务器IP
第一次登录会看到主机指纹确认,输入 yes 回车即可。 之后系统会提示你输入密码——注意,SSH 输入密码时屏幕上不显示任何字符,连星号都没有,这是正常的,不是卡住了。
立刻改密码:
passwd
改 SSH 端口,从 22 换到一个不常用的端口:
vi /etc/ssh/sshd_config
把 Port 22 改成 Port 22 和 Port 2222 两行。先保留 22 是为了给自己留后路——如果改完连不上,你还能用 22 进去改回来。 改完重启:
systemctl restart sshd
验证新端口能登录之后,再把 22 那行删掉。 顺序反了就可能把自己锁在门外。
装 fail2ban 防止暴力破解:
apt update && apt install -y fail2ban
systemctl enable --now fail2ban
装防火墙:
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
注意:ufw enable 会立刻生效,如果你的 SSH 端口已经改成 2222,这里必须写 ufw allow 2222/tcp 而不是 22。 这是新手把自己锁在服务器外面最常见的原因——防火墙规则和实际端口对不上。
检查一下防火墙规则确实生效了:
ufw status verbose
看到 Status: active 且规则里有你的端口,才算这一步完成。
三、怎么选建站方式:面板、纯命令行、还是现成 CMS

「vps搭建网站」有三条技术路线,选错了后面全是麻烦。
| 方式 | 优点 | 缺点 | 适合谁 |
|---|---|---|---|
| 宝塔 / 1Panel 面板 | 图形化,上传、数据库、SSL 都是点鼠标 | 吃内存,占端口,路径依赖 | 不熟悉命令行的新手 |
| 纯命令行 + Nginx | 资源省、可控、干净 | 全靠命令和配置文件 | 有 Linux 基础、要长期运维 |
| 现成 CMS(WordPress 等) | 内容管理成熟,插件丰富 | 需要 PHP+数据库,资源占用大 | 做内容站、博客 |
面板路线(以宝塔为例):
# 官方安装命令,SSH 执行后按提示选环境
bash <(curl -sS https://bt.cn/install/install_panel.sh)
安装时把面板装在干净的机器上,并且提前记下它生成的安全入口路径和端口。 宝塔默认端口是 8888,安装完会显示一个随机入口路径,记下来关掉浏览器标签——这个路径一旦被人看到,你的服务器就等于敞着。
纯命令行路线:
apt update && apt upgrade -y
apt install -y nginx php-fpm php-cli php-mysql php-nginx php-mbstring php-xml php-curl
apt install -y mysql-server
装完检查:
systemctl status nginx php-fpm mysql
三个服务都应该显示 active (running)。
WordPress 路线:在纯命令行环境基础上再装:
cd /var/www
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzf latest-zh_CN.tar.gz
mv wordpress your-site
这个版本有个坑:它解压出来的是一个叫 wordpress 的目录,名字很通用。 多人共机时容易撞名,建议改成你的站点名。
选哪条路,一句话判断:如果这台机器你打算用一年以上,选纯命令行;只是测试或练手,选面板省事。 面板的内存开销在小机器上是实打实的——1 GB 内存装完面板加数据库,内存谷值轻松超过 85%,机器会长期在 OOM 边缘。
选面板前必须知道的三件事:
第一,面板会自己改 SSH 端口。 宝塔、1Panel 安装时都会问你要不要修改端口,如果你在第二节已经把端口改成 2222,这里要填 2222 而不是让它随机生成。装完立刻用 ss -tlnp 核对一遍实际端口。
第二,面板自带的安全入口路径要记下来。 宝塔安装完会显示一个形如 /a1b2c3d4 的入口路径,浏览器直接访问 IP:8888 是打不开的,必须带上这个路径。 很多人以为安装失败,其实是漏了路径。这个路径本身是安全凭证,不要截图发群里。
第三,面板自带的数据库配置在小内存机器上要改。 MySQL 默认配置 innodb_buffer_pool_size 通常按大机器算,1–2 GB 内存的机器上直接吃满。改这个参数:
vi /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 段加:
innodb_buffer_pool_size = 128M
performance_schema = OFF
2 GB 内存的机器用 128M 起步,4 GB 用 256M。 这三行能显著降低 MySQL 占用内存的峰值,避免 OOM Killer 随机杀掉数据库进程。
纯命令行路线也有一个必做的优化:给 PHP 装 OPcache。
apt install -y php-opcache php-mbstring php-xml php-curl
systemctl restart php8.2-fpm
OPcache 把 PHP 文件的解析结果缓存在共享内存里,第二次以后的请求不需要重新解析。 对 WordPress 这类文件多、逻辑重的 CMS,这个开关带来的提速往往超过加内存。
装完检查一下所有服务状态和端口占用:
systemctl status nginx php-fpm mysql
ss -tlnp
三个服务都应该显示 active (running),端口列表里不该有你不认识的服务。 多出来的服务可能来自你之前装的某个面板或安全工具——既然不用了,就该卸掉。
四、VPS搭建网站的 Nginx 配置怎么写才对

配置是所有步骤里最容易出错、报错信息又最含糊的一步。
先建站点目录,注意权限:
mkdir -p /var/www/example.com/public
chown -R www-data:www-data /var/www/example.com
chmod -R 755 /var/www/example.com
权限给错是 403 的头号原因。 Nginx 的 worker 进程以 www-data 身份运行,目录属主不是它就读不到文件。
写站点配置:
vi /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/public;
index index.php index.html;
client_max_body_size 32m;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\. {
deny all;
}
}
三个关键点必须注意:
第一,fastcgi_pass 里的 PHP 版本号必须和你装的版本一致。 查实际版本:
ls /run/php/
看到 php8.2-fpm.sock 就写 8.2,写成别的版本会报 connect() failed (2: No such file or directory)。
第二,启用配置:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sites-enabled 里放的是软链接,不是文件副本。 这样你改 sites-available 里的文件,sites-enabled 会同步生效。如果直接复制文件过去,两边不一致时你会改错地方。
第三,永远先 nginx -t 再 reload:
nginx -t
systemctl reload nginx
nginx -t 报语法错时,Nginx 保持旧配置继续运行,业务不受影响。 直接 reload 则可能让 Nginx 起不来。这一条能避免绝大多数"配置改完网站就挂了"的事故。
五、报错怎么读:VPS搭建网站最常见的八个错误

这一节是查资料时最被需要的。错误信息看不懂,是新手放弃的第一原因。
错误一:502 Bad Gateway。 PHP-FPM 没运行,或者 socket 路径不对:
systemctl status php8.2-fpm
ls /run/php/
错误二:404 Not Found。 目录或文件位置错了。确认 root 指向的目录里真的有 index.php:
ls -la /var/www/example.com/public/
错误三:403 Forbidden。 权限不对:
chown -R www-data:www-data /var/www/example.com
chmod -R 755 /var/www/example.com
错误四:413 Request Entity Too Large。 上传文件超过限制。在站点配置里加:
client_max_body_size 32m;
错误五:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)。 80 端口被占:
ss -tlnp | grep :80
错误六:nginx: [emerg] invalid number of arguments in "user" directive。 配置文件语法错,nginx -t 会指出具体行号,照着行号改就行。
错误七:Killed process ... (mysqld)。 内存不够,MySQL 被 OOM Killer 杀了。这是 1 GB 机器跑数据库的典型结局,解决方式是升配到 4 GB(RosCloud-03 及以上)或关掉不必要的服务。
错误八:php-fpm.service failed to start。 配置语法错误:
php-fpm -t
这八条按出现频率排序,排查时从上往下试。 另外有两个通用技巧:第一,看错误日志 tail -50 /var/log/nginx/error.log;第二,改任何配置前先备份 cp /etc/nginx/sites-available/example.com{,.bak},改坏了能立刻还原。
再补充两个不报错但影响体验的问题,搜索「vps搭建网站报错」时反而经常搜到:
问题九:页面打开很慢,但服务器上什么都正常。 这几乎总是 PHP-FPM 子进程数不够。默认配置下 PHP-FPM 只有几个 worker,并发一上来就排队。改这个配置:
vi /etc/php/8.2/fpm/pool.d/www.conf
找到 pm.max_children,按内存算:1 GB 机器设 10,2 GB 设 20,4 GB 设 40。改完重启:
systemctl restart php8.2-fpm
这个参数配小了,表现就是"平时挺快,一有人并发就卡住"。 很多人误以为是带宽不够,其实是进程不够。
问题十:上传的图片在后台显示裂图。 这是 WordPress 的 uploads 目录权限问题,对应第一节最后那行 chmod -R 775。另外还要确认 PHP 的上传大小限制:
vi /etc/php/8.2/fpm/php.ini
改 upload_max_filesize 和 post_max_size 两个值,两者要一致,然后重启 PHP-FPM。只改一个不生效,这是最常见的"改了配置还是传不上去"的原因。
最后一条排查心法:报错信息里的"第一行"通常不是根因,"最后一行"才是。 比如 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use),真正的问题不在 Nginx,而在占用 80 端口的那个进程。顺着报错往下找占用者,而不是反复重试同一条命令,这是排错效率的分水岭。
六、数据库怎么装、怎么连、密码忘了怎么办

WordPress、Typecho、绝大多数 CMS 都依赖 MySQL。
装完先确认服务起来了:
systemctl status mysql
首次登录不需要密码:
mysql
进去之后建库建用户:
CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mysite'@'localhost' IDENTIFIED BY '你的强密码';
GRANT ALL PRIVILEGES ON mysite.* TO 'mysite'@'localhost';
FLUSH PRIVILEGES;
EXIT;
utf8mb4 而不是 utf8。 这是建站教程里最该强调的一条:utf8 在 MySQL 里其实是 utf8mb3,最多 3 字节的字符,存 emoji 会报错或截断。 用 utf8mb4 才不会有这个问题。
用命令行测试能不能连上:
mysql -u mysite -p mysite
连接 CMS 时填的信息要和上面完全一致:数据库名 mysite、用户名 mysite、密码你刚设的、主机填 localhost(或 127.0.0.1)。
密码忘了怎么办? 有两条路:
路一,用 Debian/Ubuntu 的免密通道重置:
sudo mysql
进入 MySQL 后执行:
ALTER USER 'mysite'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
EXIT;
路二,忘了 root 密码就用这个初始化流程找回:
sudo systemctl stop mysql
sudo mkdir /var/run/mysqld && sudo chown mysql:mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
进去后执行 FLUSH PRIVILEGES; 再改密码,然后 exit,最后 sudo systemctl stop mysql && sudo systemctl start mysql 恢复正常启动。
注意路径 /var/run/mysqld 是很多报错的关键: 如果提示 Can't create/write to file '/var/run/mysqld/mysqld.pid',就是这个目录不存在或属主不对,上面那条 mkdir 和 chown 就是解法。
七、域名解析与 HTTPS:最容易白忙一场的一步

网站搭好了但访问不到,八成卡在域名解析。
第一步,在域名服务商加 A 记录,主机记录填 @ 和 www,记录值填服务器 IP。
第二步,确认解析生效:
nslookup example.com
返回的 Address 和你的服务器 IP 一致,才算成功。 解析生效通常需要几分钟到几十分钟。在解析没生效之前申请证书,必然失败——这是最高频的踩坑点。
第三步,装 acme.sh 申请免费证书:
curl https://get.acme.sh | sh -s email=你的邮箱
source ~/.bashrc
~/.acme.sh --issue -d example.com -d www.example.com --nginx
申请成功的标志是命令行输出一串带 https:// 开头的证书路径。
acme.sh 常见的两种验证方式,选哪个有讲究:
| 方式 | 命令 | 特点 |
|---|---|---|
| Nginx 插件 | --nginx |
自动改配置、自动 reload,最省事 |
| Standalone | --standalone |
占用 80 端口,需要停 Nginx |
用 --nginx 插件的前提是 Nginx 已经在跑且配置合法。 如果你的 Nginx 配置有问题(比如 fastcgi_pass 的 PHP 版本写错),插件模式会因为无法 reload 而失败,但错误信息会指向 Nginx 配置而不是证书本身,容易误判。 这时先 nginx -t 确认配置无误,再申请。
第四步,安装证书并设置自动续期:
~/.acme.sh --install-cert -d example.com \
--key-file /etc/ssl/private/example.com.key \
--fullchain-file /etc/ssl/fullchain/example.com.pem \
--reloadcmd "systemctl reload nginx"
第五步,Nginx 里启用 443:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/fullchain/example.com.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
root /var/www/example.com/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.2-fpm.sock;
}
}
同时把 80 端口的 server 块改成跳转:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
申请证书失败的排查顺序:先看 DNS(nslookup),再看防火墙(ufw status 里有没有 80),最后看 80 端口是否被跳转了。
续期要手动验证一次,不能默认它能工作:
~/.acme.sh --cron --force
看到输出里显示下次续期时间,就算通过。 有些面板会改写 crontab 导致续期任务静默失效,这是"证书三个月后突然过期"的典型原因。
八、怎么让网站跑得更快:四个不花钱的优化

搭完之后就该优化。这里说的都是不花钱的办法——很多人在此之前先想到升配,方向就错了。
第一,Nginx 开启 gzip 压缩。 文本资源通常能压到原大小的四分之一左右:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/javascript application/json application/xml;
第二,静态资源设置缓存过期:
location ~* \.(jpg|jpeg|png|gif|webp|svg|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
这两条组合起来的效果:第二次访问时静态资源几乎不占带宽,首字节之后的传输量接近零。
第三,PHP 开启 OPcache。 这是 WordPress 站点提速最明显的一招:
apt install -y php-opcache
systemctl restart php8.2-fpm
不开 OPcache 的 PHP,每次请求都要重新解析 PHP 文件;开了之后解析结果缓存在内存里。 对 WordPress 这种文件多、逻辑重的 CMS,这个开关往往比加 2 GB 内存更有效。
第四,数据库加索引。 用 WordPress 时可以用 wp-cli 检查:
wp db optimize
wp db query "SHOW FULL TABLES;"
前两条是纯配置,收益立竿见影;后两条要看你具体用什么 CMS。
优化前先测基线,优化后再测一次:
curl -o /dev/null -s -w 'TTFB: %{time_starttransfer}s Total: %{time_total}s Size: %{size_download}\n' \
https://example.com/
没有基线,你无法证明优化有没有用。
另外两个优化项,都对 WordPress 这类 CMS 效果明显:
第一,装 OPcache(如果第三节没装):
apt install -y php-opcache
systemctl restart php8.2-fpm
第二,删掉 WordPress 里用不到的东西。 插件装得越多,页面加载时执行的 PHP 越多。十个不用的插件带来的开销,可能比加 2 GB 内存还大。 用 wp plugin list 看看装了什么,长期不用的删掉。
第三,如果站点有大量图片,给图片生成缩略图。 一张 3000 像素的原图直接塞进页面,可能就要传 2 MB。缩略图 + WebP 转换能把首屏传输量降一个量级,而且这不需要改服务器配置,只需要一次性处理。
优化的正确顺序是:先测基线 → 做零成本的配置优化(gzip、缓存、OPcache)→ 再测 → 仍然不够再考虑升配。 顺序反了就是花钱买不必要的配置。
九、建站之后必须做的四件事:备份、监控、防火墙、日志

网站上线不等于结束。这四件事做不做,决定了出问题时的损失大小。
第一,备份。 数据库导出:
mysqldump -u root -p --single-transaction --routines --triggers mysite > /root/mysite_$(date +%F).sql
--single-transaction 必须加,否则 InnoDB 表的导出会锁表,生产环境会卡住。文件同步:
rsync -avz --delete --exclude 'cache/' /var/www/ user@备份机:/backup/www/
备份不能放在同一台机器上。 机器挂了备份跟着一起没,这不算备份。
第二,监控。 至少盯三个指标:内存、磁盘、CPU 负载。
free -m
df -h /
cat /proc/loadavg
磁盘使用率超过 80% 就要处理了。 日志文件把根分区写满,会导致 MySQL 写不进去、FTP 传不上去、面板操作全部失败——这是 VPS 上最常见的"突然全挂"原因。
第三,防火墙收敛。 检查暴露的端口:
ss -tlnp
ufw status verbose
除了 SSH、80、443,其余端口都应该关掉。 装过面板的话,面板端口也是暴露面,要么改安全入口路径,要么限制来源 IP。
第四,日志轮转。 logrotate 默认配置一般已经覆盖 Nginx 和 MySQL,但要确认:
vi /etc/logrotate.d/nginx
没有轮转的日志会一直涨,最后把磁盘吃满。
这四件事里,备份和监控的自动化最值得多花十分钟。 手动执行一次不难,难的是"每周想起来做一次"——真正出故障时往往是忘了做的那一次。 把它变成定时任务:
# 每天凌晨 3 点导出数据库并保留 14 天
echo "3 3 * * * mysqldump -u root -p'你的密码' --single-transaction mysite | gzip > /root/backup/mysite_\$(date +\%F).sql.gz && find /root/backup -name 'mysite_*.sql.gz' -mtime +14 -delete" >> /etc/crontab
用 gzip 压缩,一个几百 MB 的 SQL 库能压到原来的十分之一左右,14 天的备份也放得下。find ... -mtime +14 -delete 是自动清理老备份,磁盘小的机器上这行不能省。
再配一个站点存活监控,每 5 分钟探一次,挂了就知道:
cat > /usr/local/bin/site_watch.sh << 'EOF'
#!/bin/bash
CODE=$(curl -o /dev/null -s -m 10 -w '%{http_code}' https://example.com/)
if [ "$CODE" != "200" ]; then
echo "$(date '+%F %T') 站点异常 HTTP=$CODE" >> /var/log/site_watch.log
fi
EOF
chmod +x /usr/local/bin/site_watch.sh
echo "*/5 * * * * /usr/local/bin/site_watch.sh" >> /etc/crontab
监控的价值不在于报警本身,而在于日志里的时间线。 站点出问题后翻日志,能立刻看出"是从今天凌晨 2 点开始连续的",这比"可能是最近几天"有用一百倍。
顺便说一句:磁盘监控要设成自动告警而不是手动查。 磁盘满是那种"你完全没察觉,直到网站挂了"的问题——没有告警,你只有等用户投诉才知道。
按你的情况,下一步该看哪家
上面讲的是判断标准,但多数人最后还是想问一句「那我该买谁」。按你的实际情况对照下面几条,直接去看对应的机型页比继续比价更快:
- 只想搭个站、预算优先:先看价格最低那档够不够用,别为用不上的配置付钱。看 iwebfusion 当前机型与价格
- 主要访客在国内、在意打开速度:先确认回程线路,再谈配置。看 racknerd 当前机型与价格
- 只是开发测试、临时用:按小时或月付,用完就删,别买年付。看 cloudcone 当前机型与价格
价格与库存以商家页面当日显示为准,下单前建议先确认退款窗口与是否支持按月付费。
十、什么情况下不该用 VPS 建站,以及替代方案

最后说清边界。以下几种情况,用 VPS 建站是错的选择。
第一种:你只是想放一个静态页面、一封落地页表单。 共享虚拟主机更便宜、更省事,你不需要 root、不需要 SSH、不需要自己管 Nginx 和证书。VPS 的价值在于你要装自己的东西、跑自己的程序;只是放静态页,这部分能力是浪费的。
第二种:你的访问量很小,且没有技术维护能力。 1 GB 内存的机器跑静态站没问题,但一旦出现故障(磁盘满、证书过期、服务起不来),你得自己排查。 如果你不打算学这些,用带控制面板的虚拟主机或建站服务更稳妥。
第三种:你需要固定的、可预期的稳定带宽。 VPS 的带宽通常是端口分配上限,晚高峰能否跑满取决于共享情况。如果你要做大流量分发且对速度有稳定预期,该看的是独享带宽的产品线。 商品库里 LAX-MEDIUM 标称 10000 Mbps、LAX-LARGE 标称 10000 Mbps,LAX-STARTER 标称 2000 Mbps,这类大带宽机型的定位就是分发节点。
第四种:你的业务需要跑长时间任务、且对 CPU 稳定性敏感。 普通 VPS 是共享资源池,超售时 CPU 会被降速。跑渲染、编译、爬虫这类持续吃 CPU 的任务,独立服务器或高核心数机型更合适。 RosCloud-06 是 7 vCPU、24 GB 内存、69.99 美元/月,LAX-LARGE 是 8 vCPU、16 GB 内存、1600 美元/年折合每月 133.33 美元。
第五种:你的站点在国内大陆、且要长期稳定运营。 大陆节点需要 ICP 备案,备案周期和主体资质要求都会拖慢上线。 这种情况要么接受备案流程,要么用香港等境外节点——但境外节点面向大陆用户时,要接受首字节延迟比大陆节点高的事实,这是物理距离决定的。
第六种:你需要的功能已经超出 Web 服务器的范围。 例如要跑长连接服务、消息队列、复杂的后端服务编排——这些场景该上云服务器的容器服务或函数计算,不是拿一台 VPS 硬扛。
把整条链路收一下:VPS搭建网站的实际流程是「准备 → 安全基线 → 选技术路线 → 配 Nginx → 排错 → 装数据库 → 配域名和 HTTPS → 性能优化 → 运维兜底」,每一步都有明确的验收信号,第 8 节的四个优化和第 9 节的四件运维事务是让站点长期活着的关键。如果你的需求在第 10 节的六种情况之外,就按这个流程走,走完你就有了一个自己的站。**
最后给一份可以直接照着勾的检查清单。 部署完成后逐条打勾,全部打上才算完工:
| # | 检查项 | 验收方式 |
|---|---|---|
| 1 | 密码已改,SSH 端口已换 | ss -tlnp 里没有 22 |
| 2 | fail2ban 在跑 | systemctl is-active fail2ban 返回 active |
| 3 | 防火墙只开必要端口 | ufw status 里只有 SSH、80、443 |
| 4 | 网站正常返回 | curl -I http://127.0.0.1 返回 200 或 301 |
| 5 | 域名解析生效 | nslookup 返回的 IP 是你的服务器 |
| 6 | HTTPS 可用且自动跳转 | 访问 http:// 自动跳到 https:// |
| 7 | 证书续期正常 | ~/.acme.sh --cron --force 显示下次续期时间 |
| 8 | 数据库定时备份 | crontab 里能看到备份任务 |
| 9 | 内存有余量 | free -m 的 available 高于总内存的 15% |
| 10 | 磁盘有空间 | df -h / 使用率低于 80% |
这十条里,第 9 和第 10 条是判断"这台机器撑不撑得住"的核心指标。 站点刚上线时可能都正常,但随着数据积累,磁盘会慢慢逼近那条 80% 的线——清单告诉你现在合格,但真正要定期复看的只有这两项。
如果十项里有任何一项没打上,先解决那一项,再继续往下走。 部署和运维是这个流程的两半,只有部署没有运维的站,活不过第三个月。
价格与库存来自渠道库快照(数据时间 2026-11-06 13:28),以官网当日报价为准。配置一台机器前,先确认商家是否支持按月付费、退款窗口多长,以及流量超额后的计费方式。

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