Egg.js 应用部署到服务器可以分为以下几个步骤:
1. 环境准备
- Node.js(建议 14.x 或更高版本)
- npm 或 yarn
- 生产环境需要 pm2 进程管理
使用 nvm 安装 Node.js curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash source ~/.bashrc nvm install 16 # 安装 Node.js 16 LTS nvm use 16
2. 代码部署
在服务器上克隆代码 git clone your-repo.git cd your-egg-app 安装依赖 npm install --production
将本地打包的代码上传到服务器,然后安装依赖。
3. 生产环境配置
// config/config.prod.js
module.exports = {
// 生产环境配置
keys: 'your-production-secret-key',
// 安全配置
security: {
csrf: {
enable: false, // 根据需求调整
},
},
};设置环境变量 export EGG_SERVER_ENV=production
4. 使用 PM2 部署(推荐)
npm install pm2 -g
// ecosystem.config.js
module.exports = {
apps: [{
name: 'egg-app',
script: 'node',
args: 'dispatch.js',
instances: 'max', // 根据 CPU 核心数设置
exec_mode: 'cluster', // 集群模式
env: {
EGG_SERVER_ENV: 'production',
NODE_ENV: 'production',
},
error_file: './logs/err.log',
out_file: './logs/out.log',
log_file: './logs/combined.log',
time: true,
}],
};使用 PM2 启动 pm2 start ecosystem.config.js 或者直接启动 npm start
5. Nginx 反向代理配置
/etc/nginx/conf.d/egg-app.conf
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:7001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control public;
add_header Pragma public;
add_header Vary Accept-Encoding;
}
}重启 Nginx:
sudo nginx -t sudo systemctl reload nginx
6. 使用 Docker 部署(可选)
FROM node:16-alpine WORKDIR /app 复制 package.json COPY package*.json ./ 安装依赖 RUN npm install --production 复制源码 COPY . . 暴露端口 EXPOSE 7001 启动应用 CMD npm start
构建镜像 docker build -t egg-app . 运行容器 docker run -d -p 7001:7001 --name egg-app egg-app
7. 部署脚本示例
#!/bin/bash deploy.sh echo "开始部署 Egg.js 应用..." 拉取最新代码 git pull origin main 安装依赖 npm install --production 构建(如果有) npm run build 重启应用 pm2 restart egg-app echo "部署完成!"
8. 重要注意事项
查看日志 pm2 logs egg-app 或者查看 Egg.js 日志 tail -f logs/egg-app/common-error.log
PM2 常用命令 pm2 status # 查看状态 pm2 restart egg-app # 重启应用 pm2 stop egg-app # 停止应用 pm2 delete egg-app # 删除应用
// config/config.prod.js
module.exports = {
// 启用集群
cluster: {
listen: {
port: 7001,
hostname: '0.0.0.0',
},
},
// 静态资源配置
static: {
prefix: '/public/',
dir: path.join(appInfo.baseDir, 'app/public'),
dynamic: true,
preload: false,
maxAge: 31536000,
},
};9. SSL 配置(可选)
使用 Let's Encrypt 配置 HTTPS:
安装 certbot sudo apt install certbot python3-certbot-nginx 获取证书 sudo certbot --nginx -d your-domain.com
按照以上步骤,你就可以成功将 Egg.js 应用部署到服务器上了,记得根据实际需求调整配置。
文章摘自:https://idc.huochengrm.cn/fwq/20640.html
评论
荤朝
回复将 Egg.js 应用部署到服务器,需准备 Node.js 环境,通过 Git 或手动上传代码,配置生产环境,使用 PM2 或 Nginx 部署,可选 Docker 化部署,并注意日志管理和性能优化。
盖忆
回复将 Egg.js 应用部署到服务器,需准备服务器环境、部署代码、配置生产环境、使用 PM2 或 Nginx 部署,可选 Docker 部署,并注意日志管理和性能优化。
频日
回复将 Egg.js 应用部署到服务器,需准备 Node.js 环境,使用 Git 或手动上传代码,配置生产环境,使用 PM2 或 Nginx 部署,可选 Docker 部署,并注意日志管理和性能优化。
徭恩霈
回复Egg.js部署到服务器上,首先配置好服务器环境,然后通过npm run build生成静态文件,最后上传到服务器并配置相应的服务器软件如Nginx或Apache。