我采用的是最传统的方法把项目打包war,上传到服务器tomcat webapps 目录下。服务器Ubuntu系统
1. 阿里云服务器配置
先安装mysql
apt-get install mysql-server
然后修改mysql配置 让3306端口可以远程访问,修改/etc/mysql/mysql.conf.d/mysqld.cnf
文件,把bind-address = 127.0.0.1
这行注释掉。
然后grant all on *.* to root@'%' identified by 'password';
授权root用户远程访问mysql。
执行netstat -an | grep 3306
检测3306端口
tcp6 0 0 :::3306 :::* LISTEN
3306前面为0表示已经可以远程访问了。
但是阿里云服务器3306端口没有开启,需要 安全组->配置规则里面添加3306.如图
然后修改项目数据库地址
spring.datasource.url=jdbc:mysql://*.*.*.*:3306/databasename?autoReconnect=true&useSSL=false
运行项目,如果没有问题,就进行下一步打包。
2. 项目打包
spring boot 打war包。基本步骤
修改pom文件,
jar
中jar改成war。修改web 依赖 去掉内嵌的tomcat。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
- 修改Application.java 文件
// 继承SpringBootServletInitializer
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
// 重写方法
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
private static Class applicationClass = Application.class;
}
- 这个时候如果直接点击运行按钮的话,会出错,这是Idea的bug,需要
mvn spring-boot:run
一遍就好了。然后打war包。
3.上传
上传
scp ~/Desktop/demo.war root@x.x.x.x:/usr/java/tomcat/apache-tomcat-8.5.15/webapps/
4. 访问
在浏览器中输入http:x.x.x.x/demo/
就可以访问了。
可能遇到的问题
如果不能访问,可能是阿里云服务器默认80端口没开启,去配置一下就行。
如果返回404,去tomcat/logs 目录下,查看一下log,查找原因。