云效+小皮(nginx) vue项目部署(保姆级)

云效+小皮(nginx) vue项目部署(保姆级)


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

nginx的部署是热部署,只需要替换文件即可实现部署,因此相比较后端就简单了许多。


一、云效

新建流水线

在这里插入图片描述

选用下图的模板即可在这里插入图片描述

先选择要拉取的仓库以及分支,根据自己的情况选择不同的仓库地址
在这里插入图片描述
删除不需要的环节,主要使用的环节采用下图的即可,如果需要配置测试的话,可以自行配置,此处不进行讲解
在这里插入图片描述

nodejs的配置

主要需要进行修改的就是nodejs的版本以及node运行的代码
在这里插入图片描述
云效的nodejs初始化自带npm,cnpm和yarn,其他的包管理工具需要自行下载,上图所示我需要使用pnpm因此是自行下载,然后使用pnpm进行打包,
注:如果文件nodejs的打包太大的话,会出现内存溢出的现象,设置NODE_OPTIONS=–max-old-space-size=16384,如果还是内存溢出,推荐放弃使用流水线部署。

构建物上传,如果打包之后构建物不在根目录下,需要先cd进入到对应的目录内,因为是vue项目,打包之后一般都是dist文件夹,所以选择dist文件即可,因为我希望后面的包可以顶掉前面的包,我的包名称就采用了固定的名字,这样liunx的命令书写就简单了很多。
在这里插入图片描述

主机部署

选择制品名称的话,选择前面已经打包好的文件
在这里插入图片描述

主机组的配置

第一次部署的话,是没有主机组的,因此,需要先新建一个主机组
点击新建主机组回调转到对应的主机组页面
在这里插入图片描述
如无特殊需求,只修改名称让自己可以找到即可
在这里插入图片描述
新建新的主机
这个地方应该是支持,同时发布到多台服务器上,但是因为我这个地方就只有一台服务器,因此每个主机组内绑定一台主机即可
在这里插入图片描述
因为小皮是部署在自己的服务器上的,因此复制下面的文字,然后粘贴到自己小皮或者nginx所在的服务器上,直接运行即可,他会自己进行下载东西,等到运行完成之后,刷新之后,就可以看淡多出来一台主机
在这里插入图片描述
回到云效,即可选择刚才创建的主机组

下载路径(小皮)

路径为下方圈出的网站目录拼接上dist.tgz
在这里插入图片描述
以上图的网站目录为例,因为路径为/www/admin/localhost_82/wwwroot并且前面设置的打包文件名为dist
因此这个地方就可以填写 /www/admin/localhost_82/wwwroot/dist.tgz

下载路径(nginx)

一般nginx的文件都是放在nginx下的html文件夹下,自己根据自己的情况把上面的/www/admin/localhost_82/wwwroot路径替换到html路径下即可

部署脚本

因为上面的路径为/www/admin/localhost_82/wwwroot因此需要先进入到对应的文件夹,然后,删除dist.tgz外的其他文件,直接解压即可部署完成

cd   /www/admin/localhost_82/wwwroot
find . -mindepth 1 ! -name 'dist.tgz' -exec rm -rf {} \;
tar -xzf dist.tgz

而后直接运行即可

<think>嗯,用户想设计一个基于Spring Boot后端、Vue3前端、MySQL数据库和ElementPlus组件库的酒店管理系统。他们需要完整的教程或示例项目。首先,我需要分析他们可能的需求和现有资源。 用户提到的引用中,有几个相关的项目,比如vue3-admin和Spring Boot 3与Vue 3的集成教程。还有关于联选择器的数据库设计。这些可以作为参考,整合到酒店管理系统中。 首先,系统架构应该分前后端。后端用Spring Boot处理业务逻辑和数据访问,前端用Vue3和ElementPlus构建界面,数据库用MySQL存储数据。需要确定系统的模块,比如房间管理、订单管理、客户管理等。 接下来是数据库设计。用户提到的childtag表结构可能适用于标签管理,但酒店系统可能需要不同的表,比如房间类型、订单、客户信息等。需要设计符合酒店业务的表结构,比如room表、order表、customer表等,并考虑主键、外键关系。 然后,后端开发部分。使用Spring Initializr创建项目,添加依赖如Spring Web、JPA、MySQL Driver。配置数据库连接,创建实体类,使用JPA注解映射到数据库表。编写Repository接口,利用JPA的CRUD方法。然后创建Service层处理业务逻辑,Controller层提供RESTful API给前端调用。例如,RoomController处理房间的增删改查。 前端开发方面,使用Vue CLI创建项目,安装ElementPlus、Vue Router、Axios等。页面结构可以分路由,比如房间管理、订单管理页面。使用ElementPlus的表格、表单组件展示数据,通过Axios调用后端API获取和提交数据。例如,在RoomManagement.vue中,使用el-table展示房间列表,el-form添加新房间。 权限管理和安全也是需要考虑的,比如用户登录和权限控制,可以使用Spring Security或JWT。但用户没有特别提到,可能暂时不需要深入,但可以建议作为扩展功能。 部署方面,需要打包后端为JAR,前端为静态文件,配置Nginx反向代理,部署到服务器。不过用户可能更关注开发阶段,部署可以作为后续步骤。 用户提供的引用中有示例项目,可以推荐他们参考vue3-admin和提到的书籍,这些资源提供了Spring Boot和Vue3的集成方法,保姆教程,适合学习。同时,引用4中的联选择器设计可能在酒店系统的分类管理中用到,比如房间类型层。 可能用户需要具体的代码示例,比如如何创建实体类、Repository、Controller,以及前端如何调用API。需要给出步骤和代码片段,确保他们能够按照步骤搭建项目。此外,数据库的建表语句也是关键,比如房间表的结构。 还需要考虑前后端的数据交互格式,比如使用JSON,确保接口符合REST规范。前端如何处理响应数据,错误处理等。例如,使用Axios拦截器处理全局错误。 最后,生成相关问题,帮助用户深入理解,比如如何优化性能,如何处理分页,如何实现权限控制等。这些扩展问题可以引导用户进一步学习。</think>### 基于Spring Boot + Vue 3的酒店管理系统构建指南 #### 一、系统架构设计 1. **技术栈选择** - 后端:Spring Boot 3 + MyBatis-Plus + MySQL - 前端:Vue 3 + Element Plus + Axios - 数据库:MySQL 8.0+ - 开发工具:IntelliJ IDEA + VS Code 2. **模块划分** ```mermaid graph TD A[酒店管理系统] --> B[房间管理] A --> C[订单管理] A --> D[客户管理] A --> E[权限管理] ``` #### 二、数据库设计(示例) ```sql -- 房间表 CREATE TABLE `room` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `room_number` VARCHAR(20) NOT NULL, `type` VARCHAR(50) COMMENT '房型', `price` DECIMAL(10,2) NOT NULL, `status` TINYINT DEFAULT 0 COMMENT '0-空闲 1-已入住', PRIMARY KEY (`id`) ); -- 订单表 CREATE TABLE `order` ( `id` BIGINT NOT NULL AUTO_INCREMENT, `room_id` BIGINT NOT NULL, `customer_name` VARCHAR(100), `check_in` DATETIME, `check_out` DATETIME, PRIMARY KEY (`id`) ); ``` #### 三、后端实现(Spring Boot) 1. **项目初始化** - 通过[start.spring.io](https://start.spring.io/)创建项目,选择依赖: ```groovy dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.baomidou:mybatis-plus-boot-starter:3.5.3.1' implementation 'mysql:mysql-connector-java' } ``` 2. **实体类映射** ```java @Data @TableName("room") public class Room { @TableId(type = IdType.AUTO) private Long id; private String roomNumber; private String type; private BigDecimal price; private Integer status; } ``` 3. **数据访问层** ```java public interface RoomMapper extends BaseMapper<Room> { @Select("SELECT * FROM room WHERE status = #{status}") List<Room> selectByStatus(@Param("status") Integer status); } ``` 4. **RESTful API示例** ```java @RestController @RequestMapping("/api/rooms") public class RoomController { @Autowired private RoomMapper roomMapper; @GetMapping public List<Room> listRooms() { return roomMapper.selectList(null); } } ``` #### 四、前端实现(Vue 3 + Element Plus) 1. **项目初始化** ```bash npm create vue@latest npm install element-plus axios ``` 2. **房间管理组件示例** ```vue <template> <el-table :data="rooms" style="width: 100%"> <el-table-column prop="roomNumber" label="房号"/> <el-table-column prop="type" label="房型"/> <el-table-column prop="price" label="价格"/> </el-table> </template> <script setup> import { ref, onMounted } from 'vue' import axios from 'axios' const rooms = ref([]) onMounted(async () => { const response = await axios.get('http://localhost:8080/api/rooms') rooms.value = response.data }) </script> ``` #### 五、部署建议 1. 后端打包为JAR文件:`mvn clean package` 2. 前端构建静态文件:`npm run build` 3. 使用Nginx配置反向代理[^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值