前两天临时接到一个任务,说要过一个认证,所以要在uos系统上搭建一套业务系统测试,由统信提供了几台服务器来搭建。然而搭建过程不是很顺利,分别遇到以下问题:

1、 导入数据库文件报错

UOS龙芯mysql安装包下载_服务器

这个库是从生产环境直接拿下来的,不应该出现过长这种问题,所以百度了一下,发现是有些配置太小了,在数据库配置文件中加上以下三个配置重启数据库之后再导入即可。

innodb_log_file_size=1024M
innodb_file_format ='Barracuda'
innodb_strict_mode=0

2、无法使用jboss部署项目

其中有一台部署的时候,和之前在本地测试的时候一样,直接拿部署脚本跑了一遍,结果没启动,就手动启动了一下,发现报如下错:

UOS龙芯mysql安装包下载_服务器_02

war包是使用jboss6.1部署的,只能使用jdk1.7,一直没出过问题。之前用公司的服务器安装了uos系统并且测试过,确实能跑起来,但是这边显示jdk错误,当时没想到和cpu有关系,估计是位数问题,于是使用uname命令看了一下

uname -m

UOS龙芯mysql安装包下载_数据库_03


UOS龙芯mysql安装包下载_服务器_04


位数确实没问题,是64位的,但是这玩意是mips架构的。

当时还不知道这个是干啥使的。只能通过关键字来搜索,但是只搜出来这些玩意

UOS龙芯mysql安装包下载_服务器_05

UOS龙芯mysql安装包下载_UOS龙芯mysql安装包下载_06

好滴,那我换一种方式,搜索 mips jdk,看到了龙芯社区里有专门的jdk,这不好办了吗。下载一个jdk1.7,直接启动jboss啊

UOS龙芯mysql安装包下载_UOS龙芯mysql安装包下载_07

点进去看了才才发现是我太天真了——龙芯OpenJDK,没有7的版本

UOS龙芯mysql安装包下载_数据库_08

UOS龙芯mysql安装包下载_UOS龙芯mysql安装包下载_09

3、使用tomcat启动报错-mq问题

看样子jboss是用不了,只能用tomcat。

服务器上自带了jdk,使用apt安装的,java -version 看了一下

UOS龙芯mysql安装包下载_服务器_10

可以用,那就直接把离线包方式去,解压、改配置放war包就可以直接启动了。

  • 一开始放上去的是tomcat 9.0,使用自带的jdk启动,报错。
  • 换成tomcat8.5,使用自带的jdk启动,报错。
  • 再换成7.0,使用自带的jdk启动,报错。

那意思就是只要是自带的jdk,无论启动哪个版本的tomcat都会报错。那就只能换jdk了。

龙芯社区的jdk有三个版本,分别是 龙芯OpenJDK 13-ea 64位、龙芯OpenJDK 8 64位、龙芯OpenJDK 6 32位。

UOS龙芯mysql安装包下载_龙芯_11


一般情况下我们使用的jdk都是8的。于是下载了一个jdk8,配tomcat8一起用,结果启动的时候还是报错,日志只是说,一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件

UOS龙芯mysql安装包下载_服务器_12

之前报错都是这种错误,主要还是日志打印不够详细,于是使用了debug模式来查错

./catalina.sh debug

发现如下报错:

UOS龙芯mysql安装包下载_tomcat_13

Failed to connect to [tcp://127.0.0.1:61617?wireFormat.maxInactivityDuration=0] after: 10 attempt(s) continuing to retry

这是mq报错,查了一下,发现mq确实没启动,原因是……脚本部署mq时,在mq配置里指定了mq的jdk为通用版本的jdk1.7,忘记改了

UOS龙芯mysql安装包下载_服务器_14

4、 部署项目之数据库无法连接

将mq的jdk更改之后重新启动,发现数据库又连不上了。

UOS龙芯mysql安装包下载_UOS龙芯mysql安装包下载_15

使用localhost是可以连接的,但是使用127.0.0.1就无法连接了,这就牵扯到一个比较重要的问题,mysql中localhost和127.0.0.1的区别,详情见下文:
mysql中localhost和127.0.01区别

UOS龙芯mysql安装包下载_tomcat_16

总而言之就是,使用127.0.0.1连接数据库时,不像使用localhost一样不经过网卡,它和使用其他IP一样要经过网卡、防火墙等等连接。

mariadb10.3可能是默认采用了新的caching_sha2_password的身份验证方式,此方式并不兼容常规的老的web服务接口(可能,我并不确定,因为我在修改了加密方式之后才想起来要上去看看他加密方式是啥,已经来不及了)

总之使用命令改一下加密方式,如下

update mysql.user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';

UOS龙芯mysql安装包下载_龙芯_17

现在数据库加密方式为

UOS龙芯mysql安装包下载_服务器_18

和旧的一样了,测试之后可以使用localhost连接。

5、x11报错

接着重新启动tomcat,等了很久,报如下错误:

UOS龙芯mysql安装包下载_龙芯_19

再往上翻了一下,在数据库启动之后看到这个报错

UOS龙芯mysql安装包下载_服务器_20

一波三折啊真是……
百度了一下这个报错,发现是现在使用的远程连接工具的问题,但是实在懒得解决这个问题,反正uos是有图形化界面的,直接远程到图形化界面,使用终端运行就可以。于是使用向日葵远程连接到服务器上打开终端执行命令。

6、 部署成功,浏览器无法访问

终于!数据库连接成功,日志打印了!

然而浏览器上输入网址访问,却报500的错。

UOS龙芯mysql安装包下载_tomcat_21

UOS龙芯mysql安装包下载_tomcat_22

解决这个报错是花了最多时间的,反正各种百度,都没有结果,就想着要不换个tomcat吧,都到最后一步了也不能放弃啊,就把tomcat换成了9.0。启动之后访问,成功了。

附上tomcat官网上tomcat-jdk匹配表格,明明8的tomcat配7以上的jdk都是可以的,但是不知道为什么我的不行。以后尽量都按照这个来安装jdk和tomcat吧。

UOS龙芯mysql安装包下载_服务器_23

7、总结

总结一下主要有以下几点问题:
1、龙芯CPU有自己的jdk,通用的jdk在龙芯上不能正常运行
2、启动java项目都要注意,一定要匹配对应的jdk
3、有些报错是远程连接工具导致的,可以不执着于报错,换一个连接工具,可能会更快一点
4、数据库很重要,部署服务之前确定一下数据库的各项配置。