您的位置:首页 >Node.js 在 Linux 上如何实现自动化部署
发布于2026-08-06 阅读(0)
扫一扫,手机访问
在 Linux 上玩 Node.js 自动化部署,其实路子挺多。搭配好工具,整个流程可以变得非常丝滑。先聊几个关键选择,再具体看怎么落地。

持续集成和持续部署(CI/CD)工具的核心价值,就是把"构建-测试-部署"这一整套动作串成流水线,代码一推,剩下的交给机器。常用的有 Jenkins、GitLab CI、Tra vis CI、CircleCI 等。这里以 GitLab CI 为例,操作起来很直观。
第一步,要有一个 .gitlab-ci.yml 文件:
image: node:latest
stages:
- build
- deploy
variables:
NODE_ENV: production
before_script:
- npm install
- npm run build
build:
stage: build
script:
- echo "Building the project..."
- npm run build
deploy:
stage: deploy
script:
- echo "Deploying to server..."
- ssh -o StrictHostKeyChecking=no $DEPLOY_USER@$DEPLOY_SERVER "bash -s" < deploy_script.sh
only:
- master
第二步,配套一个 deploy_script.sh 部署脚本:
#!/bin/bash
cd /path/to/your/node/app
git pull origin master
npm install
pm2 restart your-app-name
第三步,别忘了配置 SSH 密钥。 这一步是安全基础,确保 GitLab Runner 能通过 SSH 无缝访问你的服务器,不然整个自动化流程会卡在权限问题上。
PM2 是 Node.js 圈里最常用的进程管理器,监控、负载均衡、自动重启样样在行。而 Supervisor 则是一个更通用的进程管理工具,两者搭配,可以做到"应用挂了自动拉起来,系统重启了也会自动启动服务"。
安装 PM2(全局安装):
npm install pm2 -g
创建 ecosystem.config.js 配置文件:
module.exports = {
apps: [{
name: 'your-app-name',
script: './app.js',
instances: 'max',
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
};
配置 Supervisor 的 conf 文件(/etc/supervisor/conf.d/your-app.conf):
[program:your-app-name]
command=pm2 start ecosystem.config.js --env production
autostart=true
autorestart=true
stderr_logfile=/var/log/your-app-name.err.log
stdout_logfile=/var/log/your-app-name.out.log
最后,让 Supervisor 重新加载配置,并启动应用:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start your-app-name
这样一来,PM2 负责应用层面的管理和重启策略,Supervisor 负责系统级的监控和自动启动,两层防护,稳如磐石。
Docker 最大的好处是环境一致性——开发环境、测试环境、生产环境都用同一个镜像,再也不会有"我在本地跑得好好的"这种尴尬。对于 Node.js 应用来说,Docker 化部署非常简洁。
先写一个 Dockerfile:
FROM node:latest
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
构建镜像:
docker build -t your-app-name .
运行容器:
docker run -p 3000:3000 your-app-name
如果项目用了多个服务(比如 Node.js 应用 + 数据库),用 Docker Compose 会更方便:
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
environment:
NODE_ENV: production
然后执行 docker-compose up -d,后台运行,干净利落。
Ansible 是另一类自动化工具,它更偏向于"配置管理"和"编排部署"。它的优势在于无需在目标服务器上安装 Agent,通过 SSH 直接执行任务,非常适合批量管理多台服务器。
安装 Ansible:
sudo apt update
sudo apt install ansible
编写一个 Playbook(比如 playbook.yml):
---
- name: Deploy Node.js application
hosts: your_server
become: yes
tasks:
- name: Pull latest code
git:
repo: 'https://github.com/your-repo/your-app.git'
dest: '/path/to/your/node/app'
version: master
- name: Install dependencies
shell: npm install
args:
chdir: '/path/to/your/node/app'
- name: Build the project
shell: npm run build
args:
chdir: '/path/to/your/node/app'
- name: Restart PM2 process
shell: pm2 restart your-app-name
args:
chdir: '/path/to/your/node/app'
执行 Playbook:
ansible-playbook -i inventory_file playbook.yml
Ansible 的好处是 Playbook 可读性强,任务编排清晰,而且可以重复执行,出错也能快速定位问题。
以上这几种方法,没有绝对的优劣,更多是看项目规模和团队习惯。小项目或者个人实验,用 PM2 + Supervisor 或者 Docker 就能搞定;多人协作的团队,用 CI/CD 工具配合 Ansible 或 Docker Compose 会更高效。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8