Skip to content

项目部署

https

项目支持 https,需要在 main.ts 中 将 httpsOptions: await loadHttpOptions(isDev)的注释解开,并且在https目录下填入 private-key.pempublic-certificate.pem 文件,ssl证书获取可以去 ssl证书平台获取

如果使用 fastify 分支,需要打开 httpsOptions 的注释

Docker 部署

前提:服务器上需要安装 `docker` 和 `docker-compose`

首先要完善 .env.env.productiondocker-compose.prod.yml 文件

构建部署

bash
cd nest-admin 

# 打包镜像
pnpm run docker:build:prod # 没有 pnpm 也可以用 npm run docker:build:prod

# 启动容器
pnpm run docker:up:prod

其他操作

bash
# 停止容器
pnpm run docker:down

# 停止容器 并且删除 数据卷
pnpm run docker:down:v

以上命令对应 `docker` 命令 只是写到了 `package.json` 中

pm2 方式部署

1、在项目根目录下 编写 ecosystem.config.js

js
const { cpus } = require('node:os')

const cpuLen = cpus().length

module.exports = {
  apps: [
    {
      name: 'nest-admin',
      script: './dist/main.js',
      autorestart: true,
      exec_mode: 'cluster',
      watch: false,
      instances: cpuLen,
      max_memory_restart: '1G',
      args: '',
      env: {
        NODE_ENV: 'production', 
      },
    },
  ],
}

记得把 .env.production 文件里的 host 配置修改了

bash
# 只有使用 `docker` 部署的情况下,才需要配置成 `host.docker.internal`
DB_HOST = 127.0.0.1 

REDIS_HOST = 127.0.0.1

2、运行项目

使用 pm2 在项目根目录执行 pm2 start ecosystem.config.js

pm2 指令

pm2 start ecosystem.config.js // 启动项目

pm2 stop nest-admin // 停止项目

pm2 delete nest-admin // 删除项目

pm2 list // 查看项目列表

pm2 log nest-admin // 查看项目日志

前端部署

Docker 部署

1、配置 baseUrl

配置 .env.prod 文件下的 VITE_SERVICE_BASE_URL(打包环境变量是prod,就会使用.env.prod文件里的配置) 根据实际情况配置

例如:

VITE_SERVICE_BASE_URL=https://xxxxx.com:3000/

这样配置以后,前端请求后端会直接请求https://xxxxx.com:3000/,假设你的后端服务地址是``http://localhost:3000/,后端和前端部署在同一个服务器上,那么连nginx反向代理都不用配置即可连通

2、打包项目

bash
# 打包项目
pnpm run build

3、使用 docker 构建镜像

bash
docker build -t vue3-naive-admin:latest .

3、启动容器

bash
docker run -d -p 80:80 --name vue3-naive-admin

nginx 部署

1、配置 baseUrl

配置 .env.prod 文件下的 VITE_SERVICE_BASE_URL(打包环境变量是prod,就会使用.env.prod文件里的配置) 根据实际情况配置

例如:

VITE_SERVICE_BASE_URL=https://xxxxx.com:3000/

这样配置以后,前端请求后端会直接请求 https://xxxxx.com:3000/, 假设你的后端服务地址是``http://localhost:3000/,后端和前端部署在同一个服务器上,那么连nginx反向代理都不用配置即可连通

2、打包项目

bash
# 打包项目
pnpm run build

3、将打包好的 dist 文件复制到服务器的某个目录下

这个目录,你知道在哪里就ok,nginx 配置里会使用到这个目录

4、配置 nginx

将下面代码复制到 nginx.conf 文件的 http对象下

js
server {
  listen       80; # 监听80端口
  server_name  localhost; 


  location / {
    root   /www/wwwroot/vue3-naive-admin/dist; # 存放 dist 文件的目录 和3步骤呼应
    index  index.html;
    try_files $uri $uri/ /index.html; # history 模式需要使用 try_files 将请求转发到 index.html
  }
}

5、重启 nginx

Publish under the MIT license