说实话,在自己服务器上捣鼓一套 Node + MongoDB + Nginx 的项目,过去真是件磨人的事。装 Node 要手动配环境变量,MongoDB 装完不配认证就裸奔,Nginx 的 location 里多写少写一个斜杠,都能让你排查到半夜。后来我在一个实际项目里开始用 1Panel 做部署管理,整条链路才算是真正顺畅起来。这篇东西就是把我用 1Panel 部署 Node + MongoDB + Nginx 项目的完整过程,连同踩过的坑、查过的报错、最后怎么解决的一起整理出来。适合所有想把前后端项目快速跑在云服务器上的开发者,尤其是第一次接触 Linux 面板、不想在生产环境里裸敲一堆命令的人。
1. 部署方案设计与环境准备:为什么这次选 1Panel
1.1 1Panel 到底解决了什么问题
1Panel 是一款开源、免费的 Linux 服务器运维管理面板,底层用 Go 开发,界面是全中文的。它跟宝塔这类面板定位不太一样,更强调容器化、安全性和应用商店的可控性。对我这种常年跟 Node 项目的后端开发来说,最实在的价值有三个:
第一,应用商店里已经把 Nginx、MongoDB、MySQL、Node.js 这类基础组件封装好了,点两下就能装,不用自己记一堆安装命令。第二,文件管理、终端、日志查看都在浏览器里完成,省了反复 SSH 登录的时间。第三,它默认启用了 fail2ban 防暴力破解、SSH 安全配置检查这些安全能力,对部署完就不太想管服务器的个人开发者来说,相当于多了一道保险。
当然,不是说没有 1Panel 就部署不了,而是有了它之后,整个流程从“一个晚上可能搞不完”缩短到“一杯咖啡的时间”。尤其是 MongoDB 和 Nginx 这种东西,默认配置其实离生产可用还有距离,面板给了你一个可视化的操作入口,后面再手动补安全设置和调优也方便很多。
1.2 部署前的服务器准备与面板安装
我这次用的是一台 2核4G 的云服务器,系统是 Ubuntu 22.04。做 Node 项目的部署,这个配置算比较标准的起步档,再低的话 npm 安装依赖、MongoDB 跑索引构建都会明显吃力。服务器硬盘建议至少 40G,因为 MongoDB 的数据文件和日志增长起来比想象中快。
安装 1Panel 前,建议先确认服务器能正常访问外网,因为安装脚本需要拉取依赖包和 Docker 镜像。官方一键安装命令大概是这样的(以官网最新命令为准):
bash复制curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh
sudo bash quick_start.sh
脚本执行过程中会提示设置面板端口、用户名和密码。这里有个很重要的建议:面板端口不要用默认的 8090,改成 29120 这种非常规端口,能少挨很多扫描器的打。安装完成后,脚本会输出一个面板访问地址,类似 http://服务器IP:端口,用浏览器打开就能进后台。
同时在云服务器的安全组或者防火墙里,需要提前放行 80、443、面板端口,以及项目要用的业务端口。这一步看起来基础,但往往就是“部署完了外网访问不了”的头号原因。如果你用的是阿里云、腾讯云这类平台,记得去控制台的安全组规则里加,单纯的 Linux 防火墙放行是不够的。
1.3 面板装好后,有 3 件事必须提前做
第一件,设置服务器地址。很多人第一次在面板里安装应用时会看到一行提示:“1panel 当前未设置服务器地址,请先在面板设置中设置!”。这东西不设置好,应用商店的同步、镜像拉取都会出问题。操作路径是:面板设置 → 系统 → 服务器地址,填入服务器绑定的域名或 IP 地址。如果是 IP 访问,填 IP 就行;如果有备案域名,建议直接填域名,后面给网站配 SSL 证书时也会省事不少。
第二件,切换镜像源。1Panel 的应用商店默认从官方源拉取应用定义,Docker 镜像也有默认仓库。国内服务器不换源的话,安装 MongoDB 这类大镜像很容易超时失败。在面板的“设置 → 镜像加速”里,填上可用的国内镜像加速地址,比如 Docker 官方中国镜像、一些大厂提供的加速器地址,具体以面板支持的列表为准。
第三件,开启面板的防火墙并限制访问来源。生产环境建议只允许自己的办公网 IP 访问面板端口,防止面板本身成为攻击入口。1Panel 自带的防火墙功能可以按 IP 段放行,比直接在系统层配 iptables 直观得多。这三件事做完,后面安装应用和服务的过程会顺利一大截。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Node.js 环境安装:版本和源是两大坎
2.1 应用商店安装和 nvm 手动安装怎么选
1Panel 的应用商店里确实有 Node.js,点一下就能部署一个容器化的 Node 环境。但我个人的实际建议是:部署生产项目,Node 环境最好装在宿主机上,或者至少用 nvm 做版本管理,而不是直接丢在容器里让面板托管。
原因很简单。第一,Node 项目经常要装全局命令行工具,比如 pm2、pnpm,容器里装完,重启容器就没了,还得重新进容器配置。第二,项目调试时你经常要改文件、看日志、重启进程,宿主机上操作显然比进容器方便。第三,Node 版本迭代太快,面板商店里的版本往往滞后,而 nvm 随时可以安装官方最新 LTS 版本。
所以我的方案是:Node 用 nvm 管理,MongoDB、Nginx 这类稳定服务用面板的应用商店或容器方式装,各取所长。
2.2 nvm 安装与 Node 版本切换实操
nvm(Node Version Manager)是我在所有 Linux 服务器上装 Node 的第一选择。它解决的问题很直接:一台机器上可能需要多个 Node 版本,今天跑老项目要 v16,明天新项目要 v22,用 nvm 切换就是一条命令的事。
安装 nvm 的步骤其实很简单,先拉取脚本:
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.
