相比单体应用,微服务能将复杂系统拆分成多个独立的模块,既便于开发协作,又能提升部署和扩展的灵活性。而在实际生产环境中,很多开发者都会选Ubuntu 服务器来承载Node.js 微服务。Ubuntu的稳定性、广泛的社区支持,以及与 Node.js 的高度兼容,让它成为理想的运行环境。对于初次接触的开发者来说,如何从零开始在 Ubuntu 服务器上部署一个 Node.js 微服务,往往是一个系统性问题。
下面我会结合实践经验,从准备服务器、安装运行环境、部署代码、配置进程管理、反向代理、日志管理到自动化更新,逐步展开,确保读者能跟着操作完成一个可上线的部署流程。
在开始之前,你需要具备一台可用的 Ubuntu服务器(推荐 20.04 或 22.04 版本),并拥有root 权限或sudo 权限。如果是云服务器,还需要提前开放 22 端口(SSH 登录)以及 80/443 端口(HTTP/HTTPS 访问)。
第一步是 更新系统环境。新购置的服务器往往需要先更新软件源和安全补丁,保证后续安装顺利。执行以下命令:
完成后,系统会将所有依赖更新到最新版本,避免因为缺少库而导致 Node.js 无法运行。
第二步是 安装 Node.js 和 npm。Ubuntu 官方仓库自带的 Node.js 版本通常偏旧,不建议直接使用。更推荐使用 NodeSource 或 nvm(Node Version Manager)来安装指定版本。以 NodeSource 为例:
安装完成后,可以检查版本:
确保输出的版本号符合你的项目要求。如果你需要在一台服务器上运行多个 Node.js 应用,建议安装 nvm,方便切换不同版本。
第三步是 准备项目代码。在本地开发完成后,可以通过 Git 将代码拉取到服务器。
在项目目录下,使用 npm 或 yarn 安装依赖:
这里建议加上 --production
参数,避免安装开发依赖,减少体积。
第四步是 运行应用进行测试。假设入口文件是 app.js
,可以先尝试直接运行:
如果输出提示服务已启动,可以在浏览器访问 http://服务器IP:端口号
进行测试。此时 Node.js 应用是前台运行的,关闭 SSH 会话后就会停止,因此还需要配置进程管理工具。
第五步是 使用 PM2 管理进程。PM2 是最常见的 Node.js 进程管理工具,支持守护进程、自动重启、日志管理。安装 PM2:
使用 PM2 启动应用:
此时应用会在后台运行。可以用以下命令查看状态:
如果想要在服务器重启后自动启动应用,可以执行:
这样即使服务器重启,微服务也能随系统自动恢复运行。
第六步是 配置 Nginx 作为反向代理。Node.js 应用默认监听某个端口,比如 3000,但用户访问时习惯使用标准的 80 或 443 端口。Nginx 可以作为反向代理,将外部请求转发给 Node.js 服务。
安装 Nginx:
配置虚拟主机文件:
写入以下内容:
启用配置并重启 Nginx:
现在就可以通过域名直接访问 Node.js 微服务了。
第七步是 配置 HTTPS 证书。如果微服务需要对外提供服务,强烈建议启用 HTTPS。
安装成功后,访问地址就会自动跳转到 HTTPS,更加安全。
第八步是 日志和监控。微服务架构中,日志管理尤为重要。PM2 自带日志功能,可以用以下命令查看:
如果要长期保存日志,可以设置 logrotate 或将日志输出到外部存储。对于监控,可以考虑结合 pm2 monit 或 Prometheus + Grafana 方案,实现更精细的运维管理。
第九步是 自动化部署。在团队协作中,频繁手动更新代码并不高效。可以借助 Git hooks 或 CI/CD 工具(如 GitLab CI、Jenkins、GitHub Actions)实现自动部署。例如,可以在服务器上配置一个脚本:
这样只要在本地提交并推送代码,就能在服务器上通过 git pull
拉取最新版本,并自动重启服务。
第十步是 性能优化。在生产环境中,可以通过以下措施优化 Node.js 微服务:
-
启用 Cluster 模式,利用多核 CPU 提升并发能力:
-
开启 gzip 压缩,减小传输体积:在 Nginx 配置里添加:
gzip on; gzip_types text/plain application/javascript text/css application/json;
-
使用 缓存(如 Redis)存储频繁访问的数据,降低数据库压力。
-
设置 环境变量,将敏感配置与代码分离,例如数据库密码和 API Key。
在现代应用架构中,微服务已经成为越来越多企业的选择。经过这些步骤,一个完整的Node.js微服务就能在Ubuntu服务器上稳定运行,并具备可维护性和可扩展性。