将“HNG_BOILERPLATE” Express.js 应用的后端部署到生产服务器

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

本文介绍了使用GitHub Actions工作流程将Express.js样板应用的后端部署到EC2 Ubuntu服务器的生产环境。部署过程包括设置依赖项、拉取代码、运行测试、构建后端,并确保其作为服务运行。工作流程包括触发、检出代码、设置Node.js、管理Git远程和本地更改、拉取最新更改、安装依赖项、运行测试、构建后端、设置和重启服务、验证部署。还介绍了服务配置和Nginx配置,以及SSL证书设置和最终步骤。通过遵循以上步骤,可可靠地更新和维护Express.js样板应用的后端,并实现SSL安全访问。

🔎

延伸解读

自托管 Runner 与工作目录的绑定

工作流指定 runs-on: bp_runner,表明使用自托管 Runner,且默认工作目录为 /var/www/aihomework/boilerplate/prod。这意味着部署直接在目标目录进行,而非临时目录。好处是构建产物路径固定,但需注意 Runner 的权限和目录状态,避免因本地未提交更改导致拉取冲突。

依赖安装与测试的保障作用

使用 yarn install --frozen-lockfile 确保依赖版本与 yarn.lock 严格一致,避免因版本漂移引发运行时问题。随后执行 yarn test,在部署前验证后端稳定性。若测试失败,工作流会中止,防止有问题的代码进入生产环境。

服务重启与部署验证机制

部署时复制 systemd 服务文件并重启 aihomeworkprod.service,使最新构建生效。随后等待 10 秒并检查服务是否处于活动状态,若失败则工作流报错。这种验证方式能快速发现启动问题,但仅检查服务状态,不涉及应用层健康检查。

Nginx 反向代理与 SSL 自动化

Nginx 将流量代理到本地 3000 端口,并配置了 SSL 证书。使用 Certbot 命令可自动获取 Let's Encrypt 证书并修改 Nginx 配置,实现 HTTPS。这简化了证书管理,但需确保域名解析正确且 Nginx 配置中的端口与后端服务一致。

❓

Q&A

如何将Express.js应用的后端部署到EC2服务器?

可以通过GitHub Actions工作流程,将代码推送到prod分支,自动执行部署步骤,包括设置依赖、拉取代码、运行测试和构建后端。

部署Express.js后端需要哪些前提条件?

需要EC2 Ubuntu服务器、安装Node.js 20、npm、Nginx、GitHub Actions Runner和Certbot。

如何确保Express.js后端服务在服务器上正常运行?

通过检查服务状态,如果服务处于活动状态,则表示部署成功;否则,需排查问题。

Nginx在Express.js后端部署中起什么作用?

Nginx作为反向代理,将传入流量路由到Express.js后端应用,并配置SSL以支持HTTPS。

如何使用Certbot为Nginx配置SSL证书?

可以使用命令'sudo certbot --nginx -d your-domain.com'来自动获取SSL证书并配置Nginx。

GitHub Actions工作流程是如何触发的?

工作流程在对prod分支进行推送时触发,自动执行后续的部署步骤。

🏷️

标签

➡️

继续阅读