在ECS上部署项目

  • 尚筹网的后台管理系统和前台会员系统的部署,以及完结总结
  • 后台管理系统:SSM单一结构
  • 前台会员系统:分布式架构SpringBoot+SpringCloud

1. 图纸

2. 租赁ESC服务器

2.1 网址

云服务器ECS_云主机_服务器托管_弹性计算-阿里云 (aliyun.com)

2.2 内存选择

由于所有程序、Web 应用、微服务都要在一个实例中运行,所以实例的内存建议使用 8G 内存。

2.3 实例管理 

2.4 使用 Xshell 远程连接

使用公网地址进行连接

3. 安装服务器端运行环境 

3.1 上传压缩资源 

3.2 安装JDK

解压JDK压缩包
配置/etc/profile文件
使用source命令使/etc/profile文件生效

[root@iZm5e3uhznq40do0w2g4qsZ ~]# cd /opt/software/
[root@iZm5e3uhznq40do0w2g4qsZ software]# ll
total 647124
-rw-r--r-- 1 root root  10874669 Sep 25 01:44 apache-tomcat-9.0.21.tar.gz
-rw-r--r-- 1 root root 146799982 Sep 25 01:45 jdk-8u311-linux-x64.tar.gz
-rw-r--r-- 1 root root  47836256 Sep 25 01:45 mysql-community-client-8.0.26-1.el7.x86_64.rpm
-rw-r--r-- 1 root root 454689776 Sep 25 01:46 mysql-community-server-8.0.26-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   2438367 Sep 25 01:45 redis-6.2.1.tar.gz
①.解压JDK压缩包
[root@iZm5e3uhznq40do0w2g4qsZ software]# tar -zxvf jdk-8u311-linux-x64.tar.gz
[root@iZm5e3uhznq40do0w2g4qsZ software]# cd jdk1.8.0_311/
[root@iZm5e3uhznq40do0w2g4qsZ jdk1.8.0_311]# pwd
/opt/software/jdk1.8.0_311
②.配置/etc/profile文件
[root@iZm5e3uhznq40do0w2g4qsZ jdk1.8.0_311]# vim /etc/profile
    JAVA_HOME=/opt/software/jdk1.8.0_311
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME PATH
③使用source命令使/etc/profile文件生效
[root@iZm5e3uhznq40do0w2g4qsZ jdk1.8.0_311]# source /etc/profile
④测试jdk是否安装成功
[root@iZm5e3uhznq40do0w2g4qsZ jdk1.8.0_311]# echo $JAVA_HOME
/opt/software/jdk1.8.0_311
[root@iZm5e3uhznq40do0w2g4qsZ jdk1.8.0_311]# java -version
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)

3.3 解压Tomcat

Tomcat不需要安装,解压后即可使用,但是如果想访问Tomcat,需要在ECS中设置安全组,放行Tomcat端口号:8080

[root@iZm5e3uhznq40do0w2g4qsZ software]# tar -zxvf apache-tomcat-9.0.21.tar.gz

3.4 安装MySQL

3.4.1 安装

①先查看是否有mariadb,如果有则卸载,因为mariadb对mysql有干扰

[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.el7.x86_64
#--nodeps的意思是忽略依赖,强制卸载
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps

②解压压缩包并按顺序安装MySQL

①.解压
[root@iZm5e3uhznq40do0w2g4qsZ software]# tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
②按先后顺序安装,之间有依赖关系
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm 
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm 
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm 
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -qa | grep libaio
[root@iZm5e3uhznq40do0w2g4qsZ software]# yum -y install libaio
[root@iZm5e3uhznq40do0w2g4qsZ software]# rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm 

3.4.2 MySQL初步操作

①安装完之后进行初始化 

[root@iZm5e3uhznq40do0w2g4qsZ software]# mysqld --initialize --console

②初始化之后,把mysql的安装目录的所有者和所属组都修改一下,以便敲击mysql时,让mysql软件用户有权限直接使用

[root@iZm5e3uhznq40do0w2g4qsZ software]# chown -R mysql:mysql /var/lib/mysql/

③启动服务

[root@iZm5e3uhznq40do0w2g4qsZ software]# systemctl start mysqld

④查看临时密码,并登录

[root@iZm5e3uhznq40do0w2g4qsZ software]# cat /var/log/mysqld.log | grep localhost
2022-09-26T13:25:37.666077Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: uAp!8Ir>q)s8
#使用密码'uAp!8Ir>q)s8'登录
[root@iZm5e3uhznq40do0w2g4qsZ software]# mysql -uroot -p
Enter password: uAp!8Ir>q)s8
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.26

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

⑤登陆之后修改临时密码

alter user 'root'@'localhost' identified by 'abc123';

⑥使用测试

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.26    |
+-----------+
1 row in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

3.4.3 设置MySQL

①设置访问授权

默认的root用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个root账户,用户远程访问,并给root用户分配权限。重启mysql服务让其生效

mysql> create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to 'root'@'%';
Query OK, 0 rows affected (0.01 sec)

重启mysql服务让其生效
systemctl restart mysqld

②使用SQLyog测试是否可以远程连接

3.4.4 在ECS中设置快照,保存进度,出错时可以回滚到当前进度 

3.5 安装Redis

①安装gcc-c++

yum -y install gcc-c++

②解压redis压缩包

tar -zxvf redis-6.2.1.tar.gz

③编译并安装redis

[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# vim src/Makefile
修改安装目录:PREFIX?=/usr/local/redis
编译:
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# make
安装:
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# make install

④复制并修改配置文件

[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# cp /opt/software/redis-6.2.1/redis.conf /usr/local/redis/
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# vim /usr/local/redis/redis.conf
修改:
    daemonize yes                      是否可以后台访问
    logfile "/var/redis/redis.log"     日志文件,需要手动创建
    dir /usr/local/redis               工作目录
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# mkdir /var/redis

⑤测试:启动redis

启动redis:
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
客户端登录:
[root@iZm5e3uhznq40do0w2g4qsZ redis-6.2.1]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> 

4. Maven打包 

4.1 修改参数

①.MySQL连接信息

  • 访问地址:localhost
  • 用户名:root
  • 密码:abc123

②.Redis连接信息

  • 主机地址改成 127.0.0.1 

③.支付接口涉及的被调用地址

  • notify-url: http://47.104.212.211/pay/notify
  • return-url: http://47.104.212.211/pay/return

④.跨微服务请求、重定向请求的主机地址

  • 把 localhost:80 改成 47.104.212.211

4.2 工程打包

4.2.1 工程之间的关系

4.2.2 Maven 对于安装顺序的要求

  • 依赖关系对安装顺序的要求
    • A 依赖 B
    • Maven 要求先安装 B,再安装 A
  • 继承关系对安装顺序的要求
    • A(子工程)继承 B(父工程)
    • Maven 要求先安装 B,再安装 A
  • 如果配置聚合,那么对聚合工程执行 install 命令,Maven 就会自动按照正确的顺序安装各个模块工程。但是我们现在 common-util 工程没有参与聚合,所以要先单独对 common-util 执行安装。

4.2.3 SpringBoot 工程打包

  • 目标效果
    • 通过运行 java -jar xxx.jar 命令直接启动 SpringBoot 微服务。此时要求这个 jar包中包含SpringBoot 内置的 Tomcat、SpringBoot 环境 jar 包以及其他依赖 jar 包。
  • 实现效果的关键
    • 在SpringBoot所在Maven工程的pom.xml文件中配置build标签使用SpringBoot指定的 Maven 插件进行打包。 
<!-- Maven 构建过程相关配置 -->
<build>
    <!-- 构建过程中所需要用到的插件 -->
    <plugins>
        <!-- 这个插件将 SpringBoot 应用打包成一个可执行的 jar 包 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

要想使用上面的配置必须让当前工程或父工程继承 SpringBoot。

<!-- 继承 SpringBoot 官方指定的父工程 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
</parent>

如果在父工程中加入 build 配置,那么各个子工程就都不必加入 build。但是我们现在的情况是:有的子工程并不是 SpringBoot 微服务,所以哪个需要就给哪个加上。也就是下图所示的工程: 

4.2.4 打包命令:mvn clean install -Dmaven.test.skip=true

表示先清理、再安装,跳过测试。注意:执行 Maven 命令一定要进入 pom.xml 所在的目录 

4.2.5 启动命令

①.shangcouwang-admin.war 包需要放到 Tomcat 的 webapps 目录下,启动 Tomcat

[root@iZm5e3uhznq40do0w2g4qsZ ~]# mv shangcouwang-admin.war /opt/software/apache-tomcat-9.0.21/webapps/
[root@iZm5e3uhznq40do0w2g4qsZ ~]# /opt/software/apache-tomcat-9.0.21/bin/startup.sh 

②.微服务

java -jar /opt/packages/shangcouwang02-member-eureka-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang04-member-mysql-provider-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang05-member-redis-provider-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang06-member-authentication-consumer-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang07-member-project-consumer-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang08-member-order-consumer-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang09-member-pay-consumer-0.0.1-SNAPSHOT.jar
java -jar /opt/packages/shangcouwang10-member-zuul-0.0.1-SNAPSHOT.jar

③.启动完成之后,使用浏览器访问47.104.212.211即可

5. 项目总结

5.1 后台管理系统

5.1.1 搭建环境

  • 使用 Maven 作为构建管理和依赖管理工具
  • 使用SpringMVC作为Web层框架,负责处理请求、接收请求参数、显示页面、请求的转发重定向
    • 普通请求:返回响应体通常为一个页面
    • Ajax 请求:返回响应体通常为一个 JSON 数据
  • 使用 MyBatis 作为持久化层框架。
  • 使用 MyBatis 的 PageHelper 插件实现数据的分页显示。
    • Admin 数据(普通请求的方式处理)
    • Role 数据(Ajax请求的方式处理)
  • 使用 Spring 提供的容器管理项目中的组件
    • XxxHandler
    • XxxService
    • XxxMapper
    • XxxInterceptor
    • XxxExceptionResolve
  • 前端技术
    • Boostrap 作为前端样式框架
    • 使用 layer 作为弹层组件
    • 使用 zTree 在页面上显示树形结构
  • 借助 SpringMVC 提供的异常映射机制实现项目中错误消息的统一管理
    • 基于注解
    • 基于 XML
  • 通过对请求消息头信息的判断在给出异常处理结果时实现了普通请求和 Ajax 请求的兼容

5.1.2 管理员登录

  • MD5 密码加密
  • 使用自定义拦截器检查登录状态

5.1.3 管理员维护

  • 使用 MyBatis 的 PageHelper 插件实现分页
  • 在页面上使用了 Pagination 实现数字页码
  • 在数据库表中给 loginacct 字段添加唯一约束,在保存了重复的 loginacct 时触发异常,从而保证登录账号的唯一

5.1.4 角色维护:以 Ajax 交互方式实现数据的增删改查操作

5.1.5 菜单维护

  • 使用 zTree 在页面上显示树形结构
  • 并结合 zTree 提供的 API 显示自定义图标
  • 对树形节点进行增删改查操作

5.1.6 RBAC 模型:Role Based Authentication Control,基于角色的权限控制

5.1.7 分配资源

  • 给 Admin 分配 Role
  • 给 Role 分配 Auth

5.1.8 权限控制

使用 SpringSecurity 接管项目的登录、登录检查、权限验证

※改源码:让 SpringSecurity 在初始化时不要查找 IOC 容器,而是在第一次请求时查找;查找的 IOC 容器也改成了查找 SpringMVC 的 IOC 容器(也就是由 DispatcherServlet的父类 FrameworkServlet 初始化的 IOC 容器)。

  • 登录验证:将登录表单对接到 SpringSecurity
  • 登录检查:SpringSecurity 内置
  • 全局配置:在 SpringSecurity 配置类中设定
  • 权限规则注解:@PreAuthority
  • 页面标签:对页面局部进行权限限定,实现细粒度权限控制

5.2 前台会员系统

5.2.1 搭建环境

  • SpringBoot+SpringCloud
    • SpringBoot
      • SpringSession
      • Thymeleaf
      • Redis
      • MyBatis
    • SpringCloud
      • Eureka:注册中心
      • Feign:远程接口的声明式调用
      • Ribbon:客户端负载均衡
      • Zuul:网关,ZuulFilter 过滤 

5.2.2 用户登录、注册

  • 调用第三方接口给用户手机发送短信验证码
  • 使用 BCryptPasswordEncoder 实现带盐值的加密
  • 使用 SpringSession 解决分布式环境下 Session 不一致问题
  • 使用 Redis 作为 SpringSession 的 Session 库
  • 在 Zuul 中使用 ZuulFilter 实现登录状态检查
  • 在 Zuul 中配置访问各个具体微服务的路由规则 

5.2.3 发布项目:使用阿里云 OSS 对象存储服务保存用户上传的图片

5.2.4 展示项目:将数据库中的项目数据查询出来到页面上显示

5.2.5 支持项目

  • 确认回报信息
  • 生成订单
  • 进入支付流程:调用支付宝开放平台提供支付接口

5.2.6 部署发布

  • 租赁阿里云 ECS 弹性服务器
  • 安装应用程序
    • JDK
    • Tomcat
    • MySQL
    • Redis
  • 修改项目的连接信息等参数
  • 打包
    • war 包
    • jar 包
  • 上传
  • 启动
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 阿里云ECS(Elastic Compute Service)服务器部署Java Web项目的整个流程如下: 1. 购买阿里云ECS服务器:首先,需要在阿里云官网购买一个ECS服务器。选择适合的配置和操作系统(如CentOS、Ubuntu等),并确保服务器已经成功启动。 2. 连接到ECS服务器:使用SSH(Secure Shell)工具,如Putty等,通过服务器的公网IP地址和默认的22端口,连接到ECS服务器。 3. 安装Java开发环境:在ECS服务器上安装Java开发环境,包括JDK(Java Development Kit)和JRE(Java Runtime Environment)。可以通过命令行方式或者下载安装包方式进行安装。 4. 配置服务器环境:根据需要,可以安装并配置容器化技术如Docker,以及服务器软件如Tomcat、Nginx等,用于部署和运行Java Web项目。 5. 上传项目文件:将Java Web项目的相关文件(如WAR包或者源代码)上传到ECS服务器。可以使用FTP(File Transfer Protocol)工具,如FileZilla等,将文件上传到服务器的指定目录。 6. 构建和部署项目:在ECS服务器上使用命令行工具,进入项目文件所在的目录,使用Maven或者Gradle等构建工具,运行构建命令,编译、打包Java Web项目。 7. 配置项目运行环境:根据项目要求,可能需要修改配置文件,如数据库连接信息、缓存配置等。可以使用文本编辑器或者命令行工具进行修改。 8. 启动项目:使用命令行工具,运行Java Web项目的启动命令,如启动Tomcat容器。可以查看启动日志,确认项目是否成功启动。 9. 监控和管理项目:使用阿里云的应用监控工具或者第三方工具,对Java Web项目进行监控和管理,如查看应用的性能指标、错误日志和访问日志等。 10. 绑定域名和配置SSL证书(可选):如果需要通过域名访问Java Web项目,可以在阿里云的域名服务中,将域名解析到ECS服务器的公网IP地址,并配置SSL证书,实现HTTPS访问。 总结起来,阿里云ECS服务器部署Java Web项目的流程包括购买服务器、连接服务器、安装Java开发环境、配置服务器环境、上传项目文件、构建和部署项目、配置项目运行环境、启动项目、监控和管理项目,以及绑定域名和配置SSL证书(可选)。 ### 回答2: 阿里云ECS服务器部署JavaWeb项目的整个流程如下: 1. 登录阿里云官网,购买一台ECS服务器,选择合适的配置和系统镜像。 2. 在云服务器ECS的控制台上,找到已购买的服务器实例,并记录下服务器实例的公网IP地址。 3. 在本地开发环境,将JavaWeb项目打包成war文件。 4. 使用FTP工具(如FileZilla)将war文件上传到ECS服务器。连接ECS服务器的方法为使用用户名和密码连接到服务器实例的公网IP。 5. 在ECS服务器上安装Java运行环境,执行以下命令: ``` yum update -y # 更新系统 yum install java-1.8.0-openjdk-devel -y # 安装Java环境 ``` 6. 配置ECS服务器的防火墙规则,允许对应的端口访问。通常JavaWeb项目使用的是8080端口,可以在ECS的安全组中开放对应的端口。 7. 在ECS服务器上启动Tomcat服务器,执行以下命令: ``` cd /usr/local # 进入Tomcat安装目录 wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz # 下载Tomcat tar -zxvf apache-tomcat-9.0.52.tar.gz # 解压Tomcat cd apache-tomcat-9.0.52/bin # 进入Tomcat的bin目录 ./startup.sh # 启动Tomcat ``` 8. 在浏览器中输入ECS服务器的公网IP地址和Tomcat使用的端口号,例如:http://公网IP:8080/,即可访问部署好的JavaWeb项目。 以上就是阿里云ECS服务器部署JavaWeb项目的整个流程。当然,根据具体的项目和需求,可能会涉及到其他配置和操作,例如数据库的连接、SSL证书的安装等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值