当前位置: 首页 > 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

相关文章:

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. 宝塔部署 准备工作&am…...

MySQL 基础

MySQL 基础 顾名思义,关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。 关系型数据库中&#…...

VR模拟鸡胚培养接种实验,打造沉浸式的学习环境

在医学教育领域,传统的鸡胚接种实验一直是教学的重要组成部分。然而,这种实验方法存在一定的局限性,如操作难度大、成本高、安全隐患等。为了解决这些问题,越来越多的教育机构开始尝试引入虚拟现实(VR)技术,以模拟鸡胚…...

基于ModbusTCP与西门子PLC通讯项目案例

目录 一、西门子PLC仿真环境搭建 【1.1】创建PLC项目 【1.2】编写PLC程序 二、C#代码编写 【2.1】窗口制作 【2.2】效果演示 【2.3】读取源码 【2.4】FrmSiemensSet源码 【2.5】Variable源码 一、西门子PLC仿真环境搭建 【1.1】创建PLC项目 搭建PLCSIM-Advacend模拟仿…...

Oralce数据库管理 -操作系统cpu 内存 io指标分析查询

1 前35个cpu消耗较大的进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head -35 1 前35个内存消耗较大的进程 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head -35...

my_print_defaults 及perror

参考文档: https://mysql.net.cn/doc/refman/8.0/en/my-print-defaults.html https://mysql.net.cn/doc/refman/8.0/en/perror.html -- my.cnf的内容 [rootredhat762100 mysql3306]# more my.cnf [mysqld] datadir/mysql/mysql3306/data #socket/tmp/mysql3306.so…...

视频转GIF:快速生成有趣的动态图片

随着社交媒体的快速发展,GIF动态图片已经成为了人们表达情感、分享生活片段的重要方式。将视频片段转换成GIF动态图片,可以让人们更好地分享和表达自己的情感,也可以让一些有趣的瞬间变得更加生动有趣。本文将介绍如何将视频快速转换成GIF动态…...

vue3 vscode no tsconfig与找不到名称“ref”。ts(2304)

如题,这两个问题都与tsconfig的配置有关,先看下问题表现: 解决方法,应当正确配置如下,之后保存或重启vscode:...

Docker基本操作【一篇学会项目部署】

文章目录 一、Docker简介二、Docker安装三、配置镜像加速四、Docker部署五、Docker基础操作1. 常见命令2. 操作演示3. 数据卷①nginx的html目录挂载②分析匿名数据卷③MySQL的本地目录挂载 4. 自定义镜像①Dockerfile②构建镜像 5. 网络①常见命令②自定义网络 六、DockerCompo…...

目标识别项目实战:基于Yolov7-LPRNet的动态车牌目标识别算法模型(二)

前言 目标识别如今以及迭代了这么多年,普遍受大家认可和欢迎的目标识别框架就是YOLO了。按照官方描述,YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性…...

Ceph入门到精通-sysctl.conf 配置

sysctl.conf Ubuntu server out of box is not optimized to make full use of available hardware. This means “out-of-box” setup might fail under high load. So we need to tweak system configuration for maximum concurrancy. Sysctl Tweaks Open vim /etc/sys…...

Cesium 展示——实体点击的相关属性,进行增删改

文章目录 需求分析1. 实体创建2. 相关属性需求 点击已加载的实体,获取该实体的所有属性,从而对实体进行增删改 分析 1. 实体创建 var viewer = new Cesium.Viewer(cesiumContainer, {terrainProvider: Cesium....

【算法小课堂】二分查找算法

简单思路: 当我们要从一个序列中查找一个元素的时候,最快想到的方法就是顺序查找法(即:从前到后依次查找)。但这种方法过于无脑,就是暴力的把每个元素都排查一遍。元素个数少的时候还行,一旦元…...

git修改提交历史中的author信息

全局设置 git config --global user.name "作者名" 局部设置(本项目) git config user.name "作者名" git修改提交作者和邮箱-CSDN博客 git修改提交作者和邮箱-CSDN博客...

【gitlab】本地项目上传gitlab

需求描述 解决方法 下面的截图是gitlab空项目的描述 上传一个本地项目按其中“Push an existing folder”命令即可。 以renren-fast项目为例 # 用git bash 下载renren-fast项目 git clone https://gitee.com/renrenio/renren-fast.git# 在renren-fast的所属目录 打开git ba…...

freertos信号量之计数信号量

freertos信号量之计数信号量 简介例程 简介 计数信号量(Counting Semaphore)用于管理共享资源的访问。以下是计数信号量的常用函数及其说明: 1)xSemaphoreCreateCounting(unsignedportBASE_TYPE uxMaxCount, unsignedportBASE_T…...

wc命令使用指南 | 教你如何高效统计文件字数、行数和字符数

文章目录 wc命令使用指南1. 引言1.1 什么是wc命令?1.2 wc命令的作用和用途1.3 wc命令的常用参数 2. 基本使用2.1 安装和启动wc命令2.2 统计文件的行数2.3 统计文件的字数2.4 统计文件的字符数2.5 统计文件的词数2.6 统计文件的最长行长度 3. 高级使用3.1 统计多个文…...

网络安全:发起一次CSRF攻击!

一、如何发起一次CSRF攻击 原理:CSRF 的本质实际上是利用了 Cookie 会自动在请求中携带的特性,通过伪造请求来执行恶意操作。 1、目标网站信息: 接口地址:https://victim.com/change-password 请求类型:get/post 接…...

java上传文件到指定服务器

首先要知道服务器的用户名和密码。 注意&#xff1a;一般情况&#xff0c;如果不是强制要求&#xff0c;尽量不要将文件上传到服务器 步骤&#xff1a; 1.导入依赖 <!--图片上传到服务器需要的依赖--> <dependency> <groupId>com.jcr…...

揭秘 Go 中的 new() 和 make() 函数

Go&#xff08;或 Golang&#xff09;是一种现代、静态类型、编译型的编程语言&#xff0c;专为构建可扩展、并发和高效的软件而设计。它提供了各种内置的函数和特性&#xff0c;帮助开发人员编写简洁高效的代码。其中包括 new() 和 make() 函数&#xff0c;这两个函数乍看起来…...

硬件项目规划:从确定性预测到适应性导航的思维重构

1. 项目概述&#xff1a;硬件项目规划的“信心危机”“计划失败就是计划失败”&#xff0c;这个标题乍一看像是一句绕口令&#xff0c;但当你身处一个硬件开发团队&#xff0c;尤其是负责ASIC、FPGA或复杂嵌入式系统时&#xff0c;这句话背后的沉重感会瞬间变得无比真实。我们常…...

微信聊天记录永久备份完整指南:WeChatExporter开源工具终极教程

微信聊天记录永久备份完整指南&#xff1a;WeChatExporter开源工具终极教程 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否担心珍贵的微信聊天记录会因为手机丢失…...

大模型上下文长度对Agent的影响:从4K到1M的质变

目录大模型上下文长度对Agent的影响&#xff1a;从4K到1M的质变引言&#xff1a;工作台革命一、上下文窗口演进史&#xff1a;从4K到1M的百倍跃迁1.1 时间线上的技术里程碑1.2 为什么2025年成为“百万Token元年”&#xff1f;二、长上下文的质变&#xff1a;Agent能力的三重跃迁…...

构建AI智能体技能超市:标准化工作流与多平台适配实践

1. 项目概述&#xff1a;一个面向AI智能体的“技能超市”如果你和我一样&#xff0c;每天都在和Codex、Claude、Cursor这些AI助手打交道&#xff0c;那你肯定也遇到过这样的场景&#xff1a;想让AI帮你生成一份规范的Git提交信息、自动更新文档索引&#xff0c;或者为一个新项目…...

Markdown元数据自动化管理:mdac-filler工具核心功能与实战指南

1. 项目概述&#xff1a;一个为Markdown文档自动填充元数据的工具如果你经常用Markdown写文档、博客或者项目README&#xff0c;肯定遇到过这样的场景&#xff1a;每次新建一个文件&#xff0c;都得手动去文件头部敲一堆“Front Matter”元数据&#xff0c;比如标题、日期、标签…...

Nintendo Switch游戏安装终极指南:3种方法解决所有格式兼容问题

Nintendo Switch游戏安装终极指南&#xff1a;3种方法解决所有格式兼容问题 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Nintendo Switch…...

用Matplotlib heatmap分析你的数据:从农产品收成到商品销量的实战案例拆解

用Matplotlib heatmap解锁业务洞察&#xff1a;从农场到电商的数据可视化实战 热力图&#xff08;heatmap&#xff09;远不止是颜色方块的排列——它是数据与商业决策之间的视觉桥梁。想象一下&#xff0c;你面前有一张农场作物产量的热力图&#xff0c;颜色从深绿渐变到亮黄&a…...

Maya-glTF插件深度解析:现代3D工作流中的glTF 2.0导出技术内幕

Maya-glTF插件深度解析&#xff1a;现代3D工作流中的glTF 2.0导出技术内幕 【免费下载链接】maya-glTF glTF 2.0 exporter for Autodesk Maya 项目地址: https://gitcode.com/gh_mirrors/ma/maya-glTF 在当今3D内容创作领域&#xff0c;Maya作为行业标准工具&#xff0c…...

UWB-IMU、UWB定位对比研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

图解人工智能(11)让人惊讶的AI

人工智能已经融入到我们的生活之中&#xff0c;如便捷的刷脸支付&#xff0c;帮我们扫地的机器人。想一想&#xff0c;你身边还有哪些有趣的人工智能设备&#xff1f;以一种设备为例&#xff0c;搜索它的相关信息&#xff0c;看它为我们的生活带来了哪些便利。开放讨论题&#…...