第一台云服务器:从买到上线一步步走

2026 年 09 月 21 日 · 约 9 分钟读完

第一次买服务器的人,最容易在「选哪家、选什么配置」上纠结一周。其实第一台服务器的目标只有一个:跑起来。先买一台最小的,把网站放上去能打开,剩下的以后再说。这篇按顺序走,每一步都写清楚做到什么算做对。

第一台云服务器五步流程:买服务器、初始化、部署网站、绑域名、上线1买服务器最小配置先跑起来2初始化更新系统做安全基线3部署网站传代码服务跑起来4绑域名DNS 解析配好 HTTPS5上线开监控挂了先知道
第一台服务器五步:买 → 初始化 → 部署 → 绑域名 → 上线

买之前先定三件事

  • 地域:目标用户在哪,服务器就近。如果图省事不想备案,就选香港、新加坡或美国;国内服务器要备案,个人和企业都能备,就是要等管局审核。
  • 配置:1 核 2G 内存起步,个人小站够了。带宽先选最小的,不够再加。
  • 系统:选 Ubuntu 的 LTS 长期支持版。别选 Windows,部署网站用 Linux 是主流,教程也多。

下单时看一眼这三个地方

一是续费价,很多云厂商首年便宜、续费翻倍,算的是长期成本;二是带宽计费方式,按固定带宽还是按流量,图片多的站按流量可能更贵;三是快照(备份)收不收费、怎么收费。这三样看一眼,能避掉大部分「第二年账单吓一跳」。

拿到服务器,先做这四件事

云厂商会给你一个 IP、用户名(一般是 root)和密码或密钥。用 SSH 连上去,先更新系统,然后做这四件:

  • 改一个强密码,或换成密钥登录,关掉密码登录更安全
  • 在云厂商的安全组(防火墙)里放行 22(SSH)、80(HTTP)、443(HTTPS)端口
  • 装 Node.js(版本按你项目的要求来,交付包的说明里会写)
  • 装 PostgreSQL,或者直接用云厂商的托管数据库,省得自己备份
ssh root@你的服务器IP
# 连上之后先更新系统
apt update && apt upgrade -y

把网站传上去跑起来

代码怎么上去都行:git clone 最省事,或者本地打 zip 传上去解压。EazyOPC 交付包的话,按 START_HERE.md 的顺序来:装依赖、配环境变量(DATABASE_URL 这些,一段一段照着填,别整段复制)、生成数据库客户端、建表、构建、启动。每一步做完都有验证方法,说明里写了,不要跳步。

npm install
npx prisma generate
npm run db:push
npm run build
npm start

绑域名和 HTTPS

去域名注册商把域名的 A 记录指到服务器 IP,等几分钟到几小时生效。然后在服务器上装个反向代理(比如 Nginx 或 Caddy),把 80/443 端口的请求转给你的网站进程。HTTPS 证书现在都是免费的,Caddy 能自动申请,Nginx 配 certbot 也就几条命令。浏览器地址栏出现小锁,这步才算完。

第一次走这套流程,大概率会在某一步卡住——端口不通、数据库连不上、构建内存不足,都是新人必经之路。把报错信息原文完整记下来,去看《常见部署报错排查手册》,一篇一篇对。

用 pm2 让网站一直在跑

前面用 npm start 把网站跑起来,但有个要命的问题:SSH 窗口一关,网站就停了。生产环境要用进程管理工具,最常用的是 pm2。它干三件事:让网站在后台跑、挂了自动重启、日志集中管理。装和使用都不难:

npm install -g pm2
# 启动网站,起个你认识的名字
pm2 start npm --name "我的网站" -- start
# 看日志 / 重启 / 停止
pm2 logs 我的网站
pm2 restart 我的网站
pm2 stop 我的网站

名字起个你认识的,服务器上跑多个网站时不搞混。网站出问题了,先 pm2 logs 看日志,答案多半在里面。改完代码重新部署,pm2 restart 一下就行,不用先杀进程再手动起。记住:凡是「一直在跑」的东西,都应该在 pm2 list 里能看到,裸跑的进程早晚会出事。

服务器重启后,网站自己起来

服务器打补丁、升级配置都会重启。重启之后,pm2 管的网站不会自己起来——除非你做两件事。第一,运行 pm2 startup,它会给你一条命令,复制执行,这一步是让 pm2 自己开机启动。第二,pm2 save,把当前在跑的网站名单存下来。以后每次增删网站,都顺手 pm2 save 一下,不然下次重启起来的还是老名单,新加的网站不会起来。

验证办法:设置好之后,手动重启一次服务器(云厂商控制台上有重启按钮),等两分钟,浏览器打开你的网站,能打开才算数。别等到半夜系统自动更新重启了,才发现网站没起来——那时候你还在睡觉,用户已经在骂了。

磁盘满了:网站变慢、写不进数据的元凶

跑着跑着,网站突然变慢、上传文件失败、数据库写不进去,八成是磁盘满了。先看 df -h,找哪个分区满了;再用 du 一层层往下找谁占的地方。元凶通常三个:pm2 和 nginx 的日志文件越滚越大、数据库备份文件越攒越多、npm 缓存和没用的安装包。

df -h
# 找大目录,一层层往下钻
du -sh /var/log/* 2>/dev/null | sort -rh | head
# 清空 pm2 的日志(先确认已经看过报错)
pm2 flush

治本的办法是配日志轮转:Ubuntu 自带 logrotate,给 nginx 和 pm2 的日志配成按天切、只留 14 天。备份文件只留最近 7 天,上一篇的定时任务里已经写了自动删除。每个月花五分钟 df -h 看一眼,比半夜被「磁盘满了」叫醒强得多。

换服务器、重装系统:半小时恢复的底气

早晚有一天你要换服务器:涨价、机房故障、想换地域。到时候能不能半小时恢复,看你平时有没有准备好三样东西:代码在 git 仓库里(别只躺在服务器上)、环境变量单独存了一份(数据库密码、支付密钥,重装后照着填)、数据库有每天的备份。有这三样,新机器上就是装环境、拉代码、填变量、导数据四步,半小时搞定。缺一样,就得折腾一晚上。

记住这个排查顺序:网站异常,先 pm2 logs 看日志,再 df -h 看磁盘,再 free -h 看内存。这三板斧能解决一大半「网站突然不行了」。都看不出问题,再去看《常见部署报错排查手册》一篇一篇对。

日志都在哪:出问题先看它们

三处日志要知道位置:pm2 管的网站看 pm2 logs;nginx 或 Caddy 的访问和错误日志在 /var/log 里;应用自己写的日志看项目配置。看日志的习惯:从下往上看,最新的在最下面,找第一个 ERROR 或报错堆栈。别从第一行开始看,几万行日志看到天亮也找不到。

环境变量:别写在代码里

数据库密码、支付密钥这些,放在 .env 文件或者 pm2 的环境变量里,别写死在代码里。两个原因:一是代码要进 git,密钥进 git 等于公开;二是换服务器、改密码的时候,只改环境变量文件,不用改代码。环境变量单独存一份加密的,服务器挂了重建,照着填就行。

定时任务:备份和清理自动化

两件事交给定时任务:每天凌晨备份数据库(上一篇的 cron 命令直接抄),每周清理一次旧日志和旧备份。crontab -e 编辑,写完用 crontab -l 确认。定时任务没跑,先看 cron 服务在不在跑,再去 /var/log/syslog 里找它的执行记录。定时任务哑火了没人告诉你,定期检查是唯一的办法。

安全组:只开必要的端口

安全组(防火墙)只放行 22(SSH)、80(HTTP)、443(HTTPS),其他的全关掉。数据库端口(5432)千万别对外开,数据库只给本机用。SSH 更安全的做法:换成密钥登录,关掉密码登录;或者把 22 端口换个不常用的数字。被扫爆破是常态,日志里每天几千次尝试登录,习惯就好,挡住就行。

Swap:1G 小鸡的救命稻草

1G 内存的小机器,构建项目、跑数据库经常内存不够。加一块 swap 交换分区应急:硬盘空间当内存用,慢,但是能救命。构建的时候开着 swap,构建完可以关掉。长期跑在 swap 上说明内存真不够了,该升级机器了——swap 是创可贴,不是治疗方案。

装个监控:挂了第一时间知道

服务器配好了,最后装个存活监控:UptimeRobot 免费版,每 5 分钟检查一次网站能不能打开,挂了发邮件给你。具体用法在《独立开发者常用免费工具盘点》那篇里有。监控是运维的最后一块拼图:前面所有的努力,都是为了网站一直活着;监控是让你第一时间知道它死了。

第一台云服务器:从买到上线一步步走 · EazyOPC 博客