【超详细附参考】阿里云部署spring项目基本流程详解及踩坑经验

环境及前期准备

操作系统:WIN10
IDE
:IDEA
数据库:MySql,Navicat
一个基于Spring Boot,MySql,MyBatics写好的简单Web项目,能够在localhost上运行并返回json。

IDEA连接数据库时遇到的问题:Failed to determine suitable jdbc url.
原因:本地主机安装的MySql为先前的5.1,而IDEA项目的application.properties中采用的配置方式

server.port=8080
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/library
spring.datasource.username=root
spring.datasource.password=xxxx
spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver

适用于MySql5.6以后的版本
解决方法:卸载原有的MySql,重装了新版本。
参考:
https://www.jianshu.com/p/711c1c7bce4c

基本流程

参考:
https://blog.csdn.net/qq_41635167/article/details/81096075
里面阐述了服务器的购买,访问,环境的配置以及部署的全过程。但是他的阿里云控制台版本比较老旧,且对于具体的配置过程有些地方描述不够全面,还需参考其他资料。

购买云服务器

因为阿里云的案例较多,这里选择了阿里云服务器,因为不是大陆学生无法进行学生认证,也已经不是新用户,一般选用ECS:https://www.aliyun.com/product/ecs?spm=5176.19720258.J_3207526240.32.249a2c4a3g9H1X
支付宝扫码登陆后,选择实例。这里按需选择,看计算的需求。我选择了一个通用型g7的实例。对于地域的选择,选用靠近客户地域的。如果只是学习需要就选离自己近的。对于预装环境的选择,一般推荐CentOS,但是阿里云显示:
在这里插入图片描述
因此选用了Alibaba Cloud Linux,操作与CentOS大致相同。
点击下一步,网络与安全组可以先默认,下一步
系统配置中配置一下密码和密钥(也可购买后配置,但是改版了我没找到在哪)下一步
分组设置目前没有需要,确认订单。
在购买了云服务器后,点击右上角控制台
在这里插入图片描述
点击左边三根横线
在这里插入图片描述
点击云服务器ECS
在这里插入图片描述
在概览中便可以看到新购买的实例。
在这里插入图片描述
点击实例,点击安全组
在这里插入图片描述
进入安全组,在入方向手动添加端口3306(MySql使用),8080(Spring项目通常用到,我的项目常用9001),21,22。
在这里插入图片描述
实例有两个IP,公网IP和私网IP,这里复制公网IP。连接服务器需要使用。

遇到的问题:
阿里云实例默认禁用ssh导致无法连接的问题
https://blog.csdn.net/abracadabraa/article/details/125212934

连接云服务器
工具准备

这里用到两个工具:XShell,Xftp。
Xshell官网下载:https://www.xshell.com/zh/xshell-download/
Xftp官网下载:https://www.xshell.com/zh/xftp-download/
选择:家庭和学校用的免费许可,要求你填一个电子邮箱用来接收下载链接。下载后无脑安装就好啦。
在这里插入图片描述

Xshell连接:

打开Xshell,点击新建会话
在这里插入图片描述
在主机中输入自己服务器的IP地址,在用户身份认证中输入用户名和密码,点击连接,点确定,当屏幕显示welcome to alibaba cloud时,说明你连接成功了。
在这里插入图片描述

Xftp连接:

和Xshell类似:
在这里插入图片描述
进入后左边是主机右边是服务器:
在这里插入图片描述
便可以可视化管理服务器上的文件了。可以通过拖拽将主机的文件上传到服务器。右键进行复制剪切删除等。

环境配置

登录Xshell

JDK安装
yum -y install java-1.8.0-openjdk.x86_64

屏幕上出现Complete时,说明安装成功了。并且在命令行输入java -version也能正常显示。
但是输入javac报错
运行maven报错:
The JAVA_HOME environment variable is not defined correctly linux maven
原因:
1.需要配置环境变量

vim /etc/profile

在最底下加入:

#set java environment
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64
export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$JRE_HOME/bin:$JAVA_HOME/bin

其中,JAVA_HOME的路径寻找:
参考:https://blog.csdn.net/u013991521/article/details/78292136

[root@localhost ~]# java -version

java version "1.7.0_65"

OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17)

OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

[root@localhost ~]# which java

/usr/bin/java

[root@localhost ~]# ls -lrt /usr/bin/java

lrwxrwxrwx. 1 root root 22 Aug 17 15:12 /usr/bin/java -> /etc/alternatives/java

[root@localhost ~]# ls -lrt /etc/alternatives/java

lrwxrwxrwx. 1 root root 46 Aug 17 15:12 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

[root@localhost ~]# 

[root@localhost ~]# cd /usr/lib/jvm

[root@localhost jvm]# ls

java-1.6.0-openjdk-1.6.0.0.x86_64 java-1.7.0-openjdk-1.7.0.65.x86_64 jre jre-1.6.0 jre-1.6.0-openjdk.x86_64 jre-1.7.0 jre-1.7.0-openjdk.x86_64 jre-openjdk

[root@localhost jvm]# 

2.需要配置jdk
按照步骤去配置了/etc/profile的环境变量,发现Java -version能找到,但是javac -version的命令找不到。发现/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64/文件夹下尽然只有jre文件夹,其他啥都没有。

参考:https://www.codeleading.com/article/58305659278/

后来在网上搜到,这是因为openjdk安装完只有默认的运行环境,没有开发环境。
因此需要安装jdk开发环境:

yum install java-1.8.0-openjdk-devel.x86_64

运行结束后/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-0.el8_3.x86_64文件夹内便有lib、bin等文件了。

Tomcat安装

tomcat官网,这里选择tomcat8:
https://tomcat.apache.org/download-80.cgi
在这里插入图片描述
右键选择复制链接地址,cd /opt切换到opt目录下用wget下载:

wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.79/bin/apache-tomcat-8.5.79.tar.gz

下载后解压:

 tar xzf apache-tomcat-8.5.79.tar.gz

为了方便命令行操作,执行命令进行重命名

mv apache-tomcat-8.5.79  tomcat8.5

启动tomcat:

/opt/tomcat8.5/bin/startup.sh

显示tomcat started说明启动成功,现在可以在外网访问http://服务器地址:8080,显示 Apache的页面说明访问成功

Mysql安装

同样cd到/opt下(FHS将/opt定义为 “为安装附加应用软件包而保留”,即/opt是linux系统预留给第三方软件安装的位置)

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql mysql-server mysql-devel -y

显示complete说明安装成功。
登录:

mysql -uroot -p

这样安装的mysql默认是没有密码的,可以自行设置。

遇到问题:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因:
由于“socket”文件是由mysql服务运行时创建的,如果提示“ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘***’ (2)”,找不到“socket”文件,我们首先要确认的是mysql服务是否正在运行。
参考:
https://blog.csdn.net/weixin_45777669/article/details/115671283
发现是因为mysql服务没有启动
启动命令:

service mysqld start

停止命令:

service mysql stop

注意:MySQL中的语句带分号。

Maven安装

参考:
https://blog.csdn.net/qq_41937388/article/details/105334987
https://developer.aliyun.com/article/744921
首先,在Xftp上创建一个文件夹maven
cd到该文件夹下
下载maven的包:
官网:http://maven.apache.org/download.cgi
https://developer.aliyun.com/article/744921

wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz

解压:

tar -zxvf apache-maven-3.8.5-bin.tar.gz

设置全局变量:

vim /etc/profile

在最后添加

export MAVEN_HOME={创建maven文件夹的目录}/maven/apache-maven-3.8.5

classpath和path也需要更改:

export CLASSPATH=.:$JAVA_HOME/lib:$MAVEN_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$PATH:$MAVEN_HOME/bin:$JRE_HOME/bin:$JAVA_HOME/bin

使配置生效:

source /etc/profile

查看安装是否成功:

mvn -version

项目打包部署

参考:https://www.bilibili.com/video/BV1uK411p7Bp?spm_id_from=333.999.0.0

数据库导入

首先在Navicat中:双击连接启动,右键想要备份的数据库,选择转储SQL文件,选择结构及数据。选择想要保存的位置。
将导出的数据库拖拽到Xftp中自己想要存储的位置上,保存路径。
在Xshell中
首先启动Mysql:

mysql -uroot -p
mysql> create database abc;      # 创建数据库
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库,这里路径替换为自己上传sql文件的路径

检查是否安装成功:

mysql> show databases;
mysql> use abs;
mysql> show tables;

参考:https://www.runoob.com/mysql/mysql-database-import.html

项目打包

部署之前需要修改的配置:
application.properties中;需要将localhost修改成服务器的ip,修改用户名密码改成服务器中设置的。
在pom文件中修改名字,版本号等信息。
注意检查idea的tomcat,sql等的版本与服务器中的版本一致。

idea直接打包

参考:
https://cloud.tencent.com/developer/article/1112106?from=15425
https://blog.csdn.net/github_38336924/article/details/82422888
idea可以直接打包,具体操作是:
file->project structure
选择project,module,libraries,facet,artifacts后,点击apply
build->build artifacts,到设定的文件夹中去找到war包,上传到服务器的comcat8.5/webapps中。
然后直接重启comcat:

/opt/tomcat8.5/bin/shutdown.sh
/opt/tomcat8.5/bin/startup.sh

comcat会自动解析。
但是这里我没有成功,可能是因为不懂project structure里面的配置。

命令行打jar包

将Project文件夹整个上传到服务器上任意喜欢的位置。
cd到项目文件夹中,执行:

mvn package

执行结束后

ll

便能看见当前目录下多了一个jar包。
Xftp中将该包保存到自己想要的地方备份。因为mvn clean后会清除。

命令行打war包

需要修改项目:
1.修改pom,将

<packaging>jar</packaging>

改成

<packaging>war</packaging>

在依赖中加入

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
</dependency>

排除掉自带的tomcat

2.在入口类的同级目录中新建一个类,内容指向入口类:

package cs.hku.metalibrary;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(MetaLibraryApplication.class);
    }
}

将更新上传服务器。
清理掉打jar包的遗留:

mvn clean

这次打war包:

mvn package

等待一会便能在当前目录看到打好的war包了。

正式部署
jar

jar包可以直接运行:

nohup java -jar xxxx.jar &

便可以访问了。

遇到问题时查看日志:
https://blog.csdn.net/abracadabraa/article/details/125230249

war

war包打好后需要拷贝到文件夹comcat8.5/webapps中。
然后直接重启tomcat:

/opt/tomcat8.5/bin/shutdown.sh
/opt/tomcat8.5/bin/startup.sh

comcat会自动解析。
之后便可以访问了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值