租用您的第一个云服务器?在部署小应用之前避免这些常见的VPS错误
租用您的第一个云服务器?在部署小应用之前避免这些常见的VPS错误
租用您的第一个云服务器令人兴奋,但这也是许多初学者浪费金钱、丢失数据或以弱安全性将应用暴露于互联网的地方。
VPS为您提供一个真实的Linux服务器,并具有root访问权限。这种自由对于部署网站、API、机器人、仪表板、自动化脚本和小型SaaS项目非常有用。但与共享主机不同,VPS还意味着您负责操作系统、防火墙、更新、备份、域名、Web服务器和应用程序进程。
本指南是为希望在不陷入最常见陷阱的情况下部署小应用的首次VPS用户编写的。我将介绍:
- 如何选择合适的VPS计划
- 在付款前应避免的错误
- 如何保护新的Ubuntu服务器
- 如何部署一个小的Node.js应用
- 如何添加Nginx、域名、HTTPS、防火墙规则和基本监控
- 何时选择像LightNode VPS这样的提供商对初学者有意义
以下命令假设使用Ubuntu 22.04或24.04,并且有一个小型Web应用监听端口3000。
1. 在定义工作负载之前不要租用VPS
第一个错误是在不知道将运行什么的情况下购买服务器。
不要从以下问题开始:
什么是最便宜的VPS?
从以下问题开始:
这个服务器在接下来的30天内究竟会运行什么?
对于第一个小应用,您的工作负载可能是以下之一:
- 登陆页面
- 个人博客
- 小型Node.js或Python API
- Telegram或Discord机器人
- 轻量级管理仪表板
- 测试数据库
- 学习部署的暂存服务器
大多数初学者项目不需要大型服务器。一个现实的起点是:
| 用例 | 建议的VPS |
|---|---|
| 静态网站或学习Linux | 1 vCPU, 1 GB RAM |
| 小型Node.js/Python应用 | 1 vCPU, 1-2 GB RAM |
| WordPress或带数据库的应用 | 2 vCPU, 2-4 GB RAM |
| Docker与多个服务 | 2-4 vCPU, 4 GB+ RAM |
如果您不确定,请从小开始,稍后再升级。初次购买VPS时过度购买是常见的,因为初学者将“生产就绪”与“大型服务器”混淆。一个流量较低的小应用通常需要干净的配置,而不是昂贵的硬件。
2. 租用VPS时的常见错误
错误1:仅根据最低价格选择
非常便宜的VPS可以用于实验,但仅凭价格无法告诉您:
- CPU是否被大量共享
- 存储是SSD还是NVMe
- 网络路由是否适合您的用户
- 带宽是否有限制或被限制
- 快照和备份是否需要额外费用
- 支持是否响应及时
对于第一次部署,选择一个使服务器创建、重建、IP管理、计费和区域选择易于理解的提供商。
这就是为什么LightNode值得初学者考虑的原因之一。LightNode提供具有全球位置的云VPS计划,Linux和Windows选项,以及灵活的计费。如果您正在测试一个小应用,按小时计费是有用的,因为您可以创建一个服务器,进行部署,测试延迟,如果位置或配置错误则停止付费。
您可以在这里查看: LightNode VPS
错误2:选择错误的服务器位置
服务器位置会影响真实用户体验。
如果您的用户在新加坡,欧洲的服务器可能可以工作,但会感觉更慢。如果您的客户在美国,请选择美国地区。如果您的团队每天需要SSH访问,请选择一个对您的团队延迟稳定的位置。
在租用之前,请决定:
- 大多数用户位于哪里?
- 低延迟重要吗?
- 应用是否提供图像、文件或API?
- 您是否需要特定国家以满足合规或商业原因?
LightNode在这里可以很实用,因为它有许多全球VPS位置。对于新用户来说,这使得测试靠近受众的区域变得更容易,而不是猜测。
错误3:忽视操作系统
对于大多数初学者,选择Ubuntu LTS。
推荐:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
避免仅仅因为在面板中出现而选择不熟悉的操作系统。Ubuntu拥有最多的教程、最友好的初学者包示例,并且与Node.js、Python、Docker、Nginx、Certbot和数据库软件具有广泛的兼容性。
错误4:永远以root身份登录
许多提供商在服务器创建后会通过电子邮件或显示root密码。这是正常的,但您不应该将root作为日常登录。
root访问权限非常强大。错误的命令可能会破坏服务器。泄露的root密码可能会使攻击者完全控制。
更安全的模式是:
- 以root身份登录一次
- 创建一个普通用户
- 给予该用户sudo权限
- 使用SSH密钥
- 在确认密钥访问正常后禁用密码登录
下面的教程显示了确切的步骤。
错误5:在更新服务器之前部署应用
新的VPS镜像可能没有最新的安全补丁。在安装您的应用栈之前,请更新系统:
sudo apt update
sudo apt upgrade -y
sudo reboot跳过此步骤在第一天并不严重,但会养成坏习惯。始终在将服务暴露于互联网之前进行更新。
错误6:打开过多端口
初学者通常会打开每个端口,因为某些东西无法正常工作。这是危险的。
对于基本的Web应用,您通常只需要:
22用于SSH80用于HTTP443用于HTTPS
您的应用端口,例如3000,通常应保持私有,并通过Nginx作为反向代理进行访问。
错误7:在出现故障之前忘记备份
备份是无聊的,直到您删除数据库、破坏部署或丢失服务器。
至少,保留:
- 在重大更改之前的提供商快照
- 数据库备份
- Git中的应用源代码
- 安全存储的
.env秘密 - 如果您的应用接受上传,上传的文件应复制到服务器外
不要将VPS视为项目的唯一副本。
3. 第一次VPS设置清单
在部署任何内容之前,收集以下详细信息:
- VPS IP地址
- root密码或SSH密钥
- 选择的操作系统版本
- 服务器区域
- 域名(如果有的话)
- 应用运行时,例如Node.js、Python、PHP或Docker
- 预期的应用端口,例如
3000
然后按照以下顺序进行:
- 通过SSH登录。
- 更新服务器。
- 创建一个非root的sudo用户。
- 添加SSH密钥登录。
- 配置防火墙。
- 安装运行时和Web服务器。
- 部署应用。
- 添加Nginx反向代理。
- 将域名DNS指向VPS。
- 启用HTTPS。
- 添加进程管理器和备份。
这个顺序可以避免许多初学者错误。
4. 分步教程:在新的VPS上部署小应用
步骤1:连接到服务器
将YOUR_SERVER_IP替换为您的VPS公共IP:
ssh root@YOUR_SERVER_IP如果您的提供商使用SSH密钥,请指定您的私钥:
ssh -i ~/.ssh/your_key root@YOUR_SERVER_IP登录后,确认操作系统:
lsb_release -a步骤2:更新软件包
apt update
apt upgrade -y
reboot重启后重新连接:
ssh root@YOUR_SERVER_IP步骤3:创建一个Sudo用户
创建一个名为deploy的用户:
adduser deploy
usermod -aG sudo deploy现在将您的SSH密钥复制到新用户:
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy从您的本地机器测试新登录:
ssh deploy@YOUR_SERVER_IP确认sudo工作正常:
sudo whoami预期输出:
root步骤4:加强SSH登录
打开SSH服务器配置:
sudo nano /etc/ssh/sshd_config设置或更新以下行:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes重启SSH:
sudo systemctl restart ssh重要提示:保持当前终端打开,并在关闭之前测试新的SSH会话。如果您的密钥登录失败,请在断开连接之前修复它。
步骤5:配置防火墙
安装并启用UFW:
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status除非您有特定原因,否则不要将您的应用端口(例如3000)公开到互联网。
步骤6:安装Node.js
从NodeSource安装Node.js LTS:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs -y
node -v
npm -v如果您的应用使用Python、PHP、Go或Docker,请安装相应的运行时。部署结构类似:应用在本地运行,Nginx公开它。
步骤7:创建一个简单的测试应用
创建一个应用目录:
mkdir -p ~/apps/hello-vps
cd ~/apps/hello-vps
npm init -y
npm install express创建server.js:
nano server.js粘贴这个小的Express应用:
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
app.get("/", (req, res) => {
res.send("Hello from my first VPS deployment.");
});
app.get("/health", (req, res) => {
res.json({ ok: true });
});
app.listen(port, "127.0.0.1", () => {
console.log(`App listening on http://127.0.0.1:${port}`);
});运行它:
node server.js在另一个SSH会话中,测试它是否在本地运行:
curl http://127.0.0.1:3000/health预期输出:
{"ok":true}使用Ctrl+C停止应用。
步骤8:使用PM2保持应用运行
安装PM2:
sudo npm install -g pm2
cd ~/apps/hello-vps
pm2 start server.js --name hello-vps
pm2 save
pm2 startuppm2 startup命令会打印另一个命令。准确复制并运行该命令。然后检查:
pm2 statusPM2确保您的应用在崩溃或服务器重启后重新启动。
步骤9:安装Nginx
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx在浏览器中打开您的服务器IP:
http://YOUR_SERVER_IP您应该看到默认的Nginx页面。
步骤10:配置Nginx反向代理
创建一个新的Nginx配置:
sudo nano /etc/nginx/sites-available/hello-vps如果您还没有域名,请使用服务器IP作为server_name _;:
server {
listen 80;
server_name _;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}启用该站点:
sudo ln -s /etc/nginx/sites-available/hello-vps /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx现在访问:
http://YOUR_SERVER_IP您应该看到:
Hello from my first VPS deployment.步骤11:将您的域名指向VPS
在您的域名DNS面板中,添加一个A记录:
| 类型 | 名称 | 值 |
|---|---|---|
| A | @ | YOUR_SERVER_IP |
| A | www | YOUR_SERVER_IP |
DNS可以在几分钟内更新,但有时需要更长时间。您可以检查:
dig yourdomain.com在DNS正常工作后,更新您的Nginx配置:
sudo nano /etc/nginx/sites-available/hello-vps将:
server_name _;更改为:
server_name yourdomain.com www.yourdomain.com;重新加载Nginx:
sudo nginx -t
sudo systemctl reload nginx步骤12:使用Certbot启用HTTPS
安装Certbot:
sudo apt install certbot python3-certbot-nginx -y请求证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com测试续订:
sudo certbot renew --dry-run现在您的应用应该可以在以下地址加载:
https://yourdomain.com5. 在宣布部署完成之前检查的事项
快速检查以下清单:
ssh deploy@YOUR_SERVER_IP可以正常工作- root SSH登录已禁用
- 如果已配置SSH密钥,则禁用密码SSH登录
sudo ufw status仅显示SSH、HTTP和HTTPSpm2 status显示应用在线sudo nginx -t通过- 域名指向正确的IP
- HTTPS正常工作
- 应用秘密未提交到Git
- 至少有一个备份或快照
这就是“它运行”和“它合理地准备好供真实用户使用”之间的区别。
6. 何时选择LightNode VPS作为初学者的好选择
LightNode并不是唯一的VPS提供商,但在几种情况下,它是首次用户的实用选择:
- 您希望在学习时按小时计费
- 您需要在选择之前测试多个区域
- 您想要一个简单的Linux VPS用于小应用
- 您需要全球VPS位置
- 您希望快速部署,而不必浏览复杂的企业云面板
- 您还没有准备好承诺长期的月度或年度计划
对于第一个小应用,我会从以下开始:
- Ubuntu 22.04或24.04
- 1-2 vCPU
- 1-2 GB RAM
- NVMe/SSD存储
- 离您的用户最近的服务器位置
如果您稍后需要更多资源,请在获得真实流量数据后再升级。这通常比在第一天就猜测过高要好。
您可以在这里查看LightNode:https://go.lightnode.com?ref=fa725d7f&id=58
7. 解决常见的第一次VPS问题
SSH显示权限被拒绝
检查:
- 您是否使用正确的用户名
- 您的SSH密钥是否已加载
- 提供商是否正确安装了您的公钥
- 在测试密钥登录之前,密码登录是否未被禁用
尝试:
ssh -v deploy@YOUR_SERVER_IP详细输出通常显示身份验证失败的位置。
应用在本地工作但在浏览器中无法访问
检查:
- 应用是否正在使用PM2运行
- 应用是否监听
127.0.0.1:3000 - Nginx代理是否指向相同的端口
- 防火墙是否允许
80和443 - Nginx配置测试是否通过
有用的命令:
pm2 logs hello-vps
sudo nginx -t
sudo systemctl status nginx
curl http://127.0.0.1:3000/health域名未指向VPS
检查DNS:
dig yourdomain.com
dig www.yourdomain.com确保返回的IP与您的VPS IP匹配。如果不匹配,请等待DNS传播或修复DNS记录。
Certbot失败
常见原因:
- DNS尚未指向服务器
- 端口
80被阻塞 - Nginx配置有错误
server_name中的域名错误
测试:
sudo nginx -t
sudo ufw status
curl -I http://yourdomain.com服务器内存不足
检查内存:
free -h
pm2 monit对于1 GB的VPS,考虑添加交换空间:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab交换空间不是足够RAM的替代品,但可以防止小型服务器在安装软件包或流量激增期间崩溃。
8. 对首次VPS用户的最终建议
您的第一个VPS不需要完美。它需要易于理解、安全性足够,并且易于重建。
保持设置简单:
- 一个应用
- 一个Web服务器
- 一个域名
- 一个进程管理器
- 一个备份计划
在您理解基础知识之前,避免在同一个小VPS上安装重型控制面板、多个数据库、Docker集群、电子邮件服务器、分析工具和实验脚本。
一旦您能够干净地部署一个小应用,您就可以继续学习Docker、CI/CD、托管数据库、监控仪表板以及更高级的基础设施。
常见问题
我应该租用多大尺寸的VPS用于我的第一个小应用?
对于基本的Node.js、Python或静态Web应用,开始时选择1 vCPU和1-2 GB RAM。如果您还在同一服务器上运行数据库,2 vCPU和2-4 GB RAM会更舒适。
Ubuntu适合初学者吗?
是的。Ubuntu LTS通常是最佳的首选,因为它有广泛的文档、稳定的包支持,并且与Nginx、Node.js、Python、Docker、Certbot和常见的部署工具配合良好。
我应该使用root还是创建另一个用户?
创建另一个具有sudo权限的用户。仅在初始设置或紧急恢复时使用root。日常SSH访问应使用具有SSH密钥身份验证的非root用户。
小应用需要Nginx吗?
在大多数情况下,是的。您的应用可以在私有本地端口上运行,而Nginx处理公共HTTP/HTTPS流量、域名路由、压缩和反向代理行为。
我应该将端口3000开放给互联网吗?
通常不应该。保持应用端口私有,仅通过Nginx公开80和443。这可以减少公共表面并使HTTPS更容易。
LightNode适合第一次VPS吗?
是的,特别是如果您希望灵活计费、快速部署和多个全球位置。LightNode非常适合学习、测试、小应用、轻量级生产工作负载以及不想立即承诺大型服务器计划的用户。
如果我的代码在GitHub上,我还需要备份吗?
是的。Git存储您的源代码,但可能不会存储您的数据库、上传的文件、环境变量、Nginx配置或特定于服务器的更改。请单独保留备份或快照。
我可以在一个VPS上托管多个应用吗?
可以,但初学者应该先从一个应用开始。在您理解Nginx服务器块、PM2进程名称、防火墙规则和资源使用情况后,在一个VPS上托管多个小应用会变得更容易。
我应该什么时候升级我的VPS?
当监控显示持续的CPU压力、低内存、慢数据库性能、磁盘限制或流量增长时升级。不要仅仅因为应用感觉重要而升级。升级是因为指标显示当前计划不再足够。
VPS对初学者来说比共享主机更好吗?
共享主机对于简单的网站更容易,但VPS给您更多的控制。如果您想学习部署、运行自定义应用、使用SSH、配置Nginx、安装软件包或托管API,VPS是更好的学习路径。