kingfeng's Notes

SpringBoot工程布署到centOS碰到的问题小结

最近项目里面有几个简单接口要写(用SpringBoot开发),开发完成要布署到远程centOS主机上供客户端调用,以前没搞过,自己就尝试着搞搞;
把部署过程中自己踩的坑记录下,省得以后再给自己挖坑。

mysql登录报错: Can ‘t connect to local MySQL server through socket ‘/tmp/mysql.sock ‘(2) “;

查看配置:

1
vi /etc/my.cnf

查看近期mysql操作日志:

1
vi  /var/log/mysqld.log

发现有下面的错误日志:

我修改了my.cnf 中的配置参数, 把validate_passsword= off 注释掉,重启 mysql service mysqld restart
就解决了问题。

接下来,通过navicat客户端登陆centOS 上面安装的数据库,把相应的.sql 文件导入进去就可以了,中间可能也要修改 application.properties 里面的ip以及端口号之类的,不再赘述;
大家在mysql配置遇到问题的时候可以到mysqld.log 里面查找错误日志,

mysql常见操作命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
关闭mysql服务:  service mysqld stop

安全模式启动mysql,加入--skip-networking 防止远程无密码登录
mysqld_safe --skip-grant-tables --skip-networking &

//无密码登录
mysql -u root

//修改密码
mysql> use mysql;
mysql> update user set password=PASSWORD("mynewpassword") where User='root';
mysql> flush privileges;


//重启mysql
service mysqld restart

// 重新登录即可
mysql -u root -p

centOS/tomcat布署 SpringBoot war包:

1.安装tomcat
首先布署Springboot在服务端的时候,必须要 tomcat 8.0; 我因为在 远程centOS虚拟主机上面配置的是tomcat 7.0 死活没效果;
另外, Springboot项目打包成war包,具体如何打war包 非常多资料,就那几步,打成war之后,通过war包启动,看看打的包是否完整。
放到 tomcat/webapps下面,tomcat会自动解压war包。

另外,扔进去先看看 远程主机IP:port 是否能够访问,刚开始的时候我扔进去,没反应,后来看了catalina.out 里面的日志才发现mysql没配置好。 蠢货!

2.静态资源映射问题
这应该是Intellij IDEA/ SpringBoot工程布署跟其他Java Web 工程有一些区别的地方;
有多种方式可以解决(大家可以搜搜),我用的是最简单的一种,在项目的application.properties 下面配置:
spring.mvc.static-path-pattern=/static/**
以后访问静态资源(如html,css,js, jpb,png 等)的时候,在项目名称后面加上/static/ 进行访问, 访问我们接口的时候url上不需要配置/static/这一层。

3. SpringBoot 部署后访问的时候路径要带上war包名称;
另外注意一点的是: SpringBoot 布署时需要进行需要在访问的时候需要在端口号后面带上项目名称,如: http://xxxxx:8080/BmpServer-0.1.0-SNAPSHOT/uploadFile
当然,在server.xml 中指定了path之后就可以不用了。

修改server.xml 如下:

1
<Context docBase="BmpServer-0.1.1-SNAPSHOT.war" path="/bmp-dev" debug="0" reloadable="true"></Context>

以后我们在浏览器中访问的时候就通过:
http://10.xxx.xxx.xxx:8080/bmp-dev/static/pages/login.html 当然,把 bmp-dev 替换成 BmpServer-0.1.0-SNAPSHOT 也是可以访问的。

xshell客户端 中操作的一些命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

[root@dev-hillin-epp-01 bin]# ./shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /opt/jdk1.8.0_181/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@dev-hillin-epp-01 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /opt/jdk1.8.0_181/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

# tail -f catalina.out 查看tomcat启动日志文件
[root@dev-hillin-epp-01 logs]# tail -f catalina.out
30-Oct-2018 19:01:41.862 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/BmpServer] has finished in [15] ms

总结:

遇到问题的时候一定要首先看日志, 像是tomcat/logs下通过tail -f catalina.out 查看详细的日志, mysql 中 vi /var/log/mysqld.log 查看所有mysql 日志,确定问题的大致范围,再去解决,走的弯路就会少些。
这次布署经历对xshell命令操作远程主机也有了一定认识,通过自己到网上寻找解决办法,对后台如何部署有了大概的理解,Linux相关的知识自己很弱,学习任重道远…

您的支持将鼓励我继续创作