本文档描述了 CRMEB 项目中管理端前端的部署流程,包括构建、部署、配置等环节,旨在规范前端部署流程,确保部署过程的顺利进行和系统的稳定运行。
npm run devhttp://localhost:8080npm run build:testdist/ 目录npm run build:proddist/ 目录server {
listen 80;
server_name admin.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name admin.example.com;
# SSL 配置
ssl_certificate /path/to/ssl/cert.pem;
ssl_certificate_key /path/to/ssl/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
# 静态文件配置
root /path/to/admin/dist;
index index.html;
# 路由重写,解决单页应用刷新 404 问题
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
# 日志配置
access_log /var/log/nginx/admin_access.log;
error_log /var/log/nginx/admin_error.log;
}
<VirtualHost *:80>
ServerName admin.example.com
Redirect permanent / https://admin.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName admin.example.com
# SSL 配置
SSLEngine on
SSLCertificateFile /path/to/ssl/cert.pem
SSLCertificateKeyFile /path/to/ssl/key.pem
# 静态文件配置
DocumentRoot /path/to/admin/dist
<Directory /path/to/admin/dist>
AllowOverride All
Require all granted
</Directory>
# 路由重写,解决单页应用刷新 404 问题
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
# 日志配置
ErrorLog ${APACHE_LOG_DIR}/admin_error.log
CustomLog ${APACHE_LOG_DIR}/admin_access.log combined
</VirtualHost>
# 基础镜像
FROM node:12-alpine as build
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 构建生产版本
RUN npm run build:prod
# 生产镜像
FROM nginx:1.19-alpine
# 复制构建产物
COPY --from=build /app/dist /usr/share/nginx/html
# 复制 Nginx 配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 暴露端口
EXPOSE 80
# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
version: '3'
services:
admin:
build: .
ports:
- "80:80"
restart: always
volumes:
- ./ssl:/etc/nginx/ssl
environment:
- TZ=Asia/Shanghai
# 构建镜像
docker build -t crmeb-admin .
# 运行容器
docker run -d --name crmeb-admin -p 80:80 crmeb-admin
# 使用 Docker Compose
docker-compose up -d
.env.development.env.test.env.production# API 基础地址
VUE_APP_API_BASE_URL=https://api.example.com
# 静态资源 CDN 地址
VUE_APP_CDN_BASE_URL=https://cdn.example.com
# 应用名称
VUE_APP_TITLE=CRMEB 管理后台
# 构建环境
NODE_ENV=production
# 构建版本
VUE_APP_VERSION=1.0.0
git pull origin masternpm installnpm run build:proddist/ 目录复制到服务器.gitlab-ci.yml,实现自动构建和部署.github/workflows/deploy.yml,实现自动构建和部署name: Deploy Admin Frontend
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '12'
- name: Install dependencies
run: npm install
- name: Build project
run: npm run build:prod
- name: Deploy to server
uses: easingthemes/ssh-deploy@v2.1.5
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
ARGS: '-rltgoDzvO --delete'
SOURCE: 'dist/'
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
TARGET: ${{ secrets.REMOTE_TARGET }}
- name: Restart Nginx
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.REMOTE_HOST }}
username: ${{ secrets.REMOTE_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.REMOTE_PORT }}
script: sudo systemctl restart nginx
本文档描述了 CRMEB 项目中管理端前端的部署流程,包括构建、部署、配置等环节,以及相关的最佳实践和常见问题解决方案。
遵循本文档的部署流程和规范,可以确保前端部署的顺利进行和系统的稳定运行,同时提高部署效率和系统安全性。
随着项目的发展和技术的演进,部署流程也需要不断优化和调整,以适应新的业务需求和技术挑战。