部署SSM+SpringBoot+SpringCloud至阿里云服务器

环境安装

安装软件一般有三种方式:rpm安装包、解压缩、yum在线安装

jdk安装

jdk我们采用rpm安装包的安装方式

jdk1.8 rpm下载地址(提取码3210)

下载到windows上之后使用Xftp进行传输,放到/home/huangyue文件夹下,即自己的用户目录(或者自己可以随便放)
在这里插入图片描述
linux下进入自己的用户目录

cd /home/huangyue/

检测当前系统是否存在Java环境,如果有则不能进行安装,需要卸载

java -version
-bash: java: command not found

使用以下命令进行卸载

rpm -qa|grep jdk
rpm -e --nodeps [上面语句查出来的信息]

在这里插入图片描述
卸载完毕后,即可安装jdk

rpm -ivh [rpm安装包]

过程如下:
在这里插入图片描述
查看当前java环境

java -version

在这里插入图片描述
可以看到java环境已经成功安装了

简单项目部署

准备项目

我们尝试以下部署一个SpringBoot项目

打开Idea,编写一个简单的SpringBoot程序

在这里插入图片描述
HelloHandler中处理一个请求,并直接返回一个数据

@RestController
public class HelloHandler {
    @RequestMapping("/get/string/message")
    public String getMessage(){
        return "Hello SpringBoot";
    }
}

SpringBootMainType主启动类

@SpringBootApplication
public class SpringBootMainType {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMainType.class, args);
    }
}

现在idea环境运行,看能否启动并运行成功
在这里插入图片描述

打包项目

运行成功,现在将项目进行Maven打包,分别双击clean和package
在这里插入图片描述
打包完成后会在target目录下生成一个jar包
在这里插入图片描述
测试jar包能否运行,使用文件资源管理器打开

在这里插入图片描述
输入以下命令执行

java -jar SpringBootLinux-1.0-SNAPSHOT.jar

在这里插入图片描述
可以发现项目启动成功,并且网页浏览也正常

这时候可以确定jar包是可执行的了

也可以使用cmd命令行进行打包:

mvn clean package -Dmaven.test.skip=true
mvn clean install -Dmaven.test.skip=true

发布项目

将jar包使用Xftp发布到Linux服务器上

开放防火墙端口

如果有防火墙的话,需要开启防火墙的端口,然后在阿里云控制台上加入安全组端口,

开启防火墙端口,因为这里是8080端口,所以将8080端口打开

如果没有防火墙,先进行防火墙的安装(阿里云一般是安装了的)

yum install firewalld systemd -y

下面是防火墙功能的开启关闭指令

  • systemctl status firewalld:查看防火墙状态

关闭状态如下:

在这里插入图片描述
开启状态如下:
在这里插入图片描述

  • systemctl start firewalld:开启防火墙
  • systemctl stop firewalld:关闭防火墙

查看已经开放的端口:

firewall-cmd --list-ports

如果输入为空行,那么当前防火墙没有开启任意端口

开放8080端口,使用如下语句

firewall-cmd --zone=public --add-port=8080/tcp --permanent

在这里插入图片描述
并重载一下防火墙端口

firewall-cmd --reload

开放后继续查看已经开放的端口

在这里插入图片描述
如果不开放指定SpringBoot项目所需要的端口,那么启动jar就会报错,如下图所示:在这里插入图片描述

添加安全组

进入阿里云控制台的ECS实例管理,点击安全组标签,然后点击配置规则

在这里插入图片描述
点击入方向(出方向不用管)、点击手动添加

在这里插入图片描述
设置相应的规则:优先级可以和其他的一样都是100,端口范围是’8080/8080’,授权对象为’0.0.0.0’,描述可自己写,最后点击保存

在这里插入图片描述

启动项目

所有准备工作已做好,可以直接java -jar进行项目启动

java -jar SpringBootLinux.jar

在这里插入图片描述
浏览器访问,注意需要使用公网ip进行访问,我这里的地址为:http://120.77.146.211:8080/get/string/message,可以看到浏览器可以正常输出字符串

上传完毕的项目直接购买自己的域名,备案解析过去即可(可选)

域名解析后,如果端口是80或443的话可以直接访问,如果是其他如8080 8888等,就需要通过Apache或者Nginx做一下反向代理即可,配置一下文件,十分简单,大家如果想要上线一个网站,到目前为止,那么你可以如愿以偿了。

Tomcat安装

Tomcat 9 下载地址:

war包是需要在Tomcat运行的,因此安装Tomcat是有必要的

上传至服务器,使用**tar -zxvf [压缩包路径]**即可

在这里插入图片描述
在这里插入图片描述
启动Tomat测试

进入Tomcat的bin目录

cd /opt/software/apache-tomcat-9.0.43/bin/

执行shartup.sh启动Tomcat(Linux中绿色的文件代表可执行文件)

./startup.sh

在这里插入图片描述
如果防火墙8080开启了,并且阿里云的安全组也开放了,这个时候可以直接远程访问了

http://120.77.146.211:8080/

在这里插入图片描述
关闭Tomcat

/opt/software/apache-tomcat-9.0.43/bin shutdown.sh

在这里插入图片描述

MySQL安装

安装之前先卸载服务器自带的mariadb

查看mariadb是否存在:

rpm -qa|grep mariadb

在这里插入图片描述
可以看到是存在的,因此需要卸载

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

卸载完成后再次查看是否存在mariadb

在这里插入图片描述

rpm安装

链接:https://pan.baidu.com/s/15SO3MaTgVTE6-HiU65QM3w
提取码:1231
复制这段内容后打开百度网盘手机App,操作更方便哦

导入rpm安装包,我这里是按照四个服务,分别是:(必须按照如下顺序安装)

  • mysql-community-common-5.7.14-1.el7.x86_64.rpm
  • mysql-community-libs-5.7.14-1.el7.x86_64.rpm
  • mysql-community-client-5.7.14-1.el7.x86_64.rpm
  • mysql-community-server-5.7.14-1.el7.x86_64.rpm
    在这里插入图片描述
    进入这些文件的目录,进行rpm安装
rpm -ivh mysql-community-common-5.7.14-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.14-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.14-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.14-1.el7.x86_64.rpm

在这里插入图片描述
当安装server服务时,会出现缺少一个libaio,所以我们先进行安装

yum install -y libaio

在这里插入图片描述
出现Complete字样表示安装成功
在这里插入图片描述
继续执行rpm -ivh mysql-community-server-5.7.14-1.el7.x86_64.rpm

server安装完成后查看mysql服务是否启动

service mysqld status

在这里插入图片描述
dead表示未启动,这里我们要启动mysql服务

service mysqld start

在这里插入图片描述
再次查看mysql服务是否启动
在这里插入图片描述
可以看到是active状态,即启动

查看mysql默认密码

grep password /var/log/mysqld.log

在这里插入图片描述
使用此密码登录mysql

mysql -uroot -p

在这里插入图片描述
修改数据库密码

alter user root identified by 'PPss.1234';

在这里插入图片描述
注意:因为mysql5.6以后加入了validate_password密码校验插件,也就是说你的密码必须符合MySQL的默认密码校验机制(密码长度必须大于8位,且密码包含大小写字母,特殊字符和数字),如果不否和校验规则的话,就会报如下错误:
在这里插入图片描述
在正确设置新密码后,我们可以通过改变MySQL的默认密码校验规则,修改密码为简单的密码

  1. 修改校验策略:set global validate_password_policy=0;

  2. 设置密码长度:set global validate_password_length=6;

在这里插入图片描述
这里我修改成了最简单的’123456’,退出后重新登录,输入新密码,成功

授权远程访问

现在的mysql还不具备远程访问的功能,因此需要授权

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

在这里插入图片描述
重启MySQL服务,使配置生效

在这里插入图片描述
开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

并重载一下防火墙端口

firewall-cmd --reload

在这里插入图片描述
添加3306安全组

在这里插入图片描述
这时候就能远程访问MySQL数据库了

在这里插入图片描述

修改字符集

查看字符集

show variables like "%char%";

在这里插入图片描述
修改/etc/my.cnf文件,在[mysqld]下加入一句:‘character-set-server=utf8’

vim /etc/my.cnf

在这里插入图片描述
保存并退出,重启mysql服务,再次登录查看字符集是否更改过来

service mysqld restart
mysql -uroot -p
show variables like "%char%";

在这里插入图片描述
可以看到都是utf8编码了

Redis安装

下载 Redis 的 Linux 压缩包,这里以 Redis 4 为例

下载redis-4.0.8

老规矩,上传至服务器,我这里选择/opt/software目录

进入此目录进行解压

cd /opt/software
tar -zxvf redis-4.0.8.tar .gz

解压完成后vim打开Makefile

vim /opt/software/redis-4.0.8/src/Makefile

修改安装目录,我这里将redis安装目录放到/usr/local/redis中
在这里插入图片描述
进入/opt/software/redis-4.0.8目录,make命令进行编译

cd /opt/software/redis-4.0.8
make

在这里插入图片描述
如果不能进行make编译,则需安装gc++编译器

yum install -y gcc-c++

在这里插入图片描述
此时能执行make了,但仍然报错
在这里插入图片描述
那么执行下面的命令即可

make MALLOC=libc

执行编译完成后如下图所示
在这里插入图片描述
编译完成后进行安装(仍然在redis-4.0.8目录下)

make install

在这里插入图片描述
我们将压缩目录下的配置文件redis.conf复制到安装目录下(复制完后可以自己重命名,这里我就不做了)

cp /opt/software/redis-4.0.8/redis.conf /usr/local/redis

打开复制好的文件,进行相应配置

vim /usr/local/redis/redis.conf

更改以下配置项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入:wq保存并退出

手动创建/var/redis目录,用来存放日志文件

mkdir /var/redis

启动redis,使用我们自己的配置文件来启动redis

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

在这里插入图片描述
查看redis是否启动

ps -ef|grep redis

在这里插入图片描述

项目部署

现在尝试将一个完成的 SSM + SpringBoot + SpringCloud + MySQL + Redis 项目进行打包、部署和访问

基础环境:

远程Linux服务器:阿里云ECS云服务器,2核4GiB

MySQL:5.7.14

Redis:4.0.8

Tomcat:9.0.43

确保上面的环境安装好后,可以在本地进行打包项目了

我们先打包单一架构的SSM项目(因为不涉及跨服务请求,也就是访问请求无需更改,因此直接在idea中进行打包即可。而SpringCloud项目是需要跨微服务的,所以本地访问的请求肯定与服务器访问的请求不一样,并且日后可能在本地还要对代码进行修改,因此idea环境保留,多复制一份项目到其他地方,进行请求的修改)

打开Maven窗口
在这里插入图片描述
先对subwaysearch05-common-util进行单独安装,先执行clean清理,在install安装

在这里插入图片描述
然后对聚合工程的父工程进行clean和package

在这里插入图片描述
可以看到聚合工厂maven会自动以正确的顺序进行打包

打开左侧的对应target目录,即可发现war包已经打好了,可以直接放到Tomcat上启动的

在这里插入图片描述
下面我们对各个SpringBoot微服务进行打包(采用cmd方式)
在这里插入图片描述
因为这些子工程都继承于父工程(subwaysearch07-subway-parent),可以直接对父工程进行打包,当然,各个微服务中需要配置相应的build工具(在pom.xml中),无需打包的就不用配置

<!--Maven构建过程相关配置-->
    <build>
        <!--构建过程中所需要用到的插件-->
        <plugins>
            <!--不能手动进行打包,因为打出的包并不含springboot环境-->
            <!--这个插件将 SpringBoot 应用打包成一个可执行的 jar 包-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

并且父工程的pom.xml必须继承SpringBoot官方的父工程

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
</parent>

准备工作做好了,现在可以对父工程进行打包,进入父工程pom.xml的所在目录,地址栏输入cmd进入命令窗口

在这里插入图片描述
输入如下打包指令,意思是跳过test包,避免执行test中的测试类

mvn clean package -Dmaven.test.skip=true

在这里插入图片描述
编译完成后可到各个微服务目录下的target文件夹看到打好的jar包

在这里插入图片描述
可以将这些jar包和上面的war包一起存放到一个文件夹中,方便上传到Linux服务器(总共6个,这里是7个是因为zuul不想启动了,因为Linux服务器只有4个G,内存不够,只需启动其他5个微服务即可)

在这里插入图片描述
启动ECS实例并登陆,确保mysql、redis都已开启

将上面这些文件上传至Linux中的/opt/packages
在这里插入图片描述
将war包放到Tomcat的webapps目录下,并启动Tomcat

mv /opt/packages/admin-webui.war /opt/software/apache-tomcat-9.0.43/webapps

/opt/software/apache-tomcat-9.0.43/bin/startup.sh

在这里插入图片描述
现在可以访问一下单一架构的项目:

在这里插入图片描述
可以看到是成功的

接下来是启动SpringBoot那些项目,进入这些jar包的目录,java -jar启动SpringBoot

注意:这些SpringBoot的端口必须开启,包括Linux防火墙和阿里云安全组(我这开启的端口有下面这些)
在这里插入图片描述

java -jar subwaysearch08-subway-eureka-1.0-SNAPSHOT.jar

在这里插入图片描述
启动成功的界面

在这里插入图片描述
但是当前SSH窗口被锁定,可按 CTRL + C 打断程序运行,或直接关闭窗口,程序退出

我们可以让窗口不锁定:

java -jar subwaysearch08-subway-eureka-1.0-SNAPSHOT.jar &

&代表在后台运行。虽然当前ssh窗口不被锁定,但是当窗口关闭时,程序仍然中止运行

我们也可以让SSH窗口关闭后,程序仍然运行

nohup java -jar subwaysearch08-subway-eureka-1.0-SNAPSHOT.jar &

在这里插入图片描述

  • jobs:查看所有后台执行的作业,并且每个作业前面都有个编号
  • 如果想将某个作业调回前台控制,只需要 **fg + 作业编号 **即可

一次将所有微服务启动

nohup java -jar subwaysearch10-subway-mysql-provider-1.0-SNAPSHOT.jar &
nohup java -jar subwaysearch11-subway-redis-provider-1.0-SNAPSHOT.jar &
nohup java -jar subwaysearch13-subway-search-consumer-1.0-SNAPSHOT.jar &
nohup java -jar subwaysearch15-subway-member-consumer-1.0-SNAPSHOT.jar &

使用jobs命令查看所有后台启动的进程

在这里插入图片描述
这个时候我们应该是可以外网访问的了
在这里插入图片描述
我们关闭Shell连接后,外网仍然是能访问的

再重新打开XShell连接,发现使用jobs是看不到后台进程的信息的,那么我们如何将这些进程停掉?

可以使用ps命令,定位进程号,使用kill -9 pid进行杀死

ps -ef|grep java
kill -9

在这里插入图片描述
杀死后可以发现刚才那个eureka进程没了
在这里插入图片描述
然后使用1000端口访问,确实是访问不到

我们再重新启动一下eureka微服务

nohup java -jar /opt/packages/subwaysearch08-subway-eureka-1.0-SNAPSHOT.jar &

在这里插入图片描述
再次使用jobs命令是可以查看到后台进程的,并且外网可以访问到

我们查看一下当前Linux服务器的内存占用
在这里插入图片描述
可以看到这些java进程,是十分占用内存的,这也是我不启动zuul微服务的原因,如果启动则会将其他进程杀死,无法正常工作,看到阿里云监控画面,内存使用率已经高达90%,这才启动了5个SpringBoot和1个Tomcat而已
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sadness°

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值