个人项目-部署手册

news2025/1/20 3:50:29

前言

在这里插入图片描述

一、RDS和ECS购买与配置

https://www.aliyun.com/?spm=5176.12818093.top-nav.dlogo.3be916d0u0Ncp9
在这里插入图片描述

购买RDS(MYSQL)和ECS(规格族:突发性能实例 t6 )的时候尽量选择一个大区=》如:华东(杭州)
配置不需要太高(够自己使用就行了)

二、后端部署(Java)

2.1 安装jdk并配置环境

1 下载jdk

  • 下载压缩包方式一:

1)Oracle jdk地址这里使用jdk8,选择以下压缩包
https://www.oracle.com/br/java/technologies/javase/javase8u211-later-archive-downloads.html
在这里插入图片描述

注:我的网盘
网盘地址:https://pan.baidu.com/s/11KntuYqeUtqA3x_kLUrf6Q?fm=cd1#list/path=%2F
提取码:3876
2)将下载好的压缩包通过XFTP或者其他工具上传到服务器上

  • 下载压缩包方式二:

1)使用以下命令行直接安装
wget https://download.oracle.com/otn/java/jdk/8u341-b10/424b9da4b48848379167015dcc250d8d/jdk-8u341-linux-x64.tar.gz?AuthParam=1668358226_36d27d28e6b4b3def1887d07eb0c596d

2、配置jdk

2.1 重命名压缩包

mv 命令,注意保留原来的格式(后缀名)

在这里插入图片描述

2.2 解压

命令:解压 tar -zxvf
具体到压缩包:tar -zxvf jdk8.tar.gz

在这里插入图片描述

2.3 将解压出来的文件进行重命名

mv
在这里插入图片描述

2.4 配置JDK环境变量

这一步就是我们在电脑上配置自己的环境变量一样

  • 1)进入vim /etc/profile文件

输入i进入编辑状态,在文章的最后加上配置(通用前提是和上面的重命名的方式统一)
加入如下的配置(统一配置,但是重命名的文件要和我上面的一致):
export JAVA_HOME=/root/jdk1.8
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
如下图操作=》
在这里插入图片描述

  • 2)退出并保

在这里插入图片描述

  • 3)配置完成之后一定需要应用才会生效,命令如下

source /etc/profile

  • 4)使用java命令查看JDK版本判断是否安装成功

java -version

2.2、安装nacos并配置

1 下载nacos安装包

  • 1)方式一 可以选择官网直接搜索nacos
  • 2)我的网盘

网盘地址:https://pan.baidu.com/s/1MFuRGiB3MbY2S3xqHv8HFQ?fm=cd1#list/path=%2F
提取码:1x73

2 配置nacos

2.1 在下载好的nacos中解压出来一个新的nacos,然后通过xftp上传

TMD 话不多说直接拖
在这里插入图片描述

注:
如果本地没有还是最好wget 一下,因为国内的github不太稳定(和jdk放一个目录方便管理,然后最好也要重命名),突然想起来下载好像是要钱的,干我们还是都用上传吧【不过流量费是访问ECS产生的流量要钱】
我尽量还是上传吧,万一要收钱就太倒霉了
在这里插入图片描述

安装完成之后如下图:(我是统一放在了root下,也可以放到别的目录)

在这里插入图片描述

2.2 运行nacos

  • 1 cd 到nacos 的bin目录,启动脚本
    在这里插入图片描述

  • 2 使用sh命令启动,sh startup.sh

在这里插入图片描述

  • 3 查看进程是否nacos起来

查看Linux中进程命=》ps -ef | grep java
nacos的进程

在这里插入图片描述


这里直接启动会有一个问题就是,当你在查看时你会发现nacos关掉了。
看两次之后你会发现这个进程关掉了(修改单机)=》
这里的原因是因为nacos是集群的,我们需要把他改成单机的,因为我们自己的小项目没有必要用集群

  • 4 修改nacos的配置为单机

修改单机启动方式(直接在XFTP中编辑),编辑.cmd文件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

再次使用sh startup.sh命令启动脚本

  • 5 我们可以在服务器内部curl一下8848这个端口

curl 127.0.0.1:8848 访问一下就知道起来,ping通就说明起来了

  • 6 上面是内网ping的,然后我们可以使用服务器外网ping一下8848

当我们8848的端口没放开的时候,通过浏览器使用公网ip访问,报找不到服务器,ECS8848对应的端口没放开
解决方案:到阿里云ECS安全组中配置安全组,在入方向放开8848端口,如下
在这里插入图片描述

在这里插入图片描述

  • 6 然后我们是有ECS的外网地址+8848端口+/nacos就可以ping通了

默认账号:nacos/nacos
在这里插入图片描述

===========》至此nacos单机部署搞定

2.3、使用maven打包项目

前言 简单介绍一下maven

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1 maven的相关的配置

1.1 检查所有的父工程是不是都有如下标签

pom

在这里插入图片描述

1.2 在父模块下的每一个子模块中添加如下标签

jar
指的是最下面的模块

在这里插入图片描述

1.3 在最大的父模块添加bulid

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

1.4 对纯业务模块pom文件添加配置,这里针对还有多环境配置

 <profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <profilesActive>dev</profilesActive>
            </properties>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <profilesActive>test</profilesActive>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>pro</id>
            <properties>
                <profilesActive>pro</profilesActive>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 预发环境 -->
            <id>pre</id>
            <properties>
                <profilesActive>pre</profilesActive>
            </properties>
            <build>
                <resources>
                    <resource>
                        <directory>src/main/resources/pre</directory>
                    </resource>
                </resources>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-info</goal>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <nonFilteredFileExtensions>ttf</nonFilteredFileExtensions>
                    <nonFilteredFileExtensions>pdf</nonFilteredFileExtensions>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <configuration>
                            <tasks>
                                <copy todir="../target">
                                    <!-- project.build.directory表示各个模块的target目录 -->
                                    <fileset dir="${project.build.directory}">
                                        <!-- 需要复制的jar包文件名称 -->
                                        <include name="${project.artifactId}-${project.version}.jar"/>
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>fonts/*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <!-- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 -->
                <excludes>
                    <exclude>test/*</exclude>
                    <exclude>pro/*</exclude>
                    <exclude>pro/*</exclude>
                    <exclude>dev/*</exclude>
                    <exclude>fonts/*</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${profilesActive}</directory>
            </resource>
        </resources>
    </build>

注:功能模块不需要加加,如common模块和一些api模块

1.5 maven 配合assembly.xml配置打包

文件的位置
在这里插入图片描述

详细配置内容

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
    <id>distribution</id>
    <formats>
        <format>zip</format>
        <format>tar.gz</format>
    </formats>

    <includeBaseDirectory>true</includeBaseDirectory>
    <files>
        <file>
            <source>${project.build.directory}/${project.artifactId}-${project.version}.jar</source>
            <outputDirectory>./</outputDirectory>
            <destName>starter.jar</destName>
        </file>
    </files>
</assembly>

1.6 本地打包到target文件夹

可以选择根目录直接install打包
在这里插入图片描述

注意:有可能我们在使用maven插件的时候插件爆红,原因是我们使用的spring版本里面的插件没有用,那我们就自己在每个项目中引入一些我们需要使用的maven插件依赖
maven 插件爆红引入对应的依赖

<!--        maven-->
<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-antrun-plugin -->
<dependency>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.7.2</version>
</dependency>

2.4 使用jar包进行部署

  • 1 通过xftp上传jar包
  • 2 使用xshell启动jar java -jar 名称.jar 使用java -jar 命令不能后台启动,我们使用一下通用的命令行同时将日志文件打印到对应的文件夹(注意:先使用 mkdir 命令 ,创建对应的文件夹)
nohup java -jar mylife-gateway-1.0-SNAPSHOT.jar  >/root/myLifePro/myLifeLogs/gateway-nohup.log 2>&1 &

  • 3、使用 ps -aux | grep java 我们可以看一下对应的进程有没启动
  • 4、使用 tail -200f 文件,看一下对应的日志文件=》 方便我们查日志我们在开发的时候最好搞一个日志跟踪号

2.5 配置nacos

  • 配置nacos 略

2.6 以上搞定我们就可以ping一下了

  • curl 命令 这里的端口我们只开放网关的端口,这里也要像nacos中一样去阿里云的安全组开放对应的端口

在这里插入图片描述

三、前端部署

3.1 使用nginx发布前端的静态文件

1 使用命令行,下载nginx

yum install nginx

2 查看版本号看是否安装成功

nginx -v

3 启动nginx

service nginx start

3.2 bulid 前端项目生成dist文件,使用xftp上传到服务器

我们可以使用一个文件夹,专门来放前端的文件
在这里插入图片描述

3.3 配置nginx

1 转发到本地的静态文件

1 etc=》nginx 【etc文件夹下的nginx】
由nginx.conf中可知我们可以在conf.d文件夹中去定义我们的配置,如下是nginx.conf文件
在这里插入图片描述

在这里插入图片描述

2 配置我们的转发地址
配置如下
在这里插入图片描述

详解,和一个小问题


server {
	# 监听80端口
          listen       80;
         # 服务器ip
          server_name  121.196.217.112;
	# 静态资源在服务器中的地址
         location /ebook/{
		alias /root/myLifePro/ebookFront;
		index index.html;
    	}
    }

上面是有问题的,少一个/【原因是对应的文件夹路由不对】,导致403

server {
	# 监听80端口
          listen       80;
         # 服务器ip
          server_name  121.196.217.112;
	# 静态资源在服务器中的地址
         location /ebook/{
		alias /root/myLifePro/ebookFront/;
		index index.html;
    	}
    }

2 配置权限

1 如下无权限
在这里插入图片描述

这里将其修改为user root权限为例【一般我们不这样使用】修改nginx用户–nginx.conf
在这里插入图片描述

参考该博客:
https://zhuanlan.zhihu.com/p/381967653,尽量不要使用root权限

2 配置完毕
配置完毕-重启nginx
nginx -s reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干货分享 | B站SLO由失败转成功,B站SRE做对了什么?

最近几年&#xff0c;Google SRE在国内非常流行。 Google SRE方法论中提出了SLO是SRE实践的核心&#xff0c;SLO为服务可靠性设定了一个目标级别&#xff0c;它是量化线上质量的关键因素&#xff0c;它是用来回答一个服务到底“什么时候叫做挂了”的根本依据&#xff0c;也是可…

Python网络爬虫入门篇

1. 预备知识 学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。 2. Python爬虫基本流程 a. 发送请求 使用http库向目标站点发起请求&#xff0c;即发送一个Request&#xff0c;Request包含&am…

xxl-job 执行成功,但是报“任务结果丢失,标记失败“错误

问题1:使用xxl定时更新数据,发现执行结果是失败的 打开日志查看,发现没报错,结果是200 打开备注,上面写着"结果丢失". 再仔细对比下,发现外面日志列表中的执行时间是00:20:18;而日志记录中的最后时间是00:39:32;也就是说线程还没执行完,就先报结果错误了. 对比日志时…

[附源码]Python计算机毕业设计宠物寄养管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Jmeter压力测试教程(上)

JMeter压力测试一、 简介1.1优点1.2缺点二、安装2.1下载2.2解决中文乱码问题2.5配置环境变量2.4启动入门案例三、线程组相关3.1 创建多个线程组3.2 并发和顺序执行3.3 两个特殊的线程组&#xff08;setUp/tearDown&#xff09;线程细节设置默认http请求新增接口信息头管理器四、…

SAP ADM100-1.2之系统登录过程(ABAP)

1、SAP登录过程 为了在前端最终用户和SAP系统实例之间创建连接,sapgui.exe程序需要启动参数。参数字符串是由saplogon .exe程序使用为登录选择的SAP GUI的信息创建。 SAP登录信息有以下两个来源:SAP Logon的配置文件,以及对所选系统的消息服务器的直接请求(下图中的步骤1和…

使用Go+Lua解决Redis秒杀中库存与超卖问题

1、简介 Go语言连接go-redis进行数据库的连接&#xff0c;如果你对这部分尚不了解&#xff0c;建议你先学习这部分知识。另外&#xff0c;本秒杀主要解决两个问题&#xff0c;第一个就是超卖问题&#xff0c;另一个就是库存问题。没有设计专门的页面来模拟并发&#xff0c;我们…

布谷蓝途:易知微「可视大脑助力智慧教育」主题分享精彩实录

如今&#xff0c;大数据技术在教育领域的应用与普及正驶入“快车道”&#xff0c;但仍然存在资源管理分散、数据各自为阵、运营模式传统等痛点&#xff0c;如何借助新技术、新机遇并充分发挥大数据在教育教学中的支撑作用成为重中之重。 布谷蓝途作为国内前沿的大数据方案与服…

网分测试线缆怎么选?

如何在众多选择中寻找到最佳的测试电缆?以下内容由普科科技PRBTEK整理&#xff0c;以下内容将阐述电缆与电缆组件的机械及电气性能&#xff0c;以及如何选择您理想的测试电缆。 2004年5月&#xff0c;美国时代微波系统公司的测试工程师对50欧姆测试电缆的要求作出以下概述&…

银河麒麟桌面操作系统V10安装过程

文章目录下载镜像导入VMware启动安装下载镜像导入VMware 首先去麒麟生态网站注册登录&#xff0c;找到适合自己版本的操作系统 打开VMware新建虚拟机 把镜像放进来 选择Liunx的ubuntu版本 分配处理器和内核 分配内存 后面的就网络、I/O、硬盘按照默认配置就行 启动安装 …

二叉树的建立和遍历

目录创建二叉树中的引用使用遍历顺序创建二叉树使用先序遍历和中序遍历创建二叉树使用中序和后序创建二叉树中序求二叉树用栈实现非递归遍历先序遍历中序遍历后序遍历用栈通过出栈次数进行遍历中序遍历后序遍历队列进行层次遍历思路代码判断是否是满二叉树和完全二叉树递归非递…

面向开发者的开源低代码开发工具,强烈推荐!

每家公司在发展过程中都需要构建大量的内部系统&#xff0c; 比如运营使用的用户管理后台&#xff0c;销售线索后台&#xff0c;双十一活动后台&#xff0c;圣诞节活动后台等。 许多公司内部也都有专门的研发团队负责开发各种各样的后台和内部工具&#xff0c;大量的公司为此付…

Qt开发-QT Quick

前言 QT Quick和Qt widgets这两种技术&#xff0c;官方是强推QT Quick的。 QT Quick中布局一般有如下四种方式&#xff0c; 绝对坐标&#xff1a;x、y、z、width、height、top、left锚(anchors) 布局定位器&#xff08;Row、Column、Grid、Flow&#xff09;布局管理器&#…

(微信开发)Laya转发H5网页到微信,带图片

网页转发到微信时&#xff0c;带图片和自定义标题。2022年11月22号 关键解说 _wx.config({ debug: _wx_configdebug, appId: e.appId, timestamp: e.timestamp, nonceStr: e.nonceStr, signature: e.signature, jsApiList: [ // 所有要调用的 API 都要加到这个列表中 ‘onMen…

网络威胁情报git【全面】

开源地址如下: https://github.com/fastfire/deepdarkCTI 网络威胁情报 (CTI) 被定义为收集和分析有关威胁和对手的信息以及绘制模式&#xff0c;这些模式提供了针对各种网络攻击的准备、预防和响应行动做出明智决策的能力。 CTI 涉及收集、研究和分析网络威胁领域的趋势和技…

APP测试面试题汇总(基础篇、进阶篇)

一、基础篇 1、请介绍一下&#xff0c;APP测试流程&#xff1f; APP测试流程与web测试流程类似&#xff0c;分为如下七个阶段&#xff1a; 1.根据需求说明书编写测试计划&#xff1b; 2.制定测试方案&#xff0c;主要是测试任务、测试人员和测试时间的分配&#xff1b; 3.…

Elasticsearch GC优化实践

近期业务查询线上ES集群出现频繁超时告警&#xff0c;尤其是早晨某个时间点固定的报一波超时&#xff0c;从调用链监控上很难看出是什么业务行为导致的。 初步猜测 查看Grafana上Elasticsaerch的基础监控&#xff0c;发现业务告警与ES的Old GC&#xff08;老年代GC&#xff0…

功率放大器的参数和应用场景是什么

功率放大器是电子测量行业比较常见的一种电子放大器&#xff0c;主要目的是增加给定输入信号的功率幅度&#xff0c;使输入信号功率增加&#xff0c;从而驱动到发射器等输出设备的负载水平。和电流放大器与电压放大器有所不同的是&#xff0c;功率放大器是直接驱动负载并且最终…

SessionCookie

会话 会话&#xff1a;用户打开浏览器进行的一系列操作直至关闭浏览器的过程看作是一次会话 HTTP协议是无状态的&#xff0c;不能实现跟踪对话。比如进入一个网站&#xff0c;每次操作的请求之间相互独立&#xff0c;无法相互联系。也就是说你每次请求过后得到的服务器响应或…

web前端-javascript-基本语法(注释,常用语法,代码格式)

文章目录基本语法1. JS 注释2. 常用语法3. 代码格式基本语法 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><script type"text/javascript">/** 多行注释*///单行注释alert("hell…