最近项目里面有几个简单接口要写(用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 | 关闭mysql服务: service mysqld stop |
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 |
|
总结:
遇到问题的时候一定要首先看日志, 像是tomcat/logs
下通过tail -f catalina.out
查看详细的日志, mysql 中 vi /var/log/mysqld.log
查看所有mysql 日志,确定问题的大致范围,再去解决,走的弯路就会少些。
这次布署经历对xshell命令操作远程主机也有了一定认识,通过自己到网上寻找解决办法,对后台如何部署有了大概的理解,Linux相关的知识自己很弱,学习任重道远…