从零开始也能搞定部署
你有没有过这种经历:写好了代码,测试也跑通了,结果一到上线就卡壳?服务器环境不对、依赖装不上、端口冲突……一个个问题接踵而来。其实,只要掌握几个关键方法,快速部署服务器应用并不难。
比如小李是公司新来的开发,负责把一个 Node.js 项目部署到测试服务器。以前他花了一整天才配好环境,这次他用了自动化脚本,20 分钟就完成了整个流程。
用 Docker 简化环境依赖
Docker 是解决“在我机器上能跑”的神器。把应用和运行环境打包成镜像,不管目标服务器是什么系统,都能一致运行。
FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]写好 Dockerfile 后,构建镜像并运行:
docker build -t myapp .
docker run -d -p 3000:3000 myapp借助 CI/CD 实现一键发布
GitHub Actions 或 GitLab CI 可以在你提交代码后自动完成测试、构建和部署。比如在 GitHub 中配置 workflow 文件:
name: Deploy
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to Server
run: |
ssh user@server 'cd /var/www/app && git pull && npm install && pm2 restart app'
env:
SSH_KEY: ${{ secrets.SSH_KEY }}这样每次更新代码,服务器就会自动拉取最新版本并重启服务。
使用 PM2 管理 Node 应用
Node.js 应用容易因异常退出而中断。PM2 能让它常驻后台,还能自动重启。
npm install -g pm2
pm2 start app.js --name "my-web-app"
pm2 startup
pm2 save下次服务器重启时,应用也会跟着启动,不用手动干预。
Ansible 快速配置多台服务器
如果你要管理多台服务器,手动操作效率太低。Ansible 用简单的 YAML 文件定义部署流程,一条命令就能批量执行。
- hosts: webservers
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
- name: Copy config file
copy:
src: ./nginx.conf
dest: /etc/nginx/nginx.conf
notify: Restart Nginx
handlers:
- name: Restart Nginx
service:
name: nginx
state: restarted写好 playbook 后,运行 ansible-playbook deploy.yml 就能自动完成所有配置。
快速部署不是一步到位的事,但通过容器化、自动化工具和进程管理,完全可以把原本几个小时的工作压缩到几分钟内完成。关键是选对工具,并把重复动作固化下来。