【1-5】云服务器部署上线

1-1 本章概述与服务器购买建议

  • 云服务器配置与购买建议
  • 安装JDK
  • 安装tomcat
  • 安装MariaDB
    使用起来和Mysql一样
    性能要比MySQL好一点
  • 打包SpringBoot
  • 部署第二台tomcat发布前端项目

前置必备

  • 云服务器 或 本地虚拟机
  • Linux系统基础
  • 内网互通

1-3 CentOS7安装JDK

1.新建jdk安装目录

mkdir /usr/java

在这里插入图片描述2.使用FTP工具(fileZilla)上传jdk到某目录,如下:

cd /home/software

在这里插入图片描述3.解压jdk压缩包

tar -zxvf jdk-8u191-linux-x64.tar.gz

解压后的文件夹如下图:
在这里插入图片描述4.把解压后的jdk文件夹移动到/usr/java下,这个目录专门用于存放jdk

mv jdk1.8.0_191/ /usr/java/

在这里插入图片描述5.配置环境变量

  • 修改profile文件
vim /etc/profile
  • 配置jdk环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_191
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar  
export PATH=$PATH:$JAVA_HOME/bin

注:环境变量配置在profile文件的最末尾即可
在这里插入图片描述6.刷新profile,使其生效

source /etc/profile

再次检查jdk
在这里插入图片描述至此,JDK安装成功

1-4 JDK安装 - 安装前自检

购买云服务器后,厂商会提供一个公网IP和内网IP,需要使用SSH工具(SecureCrt、Xshell、Putty)连接到云服务器,随后就能在命令行中操作linux系统。

若在本地虚拟机中操作linux,只需要配置静态IP即可,比如:192.168.168.11

服务器安装JDK之前,先确保有没有默认安装JDK,执行以下命令进行检查:java -version

如果是自己在虚拟机上安装的centos7.x或者centos6.x,则会默认安装好OpenJDK,如下截图
在这里插入图片描述需要卸载,卸载步骤如下:
1.检查系统安装的OpenJDK:

rpm -qa|grep openjdk -i

在这里插入图片描述2.删除以上四项openjdk的安装包并且检查后显示删除完毕

rpm -e --nodeps 需要删除的软件

在这里插入图片描述
如果是在阿里云或者腾讯云上的centos系统,一般不会自带jdk,但是以上步骤还是建议检查下,如若发现自带jdk,建议删除后重新安装。

1-6 安装Tomcat - 部署第一台Tomcat

部署方案

在这里插入图片描述

安装步骤

1…使用FTP工具(fileZilla)上传tomcat到某目录,如下:

cd /home/software

在这里插入图片描述
2.解压tomcat压缩包

tar -zxvf apache-tomcat-9.0.24.tar.gz

解压后的文件夹如下图:
在这里插入图片描述3.重命名tomcat

mv apache-tomcat-9.0.24 tomcat-frontend

在这里插入图片描述4.把重命名后的tomcat文件夹移动到/usr/local

mv tomcat-frontend/ /usr/local/

在这里插入图片描述5.进入/tomcat-frontend/bin目录下,启动tomcat

# 进入bin目录
cd usr/local/tomcat-frontend/bin
# 启动tomcat
./startup.sh

在这里插入图片描述6.验证tomcat是否安装成功(默认端口号8080)
在这里插入图片描述至此,tomcat安装成功

1-7 安装Tomcat - 部署第二台Tomcat与域名配置方案

部署域名方案

  • api.z.mukewang.com --后端服务,restful接口
  • shop.z.mukewang.com --天天吃货门户
  • center.z.mukewang.com --天天吃货用户中心

部署方案

tomcat-1 部署前端项目(后期用nginx代替,nginx可以作为发布前端发布容器)
tomcat-2 部署后端项目
MariaDB 部署数据库

安装步骤

1.解压tomcat压缩包,重命名tomcat,移动tomcat文件夹至/usr/local目录下

# 解压
tar -zxvf apache-tomcat-9.0.24.tar.gz
# 重命名
mv apache-tomcat-9.0.24 tomcat-api
# 重命名
mv tomcat-api/ /usr/local/

在这里插入图片描述

注:/usr/local目录下有2个tomcat,tomcat-frontend是成功启动的,tomcat-api目前还没未启动,但是现在不可以启动tomcat-api,因为tomcat-api的默认端口号也是8080,启动会报端口号重复错误,所以需修改tomcat-api的端口号

2.进入tomcat-api/conf/目录,修改tomcat配置文件

# 进入配置文件目录
cd /usr/local/tomcat-api/conf/
# 修改server.xml: 修改3个端口(访问端口、关闭端口、重定向端口)
vim server.xml

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
3.进入tomcat-api/bin/目录,启动tomcat

# 进入bin目录
cd /usr/local/tomcat-api/bin/
# 启动tomcat
./startup.sh

在这里插入图片描述
4.验证tomcat是否安装成功(配置的端口号8088)
在这里插入图片描述至此,tomcat安装成功

1-8 安全组端口开放

1-9 MariaDB - 跟着官方文档下载rpms

MariaDB主要有三种安装方式

  • 源码安装,有点繁琐,不推荐
  • yum在线安装,由于镜像在国外,下载速度十分缓慢,本地安装花了将近2个小时,而云服务完全就是下载不了直接报错
  • rpm离线安装,这个方式比较方便,推荐,不论是mariaDB还是mysql都可以用这样的方式进行安装

注: window系统本地已安装mysql,再安装mariadb时会自动替换本地的mysql

下载rpm包

1.前往MariaDB官网选择所需环境的 安装包下载地址

在这里插入图片描述在这里插入图片描述在这里插入图片描述2.下载如下7个rpm包,如下所示
依赖:

  • jemalloc-3.6.0-1.el7.x86_64.rpm
  • jemalloc-devel-3.6.0-1.el7.x86_64.rpm
  • galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm

核心包:

1-11 MariaDB - 离线安装

1.使用FTP工具上传安装包至/home/software目录下
在这里插入图片描述2.按顺序安装依赖环境包

yum install rsync nmap lsof perl-DBI nc

rpm -ivh jemalloc-3.6.0-1.el7.x86_64.rpm

rpm -ivh jemalloc-devel-3.6.0-1.el7.x86_64.rpm

在这里插入图片描述在这里插入图片描述3.卸载冲突的mariadb-libs

# 先搜索
rpm -qa | grep mariadb-libs
# 后删除
rpm -ev --nodeps mariadb-libs-5.5.35-3.el7.x86_64

在这里插入图片描述原因:安装MaridDB核心包时报错
在这里插入图片描述4.安装galera环境

rpm -ivh galera-4-26.4.4-1.rhel7.el7.centos.x86_64.rpm

在这里插入图片描述原因:安装MaridDB核心包时报错
在这里插入图片描述5.安装boost-devel依赖环境(此步骤在安装 galera报错时需要)

yum install boost-devel.x86_64

6.安装RPM-GPG-KEY - 导入MariaDB的key

rpm --import http://yum.mariadb.org/RPM-GPG-KEY-MariaDB

在这里插入图片描述7.安装libaio(此步骤在安装10.4.8时需要)

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm

8.安装MaridDB的4个核心包

rpm -ivh MariaDB-common-10.4.24-1.el7.centos.x86_64.rpm MariaDB-compat-10.4.24-1.el7.centos.x86_64.rpm MariaDB-client-10.4.24-1.el7.centos.x86_64.rpm MariaDB-server-10.4.24-1.el7.centos.x86_64.rpm

在这里插入图片描述

1-12 MariaDB - 配置

安全配置

安装完毕MariaDB后还没完,还需要配置数据库,在命令行中执行如下代码用以启动mysql服务(MariaDB就是mysql的分支,所以服务名是一样的,如果本地有mysql可以无缝切换或安装)

service mysql start

# MariaDB代替了mysql数据库
service mariadb start

在这里插入图片描述启动成功后运行如下命令进行安全配置:

mysql_secure_installation

1.输入当前密码,初次安装后是没有密码的,直接回车
2.询问是否使用unix_socket进行身份验证:n
3.为root设置密码:y
4.输入root的新密码:root
5.确认输入root的新密码:root
6.是否移除匿名用户,这个随意,建议删除:y
7.拒绝用户远程登录,这个建议开启:n
8.删除test库,可以保留:n
9.重新加载权限表:y

在这里插入图片描述在这里插入图片描述当你看到Thanks for using MariaDB!这句话,表明配置成功!

远程连接配置

在这里插入图片描述客户端不能远程连接,原因是我们没有赋予权限,执行以下命令:

# 输入密码登录MariaDB控制台
mysql -u root -p 
# 赋予root用户远程连接权限
grant all privileges on *.* to 'root'@'%' identified by 'root密码';
# 刷新
flush privileges;

在这里插入图片描述
配置权限后,可以使用远程客户端连接数据库服务了!

在这里插入图片描述至此,MariaDB安装配置完毕!

注: 建议生产环境上的3306端口改为其他的,比如3307 3308都行,另外只有再远程使用的时候才开放安全组的数据库端口,如果项目和数据库在同一个服务器上,或者在同一个地域可用内网访问的话,关闭端口即可,否则需要开启。

1-13 SpringBoot多环节部署profile

多环境部署

  • 开发环境 – dev
  • 测试环境 – test
  • 生产环境 – prod

profile 提供多环境支持

  • application.yml -> 主配置文件
  • application-{name}.yml -> 环境配置(挂件)
  • 激活多环境 -> spring.profiles.active:{name}

具体配置

1.修改application.yml
在这里插入图片描述2.新增application-dev.yml、application-prod.yml配置文件
在这里插入图片描述在这里插入图片描述

3.启动
dev环境:
在这里插入图片描述prod环境:
在这里插入图片描述

1-14 梳理不同环境的配置

部署域名方案

在这里插入图片描述

profiles 多环境配置梳理:
1. 数据源配置
    1.1 url 根据自身情况去修改为 localhost 或者 内网IP(集群或者分布式系统,一定要使用内网IP)
    1.2 密码 root 改为 你自己的密码
2. mybatis 日志打印
    dev  可以打印
    test 可以打印
    prod 无需打印
3. 图片保存目录 和 图片服务请求路径配置
    /workspaces/images/foodie/faces
    http://api.z.mukewang.com:8088/foodie-dev-api/foodie/faces
4. 从支付中心回调天天吃货后端服务的回调地址
    http://api.z.mukewang.com:8088/foodie-dev-api/orders/notifyMerchantOrderPaid

打包方式:
1. jar
    服务化的概念,后续接触springcloud,所有的服务打包都是以jar的形式存在
2. war
    应用程序的概念,也可以向外提供服务和接口

1-15 SpringBoot打包war

1.修改打包形式
在foodie-dev-api模块的pom.xml设置

<!-- 打包war [1] -->
<packaging>war</packaging>

2.移除嵌入式tomcat插件
在foodie-dev模块的pom.xml找到spring-boot-starter-web依赖节点,修改如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 打包war [2] 移除自带内置tomcat-->
    <exclusions>
        <exclusion>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>

3.添加servlet-api的依赖
在foodie-dev模块的pom.xml添加依赖,下面两种方式都可以,任选其一:

<!-- 打包war [3] 添加依赖 -->
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.1.0</version>
   <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.0.36</version>
    <scope>provided</scope>
</dependency>

4.修改启动类,并重写初始化方法
我们平常用main方法启动的方式,都有一个App的启动类,代码如下:

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

我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:

// 打包war [4] 增加war的启动类
// 启动类 继承 SpringBootServletInitializer 并重写 configure 方法
public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(Application.class);
    }
}

5.打包部署
在项目根目录下(即包含pom.xml的目录),在命令行里输入:
mvn clean package -Dmaven.test.skip=true即可, 等待打包完成,出现[INFO] BUILD SUCCESS即为打包成功。
在这里插入图片描述然后把target目录下的war包放到tomcat的webapps目录下,启动tomcat,即可自动解压部署。
在这里插入图片描述最后在浏览器中输入http://[ip]:[端口号]/[打包项目名]/

参考:
SpringBoot打war包

1-16 上传发布war

1.使用ftp工具上传war包至/usr/local/tomcat-api/webapps目录
2.启动tomcat,即可自动解压部署.
3.浏览器中输入http://[ip]:[端口号]/[打包项目名]/
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

1-17 发布前端项目

1.修改foodie-shop和foodie-center的api.js

serverUrl: "http://192.168.168.11:8088/foodie-dev-api", // 接口服务接口地址  
paymentServerUrl: "http://payment.t.mukewang.com/foodie-payment", // 支付中心服务地址
shopServerUrl: "http://192.168.168.11:8080/foodie-shop/",  // 门户网站地址 
centerServerUrl: "http:///192.168.168.11:8080/foodie-center/",  // 用户中心地址
cookieDomain: "", // cookie 域

在这里插入图片描述2.上传前端项目至Linux服务器/usr/local/tomcat-frontend/webapps目录下
在这里插入图片描述3.启动tomcat-frontend
在这里插入图片描述
4.解决跨域问题
在这里插入图片描述修改foodie-dev的CorsConfig,重新打包更新部署
在这里插入图片描述5.浏览器中输入http://[ip]:[端口号]/[打包项目名]/
在这里插入图片描述在这里插入图片描述

1-18 解决Cookie异常,测试支付订单流程

问题

注册新用户发现如下问题: 注册成功,但是首页没有显示"欢迎,用户名",说明没有该用户的cookie信息
F12发现Cookies里确实没有用户的cookie信息
在这里插入图片描述

排查问题

1.打开FTP工具,找到后端项目tomcat-api的日志目录,下载catalina.out查看日志异常。

前端项目中设置了cookieDomain,需要把信息放到这个域里面,前端才能拿到这个信息,但是现在后端是设置不了的,前端可设置

cookieDomain: ".z.mukewang.com;", // cookie 域

报错原因是:在tomcat 8.5版本之后, CookieProcessor 做了一次更新, 对 .xxx.xx 这种形式的域无法识别

在这里插入图片描述在这里插入图片描述

解决

解决方案一:后端修改 " .xxx.xxx " -> " xxx.xxx"

会导致前后端cookie域不一致,前端还是 “.xxx.xxx”,会让新接触项目的人很迷惑,不知道为什么会出现这种"前后端cookie域不一致" ,当然,实际上是没问题的。推荐方案二

解决方案二:替换CookieProcessor

1.修改usr/local/tomcat-api/conf/目录下的contxet.xml:
标签中添加额外数据
使用老版的LegacyCookieProcessor替代新版的Rfc6265CookieProcessor

# 新版org.apache.tomcat.util.http.Rfc6265CookieProcessor
# 替换为老版处理器org.apache.tomcat.util.http.LegacyCookieProcessor
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor"/>

在这里插入图片描述在这里插入图片描述2.重启tomcat
在这里插入图片描述

注意:我在cookieDomain设置的是IP地址,是没有这个问题的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值