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

Linux 部署项目

部署

  • Linux 部署项目
    • 1. 宝塔部署
      • 1.1 前端部署
      • 1.2 后端部署
    • 2. docker 部署
      • 2.1 后端部署
      • 2.2 前端部署
    • 3. 跨域问题
      • 3.1 Nginx 代理(推荐)
      • 3.2 修改后端服务
      • 3.3 添加 web 全局请求拦截器
    • 4. 域名解析
      • DNSPod
      • 添加域名

Linux 部署项目

1. 宝塔部署

准备工作:

记得打开防火墙端口

查看面板地址,后登录宝塔

/etc/init.d/bt default

1.1 前端部署

  1. 点击网站,选择 php 项目 ,添加站点,输入域名,提交

image-20230117170605962

  1. 复制 dist 文件夹中的文件到根目录下,已有文件就覆盖

image-20230117171015321

1.2 后端部署

  1. 创建项目文件夹,将 jar 包复制进去,复制文件夹和文件名备用

    image-20230117171836399

  2. 点击网站,选择 java 项目,添加 java 项目,输入信息,注意图中化框部分,然后提交

    image-20230117172743587

2. docker 部署

2.1 后端部署

Dockerfile 在后端根目录创建,代码如下

image-20230117193659207

FROM maven:3.5-jdk-8-alpine as builderWORKDIR /app
COPY pom.xml .
COPY src ./src# 用 maven 打包,跳过测试
RUN mvn package -DskipTestsCMD ["java","-jar","/app/target/user-center-0.0.1-SANPSHOT.jar","--spring.profiles.active=prod"]

将整个项目文件上传到服务器上(如 /www/wwwroot/user-center/),在该目录里根据 Dockerfile 构建镜像

FROM maven:3.5-jdk-8-alpine as builderWORKDIR /app
COPY pom.xml .
COPY src ./srcRUN mvn package -DskipTestsCMD ["java","-jar","/app/target/user-center-0.0.1-SANPSHOT.jar","--spring.profiles.active=prod"]
# 没有权限时用 sudo,注意最后的点
sudo docker build -t user-center:v0.0.1 .

创建容器

# 后端 -p [主机] : [容器] 
# -d 后台运行
docker run -p 8088:8088 -d user-center:v0.0.1

2.2 前端部署

创建 docker 目录,里面放 Dockerfile 和 nginx.conf

image-20230117200624152

Dockerfile

FROM nginxWORKDIR /usr/sharenginx/html/
USER rootCOPY ./docker/nginx.conf /etc/nginx/conf.d/default.confCOPY ./dist /usr/share/nginx/html/# 显示写出端口号,并无实际作用
EXPOSE 80CMD ["nginx","-g","daemon off;"]

nginx.conf

server {listen 80;# gzip configgzip on;gzip_min_length 1k;gzip_comp_level 9;gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;gzip_vary on;gzip_disable "MSIE [1-6]\.";root /usr/share/nginx/html;include /etc/nginx/mime.types;location / {try_files $uri /index.html;}}

将整个项目文件上传到服务器上(如 /www/wwwroot/user-center-frontend/),在该目录里根据 Dockerfile 构建镜像

# 没有权限时用 sudo,注意最后的点
sudo docker build -t user-center-front:v0.0.1 .

创建容器

# 后端 -p [主机] : [容器] 
# -d 后台运行
docker run -p 80:80 -d user-center-frontend:v0.0.1

3. 跨域问题

3.1 Nginx 代理(推荐)

# 跨域配置
location ^~ /api/ {proxy_pass http://127.0.0.1:8080/api/;add_header 'Access-Control-Allow-Origin' $http_origin;add_header 'Access-Control-Allow-Credentials' 'true';add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers '*';if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Origin' $http_origin;add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain; charset=utf-8';add_header 'Content-Length' 0;return 204;}
}

3.2 修改后端服务

// 添加注解
@CrossOrigin(origins = "http://43.138.134.226")

image-20230117191503826

3.3 添加 web 全局请求拦截器

@Configuration
public class WebMvcConfg implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {//设置允许跨域的路径registry.addMapping("/**")//设置允许跨域请求的域名//当**Credentials为true时,**Origin不能为星号,需为具体的ip地址【如果接口不带cookie,ip无需设成具体ip】.allowedOrigins("http://localhost:9527", "http://127.0.0.1:9527", "http://127.0.0.1:8082", "http://127.0.0.1:8083")//是否允许证书 不再默认开启.allowCredentials(true)//设置允许的方法.allowedMethods("*")//跨域允许时间.maxAge(3600);}
}

4. 域名解析

DNSPod

可以设置二级域名

image-20230117210134042

添加域名

在宝塔中添加域名,注意要开启 nginx

image-20230117210228178

http://www.lryc.cn/news/185177.html

相关文章:

  • MySQL 基础
  • VR模拟鸡胚培养接种实验,打造沉浸式的学习环境
  • 基于ModbusTCP与西门子PLC通讯项目案例
  • Oralce数据库管理 -操作系统cpu 内存 io指标分析查询
  • my_print_defaults 及perror
  • 视频转GIF:快速生成有趣的动态图片
  • vue3 vscode no tsconfig与找不到名称“ref”。ts(2304)
  • Docker基本操作【一篇学会项目部署】
  • 目标识别项目实战:基于Yolov7-LPRNet的动态车牌目标识别算法模型(二)
  • Ceph入门到精通-sysctl.conf 配置
  • Cesium 展示——实体点击的相关属性,进行增删改
  • 【算法小课堂】二分查找算法
  • git修改提交历史中的author信息
  • 【gitlab】本地项目上传gitlab
  • freertos信号量之计数信号量
  • wc命令使用指南 | 教你如何高效统计文件字数、行数和字符数
  • 网络安全:发起一次CSRF攻击!
  • java上传文件到指定服务器
  • 揭秘 Go 中的 new() 和 make() 函数
  • 【Spring Cloud】深入探索统一网关 Gateway 的搭建,断言工厂,过滤器工厂,全局过滤器以及跨域问题
  • 计算机竞赛 题目:基于卷积神经网络的手写字符识别 - 深度学习
  • 关于flink重新提交任务,重复消费kafka的坑
  • Win11右键恢复Win10老版本
  • ur机械臂30003端口socket通信踩坑(double类型数据怎么解析)
  • 代理IP与Socks5代理的技术奇妙之旅
  • 自动化测试定位不到元素?可能是 frame 在搞鬼
  • uni-app 开发中,监听 input 键盘事件获取不到按下按键值怎么办?
  • 【juc】countdownlatch实现并发网络请求
  • 在供应链管理中,如何做好库存分析?库存分析有哪些监控指标?
  • 黑豹程序员-架构师学习路线图-百科:Database数据库