Vue 项目部署到nginx服务器脚本

本文介绍了一个Vue项目结合Element UI的自动化部署流程,包括使用npm脚本进行不同环境的打包,通过Shell脚本实现一键部署至服务器,以及同步至测试和正式环境的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue 项目,作为web开发新秀,深得大家的喜欢,对于Android开发者兼做web 项目来说,着实是一个很好的框架,

项目框架

Vue + element

Vue 项目打包

再package.json中配置打包项目

"scripts": {
// dev 本地环境运行 npm run dev
    "dev": "vue-cli-service serve",
    // 正式环境 npm run build:prod
    "build:prod": "vue-cli-service build",
    // 测试环境: npm run build:stage
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src",
    "test:unit": "vue-cli-service test:unit",
    "test:ci": "npm run lint && npm run test:unit",
    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
    "new": "plop"
  },

好了, 配置好之后,进行打包,需要发布到服务器,服务器需要两个环境,即正式和测试

当然,再Android开发中发布版本这种简单的操作,是不需要考虑其他操作的,当公司内部需要大家临时下载时:

  • 放到蒲公英、fir.com
  • 放到内网
  • 其他

并且为了减少自己的工作量,直接搭建jenkins,一键打包,上传蒲公英等平台,还可以邮件通知相关人员,钉钉通知、各种通知,哈哈,本着我Aandroid的开发态度,我希望部署到jenkins,然而,对于F5就可以查看成果的前端来说,我更希望,再项目工程中一件发布, 搞啥呀,来个shell脚本 ,一脚搞定,这也是我web同事希望的

请看脚本

#!/bin/sh
echo "初始化环境..."
if [ ! -d "/dist/" ]; then
  echo "正在清理上次构建结果..."
#  rm -rf dist/
  echo "清理完毕"
  fi
echo "\n"
echo "请选择部署环境 1: dev 2: production"
read -t 30 -p "请选择部署环境(dev,)": environment
echo  "\n"
name="正式环境"
ip="ip"
if [ $environment == 1 ]; then
  name="测试环境"
  ip="ip"
fi
echo "正在构建...$name"
case $environment in
  "1")
  npm run build:stage
  echo "构建完毕, 准备同步到服务器.."
  scp -r ./dist op@ip:~/crm/
  ;;
  "2")
  npm run build:prod
  echo "构建完毕, 准备同步到服务器.."
  scp -r dist op@ip:~/crm
  ;;
esac
echo "同步完成"
echo "登录服务器..."
if [ $environment == 1 ]; then
  echo "测试环境---》"
 sshName=op@$ip
echo "$sshName"
ssh op@$ip << remotessh
sudo -S rm -rf /var/www/html/ominichannelcrm/dist <<PASS
密码
PASS
sudo -S mv crm/dist /var/www/html/ominichannelcrm/ <<PASS
echo "密码"
PASS
remotessh
else
   sshName=op@$ip
echo "$sshName"
ssh op@$ip << remotessh
sudo -S rm -rf /var/www/html/ominichannelcrm/dist <<PASS
密码
PASS
sudo -S mv crm/dist /var/www/html/ominichannelcrm/ <<PASS
echo "密码"
PASS
remotessh
fi


echo "部署完成"

好了,这就一件完成了,使用的时候需要注意上述的几个路径,这能看懂啊

### 使用 Docker 部署 Vue 项目至云服务器 #### 准备工作 为了成功部署 Vue 项目,需先完成前端项目的构建。确保本地环境中已安装 Node.js 和 npm/yarn 工具链。 ```bash npm install npm run build ``` 这会生成 `dist` 文件夹,其中包含了用于生产环境的静态资源文件[^4]。 #### 创建 `.dockerignore` 文件 在项目根目录下创建 `.dockerignore` 文件来排除不必要的文件和目录: ```plaintext **/node_modules **/dist ``` 此举有助于减少最终镜像体积并加快构建速度[^2]。 #### 编写 Dockerfile 在同一路径建立名为 `Dockerfile` 的文本文件,内容如下所示: ```dockerfile # 使用官方 Nginx 镜像作为基础镜像 FROM nginx:latest # 维护者信息 (可选) MAINTAINER your_name <your_email@example.com> # 移除默认配置文件 RUN rm /etc/nginx/conf.d/default.conf # 将自定义 NGINX 配置添加进去 ADD ./default.conf /etc/nginx/conf.d/ # 复制打包后的应用到容器内的指定位置 COPY ./dist /usr/share/nginx/html/ ``` 此脚本指定了基于 Nginx 构建的基础镜像,并设置了 Web 应用程序的服务入口点[^3]。 #### 自定义 NGINX 配置 (`default.conf`) 还需准备一份适合单页应用程序(SPA)模式运行的 NGINX 配置文件 `default.conf`: ```nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; # 支持路由历史模式 } error_page 500 502 503 504 /50x.html; } ``` 这段配置使得任何未匹配的实际文件请求都会被重定向回首页,从而允许客户端侧路由正常运作。 #### 构建与推送镜像 现在可以利用上述材料,在命令行终端执行以下指令来进行镜像制作: ```bash cd path_to_your_vue_project docker build -t vue-app-name . docker tag vue-app-name registry_url/vue-app-name:v1.0.0 docker push registry_url/vue-app-name:v1.0.0 ``` 这里假设已经登录到了私有的或公共的 Docker Registry 中。 #### 运行容器实例 最后一步是在目标云服务器上拉取最新版本的应用镜像并启动它: ```bash docker pull registry_url/vue-app-name:v1.0.0 docker run -d --name vue-app-container \ -p host_port:container_port \ registry_url/vue-app-name:v1.0.0 ``` 替换掉占位符变量以适应实际情况,比如主机开放给外部访问的具体端口等参数设置。 通过以上步骤即可顺利完成从开发机向云端迁移的过程,使用户能够通过公网 IP 地址加上映射好的端口号直接浏览在线版网站界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值