• 个人项目-部署手册


    前言

    在这里插入图片描述

    一、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=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    • 1
    • 2
    • 3

    如下图操作=》在这里插入图片描述

    • 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.pluginsgroupId>
                    <artifactId>maven-compiler-pluginartifactId>
                    <version>3.8.1version>
                    <configuration>
                        <source>1.8source>
                        <target>1.8target>
                    configuration>
                plugin>
    
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-source-pluginartifactId>
                    <version>3.2.1version>
                    <configuration>
                        <attach>trueattach>
                    configuration>
                    <executions>
                        <execution>
                            <phase>compilephase>
                            <goals>
                                <goal>jargoal>
                            goals>
                        execution>
                    executions>
                plugin>
    
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    1.4 对纯业务模块pom文件添加配置,这里针对还有多环境配置
     <profiles>
            <profile>
                
                <id>devid>
                <properties>
                    <profilesActive>devprofilesActive>
                properties>
            profile>
            <profile>
                
                <id>testid>
                <properties>
                    <profilesActive>testprofilesActive>
                properties>
            profile>
            <profile>
                
                <id>proid>
                <properties>
                    <profilesActive>proprofilesActive>
                properties>
                <activation>
                    <activeByDefault>trueactiveByDefault>
                activation>
            profile>
            <profile>
                
                <id>preid>
                <properties>
                    <profilesActive>preprofilesActive>
                properties>
                <build>
                    <resources>
                        <resource>
                            <directory>src/main/resources/predirectory>
                        resource>
                    resources>
                build>
            profile>
        profiles>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>build-infogoal>
                                <goal>repackagegoal>
                            goals>
                        execution>
                    executions>
                    <configuration>
                        <fork>truefork>
                    configuration>
                plugin>
    
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-assembly-pluginartifactId>
                    <configuration>
                        <appendAssemblyId>falseappendAssemblyId>
                        <descriptors>
                            <descriptor>src/main/assembly/assembly.xmldescriptor>
                        descriptors>
                    configuration>
                    <executions>
                        <execution>
                            <id>make-assemblyid>
                            <phase>packagephase>
                            <goals>
                                <goal>singlegoal>
                            goals>
                        execution>
                    executions>
                plugin>
    
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-resources-pluginartifactId>
                    <version>2.6version>
                    <configuration>
                        <encoding>UTF-8encoding>
                        <nonFilteredFileExtensions>ttfnonFilteredFileExtensions>
                        <nonFilteredFileExtensions>pdfnonFilteredFileExtensions>
                    configuration>
                plugin>
    
                <plugin>
                    <artifactId>maven-antrun-pluginartifactId>
                    <executions>
                        <execution>
                            <id>copyid>
                            <phase>packagephase>
                            <configuration>
                                <tasks>
                                    <copy todir="../target">
                                        
                                        <fileset dir="${project.build.directory}">
                                            
                                            <include name="${project.artifactId}-${project.version}.jar"/>
                                        fileset>
                                    copy>
                                tasks>
                            configuration>
                            <goals>
                                <goal>rungoal>
                            goals>
                        execution>
                    executions>
                plugin>
            plugins>
    
            <resources>
                <resource>
                    <directory>src/main/javadirectory>
                    <includes>
                        <include>**/*.xmlinclude>
                    includes>
                    <filtering>falsefiltering>
                resource>
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <includes>
                        <include>**/*.ymlinclude>
                    includes>
                    <filtering>falsefiltering>
                resource>
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <filtering>falsefiltering>
                    <includes>
                        <include>fonts/*include>
                    includes>
                resource>
                <resource>
                    <directory>src/main/resourcesdirectory>
                    <filtering>truefiltering>
                    
                    <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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154

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

    1.5 maven 配合assembly.xml配置打包

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

    详细配置内容

    
    <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>distributionid>
        <formats>
            <format>zipformat>
            <format>tar.gzformat>
        formats>
    
        <includeBaseDirectory>trueincludeBaseDirectory>
        <files>
            <file>
                <source>${project.build.directory}/${project.artifactId}-${project.version}.jarsource>
                <outputDirectory>./outputDirectory>
                <destName>starter.jardestName>
            file>
        files>
    assembly>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    1.6 本地打包到target文件夹

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

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

    
    <dependency>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-assembly-pluginartifactId>
      <version>3.0.0version>
    dependency>
    
    <dependency>
      <groupId>org.apache.maven.pluginsgroupId>
      <artifactId>maven-antrun-pluginartifactId>
      <version>1.8version>
    dependency>
    
    <dependency>
      <groupId>org.springframework.bootgroupId>
      <artifactId>spring-boot-maven-pluginartifactId>
      <version>2.7.2version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    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 &
    
    
    • 1
    • 2
    • 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;
        	}
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    server {
    	# 监听80端口
              listen       80;
             # 服务器ip
              server_name  121.196.217.112;
    	# 静态资源在服务器中的地址
             location /ebook/{
    		alias /root/myLifePro/ebookFront/;
    		index index.html;
        	}
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    2 配置权限

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

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

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

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

  • 相关阅读:
    统一监听Vue组件报错
    【我不熟悉的css】07. css命名,bem规范,跟着组件库element-ui学习组件命名
    【Nacos】源码之服务端服务注册
    tarfile.ReadError: not a gzip file
    软考高级系统架构设计师系列论文真题四:论高可靠性系统中软件容错技术的应用
    在 Linux 中查找文件的 4 种方式
    MySQL-解析客户端SQL执行字符集参数设置
    jquery datatable固定列
    前端使用 Konva 实现可视化设计器(5)- 磁贴效果
    外包干了3个多月,技术退步明显。。。。。
  • 原文地址:https://blog.csdn.net/weixin_46643875/article/details/127989901