像专业人士一样部署 — 无需任何 DevOps 经验即可设置、保护和扩展您自己的生产就绪 VPS。
本文最初发表于我的 Medium 账户。
阿罕·鲁米 从零开始构建生产服务器:终极指南 | 作者:ARHAM RUMI | 2025 年 10 月 | Medium 阿罕·鲁米・2025年10月5日・ 中等徽标 中等的 在一个痴迷于托管服务和无服务器堆栈的世界里,了解如何管理自己的虚拟专用服务器 (VPS) 是一项永恒的技能。
运行您自己的服务器可以为您带来:
✅ 完全控制您的基础设施 ✅ 与托管平台相比,长期成本更低 ✅ 真正的 DevOps 洞察力,可跨所有云提供商
无论您是启动初创 MVP、SaaS 应用程序还是个人项目,本指南都将带您从空白 VPS 进入完全部署的生产级环境。
💡 注意:本指南不针对任何特定的云提供商——无论您将 VPS 托管在何处,步骤都完全相同。您可以选择 AWS EC2、DigitalOcean、Vultr、Linode 或任何其他符合您预算、地区或性能需求的提供商。
我将在以后的文章中深入比较不同的 VPS 提供商,但现在,让我们专注于以正确的方式设置您的服务器。
初始服务器访问 首先,使用 SSH 或主机商提供的内置 Web 终端连接到您的 VPS。在本指南中,我将使用主机商内置的 Web 终端连接到我的 VPS。
连接到 VPS
连接成功后,您将看到如下所示的 VPS 集成终端。
已连接到 VPS
检查系统代号 运行此命令来查看您的 VPS 操作系统的代号。
lsb_release -a 你会看到类似这样的内容。
VPS 代号
我的 VPS 代号是noble。
识别系统的初始化系统 在管理 MongoDB 或 Node.js 应用程序等服务之前,了解你的 Linux 发行版使用的 init 系统非常重要。init 系统负责在系统启动后启动和管理进程。
运行以下命令来识别您的 init 系统:
ps --no-headers -o comm 1 它将显示您的 init 系统。我的是systemd。
💡 重要性: 服务管理命令(例如启动、停止和启用 MongoDB 或 PM2)依赖于 init 系统。目前大多数 VPS 提供商都使用 systemd,因此如果您的输出显示 systemd,则可以放心地遵循本指南中的所有 systemctl 命令。
更新系统包 始终更新 VPS — 这样可以修复基础镜像中已知的漏洞。运行以下命令:
sudo apt update && sudo apt upgrade -y sudo apt autoremove -y 安装 Essentials 这些工具对于获取远程文件和部署应用程序至关重要。
sudo apt install curl git -y 安装核心运行时 — Node.js(LTS 版本) 前往 LTS(长期支持)版本。
Nodesource 主页
逐个运行以下命令。
curl -fsSL | sudo -E bash - sudo apt install -y nodejs 您可能已经注意到,-E与官方 NodeSource 安装命令相比,我们的命令包含一个额外的标志。
通常,当您使用 时sudo,您的环境变量(例如代理设置(HTTP_PROXY、HTTPS_PROXY等)或自定义配置路径)不会传递到根环境。这是一种安全措施,旨在防止通过环境操作意外提升权限。
通过使用sudo -E,我们确保您现有的环境(尤其是与代理相关的设置)在安装期间保持完好。
✅ 如果您使用代理,使用-E可防止因缺少代理配置而导致的下载失败。
✅ 如果您直接连接互联网,则不会受到影响 - 该命令的作用与 相同sudo。
🧠 简而言之:sudo -E这只是一个安全网。如果您的 VPS 可以直接访问互联网,则可以省略它,但最好将其包含在内,以避免安装过程中出现与代理相关的问题。
验证安装 运行这些命令来验证您的运行时安装。
node -v npm -v 验证 Node.js 安装
⚙️ 为什么选择 LTS?LTS 版本经过实践检验,并会持续收到多年的安全更新,非常适合生产稳定性。
安装 MongoDB 现代应用程序需要现代数据库。以下是如何安装 MongoDB 社区版。这包含几个步骤,我们将逐一讲解,并附上简短的描述,以便更好地理解。
首先,确保您已经GnuPG安装。
sudo apt install gnupg -y 现在,实际安装即将开始。我将遵循此链接中提到的官方说明。如果您愿意,可以直接点击该链接,或者留在此处——我将引导您完成每个必要的步骤。
Liquid 错误:内部
导入公钥 运行此命令来导入官方密钥。
创建列表文件 您只需根据您的 VPS 代号运行其中一个命令。我的 VPS 代号是noble。
运行noble这个:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] noble/mongodb-org/8.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.2.list 运行jammy这个:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] jammy/mongodb-org/8.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.2.list 运行focal这个:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] focal/mongodb-org/8.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.2.list 重新加载包数据库 运行以下命令重新加载包数据库。
sudo apt update 安装 MongoDB 社区服务器 使用以下命令安装最新稳定版本的 MongoDB:
sudo apt install -y mongodb-org 启动 MongoDB mongod您可以根据您的 init 系统发出以下命令来启动该进程。如果您有较旧的 init 系统,请点击此链接:
Liquid 错误:内部
我的初始化系统是systemd,因此我将使用以下命令:
sudo systemctl start mongod 如果启动时收到类似以下的错误mongod:
无法启动 mongod.service:未找到单元 mongod.service。
首先运行以下命令:
sudo systemctl daemon-reload 然后再次运行上面的启动命令。
检查 MongoDB 状态 运行此命令来验证 MongoDB 是否确实正在运行。
sudo systemctl status mongod Mongodb 状态检查
然后按CTRL + C退出MongoDB状态视图并返回正常终端。
🔒 专业提示:启用 MongoDB 可确保它在重启后自动重启。
sudo systemctl enable mongod 重启 MongoDB
您可以mongod通过发出以下命令来重新启动该进程:
sudo systemctl restart mongod 应用程序部署 拉取你的代码 我有一个用于学习的公共仓库。如果您想从那里开始,也可以查看、加星标或 fork 它。由于它是公开的,我不需要设置 SSH 来克隆它。
使用以下命令在存储库内移动:
cd social-app 仓库内部
🔒 专业提示:永远不要公开你的代码,除非你确实想将其开源。
安装环境 使用以下方式安装软件包:
npm install 使用实用程序创建.env文件nano。请确保环境变量的文件名与代码中导入的文件名相同。目前,我的代码从 导入环境变量.env,因此我将创建同名文件,如下所示:
nano .env 您将进入编辑器模式。只需复制您在本地文件中定义的所有变量.env,如下所示:
编辑环境
现在,按下CTRL + O写入更改。系统会要求您确认。按下ENTER。
保存环境
然后它会显示已写入的行数,以确认您的文件已保存。
保存的环境
然后使用 退出编辑器CTRL + X。
生产过程管理 使用以下方式全局安装PM2:
sudo npm install -g pm2 🚀 为什么选择 PM2?它确保零停机重启、负载平衡和监控——非常适合生产级稳定性。
运行我们的应用程序的流程:
pm2 start npm --name "social-app-prod" -- run start 这里的startafterrun指的是你在文件中定义的脚本名称package.json。你可以用你自己的名称替换它。现在它看起来像这样。
运行应用程序的进程
使用以下方式监控您的应用程序:
pm2 logs social-app-prod 这social-app-prod是进程的名称——如果你使用其他名称,请更改它。它将显示如下日志:
应用程序日志
您可以使用 退出日志CTRL + C。使用以下命令检查进程状态:
pm2 list 或者使用:
pm2 status 它将显示您的流程。
pm2 列表 - 进程列表
使用以下命令确保您的应用程序在服务器重启后继续运行:
pm2 save pm2 startup systemd 验证和测试 健康检查验证 内部测试您的应用程序:
本地测试
外部访问测试 通过服务器的公网 IP 访问你的应用程序。我使用的是 Postman。
使用 Postman 进行 API 验证
太棒了——您的服务器运行正常!
🌐 网络配置:如果无法访问,请配置云提供商的防火墙规则,以允许应用程序端口上的 TCP 流量。例如:
允许端口 80 上的 TCP
允许端口 7000 上的 TCP
您可能还需要配置其他端口或规则。不过,为了便于演示,本文已尽量简化。
结尾:从命令行到信心 您不仅搭建了一台服务器,还拥有了独立自主的能力。通过从零开始设置和保护您自己的 VPS,您可以掌控自己的基础架构,并像专业人士一样自信地部署应用程序。
您现在知道如何: ✅ 使用更新和最佳实践保护您的服务器 ✅ 以专业的方式安装 Node.js 和 MongoDB✅ 使用 PM2 部署和管理生产应用程序 ✅ 确保一切在重启和扩展需求下正常运行
您的 VPS 现已成为您的个人云 — 定制、优化,真正属于您。您运行的每条配置命令都是掌握现代 DevOps 和后端可扩展性的基石。
后续步骤 在接下来的指南中,我们将进一步进行此设置 - 将Nginx配置为反向代理,使用Let's Encrypt启用免费 SSL 证书,并自动执行安全备份,以确保您的应用程序不仅活跃,而且具有弹性。
🚀掌控你的堆栈。精通你的技能。自信地部署。
从这里开始,探索使用Docker进行容器化,实施CI/CD 管道,或添加监控- 但请记住:每个企业级应用程序都从您刚刚构建的坚实基础开始。
💪 您不只是部署了一个应用程序——您还构建了可扩展、自我管理的基础架构。作者www.lglngy.com