当前位置: 首页 > news >正文

JavaWeb项目实际部署流程

前几天从阿里领了一台服务器,记录下服务器从0到运行服务的过程

Vue部署

前端部署主要需要注意下axios请求根地址需要替换,而且我使用Nginx反向代理,所以似乎不需要关注路由模式的问题

import axios from 'axios'
const config = {
    baseURL: "http://localhost:8080",
}
const request = axios.create(config)
export default request
  1. 在项目部署前,先将baseURL更换为服务器的ip
  2. 执行npm run build命令,此时会进行项目的检查和打包,打包完成后会在根目录下产生一个dist文件夹
  3. 将这个文件夹移动到服务器中即可

不过因为这个项目是我拿来练手的项目,导致ts类型报错了…最后通过AI才解决类型的问题(创建对应的.d.ts文件)

docker安装

之前在虚拟机中安装docker的时候,我记得需要先配置阿里云的yum源,然后再进行安装,操作起来好像有点麻烦,所以这次我直接用了宝塔面板

  1. 打开宝塔官网,复制脚本命令,再到服务器上执行
  2. 安装成功后将用户名和密码记住,在浏览器上打开宝塔的端口,输入用户名和密码
  3. 可以以图形化的界面安装一些应用(最近docker好像放开了,直接yum似乎也可以安装了)

Nginx安装

安装完docker后,其他的应用就比较简单了,关于Nginx的部署可以看docker安装Nginx和Nginx无更新的解决方案,
安装完nginx容器后,将之前那个dist文件夹移动到对应目录下,对应目录指的是:要不移动到你挂载的数据卷下,要不直接docker cp dist nginx:/etc/
需要注意的是配置nginx.conf是基于docker里nginx容器那个目录结构的

数据库安装

我使用的是mysql8.0,数据库存储在本地(windows)

  1. 先执行mysqldump -u 用户名 -p 数据库名 > 导出数据库文件名.sql,然后输入密码,导出的数据库大多在你桌面的上一级目录上(C:/user/用户名/)
  2. 将这个文件移动到服务器中
  3. 通过docker安装mysql容器,安装的过程还是十分顺利的
  4. 安装完后,执行docker cp 数据库文件.sql mysql:/将数据库脚本移动到docker容器中
  5. docker exec -it mysql bash进入到mysql容器中,登录mysql,创建一个数据库,use 你新创建的数据库,然后执行source 数据库文件.sql将之前那个导出的数据库数据导入到服务器的mysql中
  6. 执行一个简单的select语句后发现英文正常显示,中文显示?,然后意识到我没指定字符集,不仅是数据库的字符集需要指定,mysql的字符集同样需要指定
  7. 打开/etc/my.conf(docker容器中)
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

修改完成后中文正常显示了
不过我在windows的cmd连接服务器数据库l时发现中文乱码了,似乎是字符集不匹配的原因?,但是Java获取数据的时候中文正常显示,我就没管

部署springboot项目

SpringBoot部署起来确实方便很多,直接Maven执行package就能打包运行了,不过需要注意提前修改访问的地址

  1. 一般application.yaml配置都会分成不同环境创建spring.profiles.active = test能直接切换到不同配置上,或者偷偷懒没创建多个环境配置文件,那就需要手动修改配置文件了,主要是切换不同环境下mysql,es,redis啥的密码,用户名,url等以及需要暴露的端口号
  2. 执行package命令,如果项目没问题的话会在根目录下产生target文件夹,将target文件夹中的xxx.jar移动到服务器中(如果jar包只有几十B看一下是不是没指定主类)
  3. 创建一个dockerfile文件(不需要后缀,文件名指定dockerfile就行)
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY 项目名.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

将项目名替换下,更换到自己的JDK版本,将这个dockerfile移动到服务器中
4. 切换到dockerfile和.jar文件目录下,执行docker build -t 镜像名 .创建自定义镜像,docker run -d --name 容器名 -p 端口映射 容器名运行容器即可
5. 打开阿里云实例,将暴露的端口放开
6. docker ps查看服务运行状态,如果有问题可以docker logs 容器名查看Java服务的异常信息,再进行修改

总结

项目部署起来感觉也不是特别困难,基本上和在虚拟机部署一致(可能只是密码设复杂点…)
对于其他的中间件(redis,es,mq)通过docker也能快速安装,将nginx,java服务,mysql同时运行后,直接打开IP就能访问感觉还是成就感满满捏

相关文章:

  • CPS-J/S冲奖第15天:真题解析
  • Spring Boot集成Spring Statemachine
  • 【C++ STL】 容器详解:pair 学习
  • LabVIEW VI Scripting实现连接器窗格自动化
  • JavaScript性能优化实战:让你的Web应用飞起来
  • Nginx 生产环境安全配置加固
  • Python个人学习笔记(14):函数(匿名函数、内置函数(下)、三元表达式)
  • Banana Pi 与瑞萨电子携手共同推动开源创新:BPI-AI2N
  • java Long[] ids转为List<Long> ids
  • Python常用基础类库总结
  • python-leetcode-压缩字符串
  • c++的stl中有哪几种map容器,都有什么应用场景?
  • 【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
  • C++11语法糖:auto和范围for循环详解
  • 面向联邦学习隐私保护的同态加密库优化算法研究
  • L1-018 大笨钟
  • java IO涉及实现的各个接口
  • AI术语整理(持续更新)
  • go语言中立即调用的匿名函数
  • 【算法day8】 Z 字形变换 -O(n)算法思路整理
  • 广州医药集团有限公司原党委书记、董事长李楚源被“双开”
  • 新城市志|GDP万亿城市,一季度如何挑大梁
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 女外交官郑璇已任中国驻莫桑比克大使