文章目录
环境及前期准备
操作系统: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会自动解析。
之后便可以访问了。