前言
说一下我的情况,之前由于我的云服务器数据库的root账号密码123456太简单,而在之前的博客中也泄露出了我的云服务器的IP地址,导致有人远程连接我的数据库,删除了项目数据库里的数据只剩下WARNING了,哈哈,有点意思。所以我就重新运行sql文件,但是涉及到timestamp默认值时,sql文件又无法正确执行了,这是由于ubuntu1804默认安装的是mysql5.7,而在mysql5.7中timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 并不可行,折腾无果后我选择安装mysql8,在此之前完全卸载清除掉mysql5.7,在安装mysql8过程中按照网上的攻略步骤,选择的是5.7的加密模式,防止安装完成后启动mysql输入账户名密码无效,然而即使这样我再安装完成启动mysql8输入设置的密码还是不行。这就有点尴尬了。这就无解了。有网友说他重装系统几次后避免了这种情况,但这代价有点大呀,所以我去腾讯云服务器后台重启实例看看,然而重启之后却再也登不上了,ssh连接不上,vnc也不行,提交工单给客服,腾讯工程师回复:
一顿操作后建议我重装系统。好吧,那就重装吧,重新搭建测试环境,重装mysql,jdk,tomcat,部署项目,虽然费点时间,但也能提升我的操作熟练度,之前有些过程都忘了,也算祸兮福所倚。
接下来进入具体搭建过程。所谓的搭建、部署测试环境,说得好像很高大上,其实就是装几个软件,改改配置而已。
安装tomcat
什么是tomcat?
下载安装包
先去官网下载安装包,我的是上个月下载过的,apache-tomcat-8.5.47.tar.gz,通过File Zilla等工具传到服务器上,放在/usr/local下面,或者放在/opt下面,我就直接放在/opt下面了。
解压
解压tar.gz包:tar -xvzf apache-tomcat-8.5.47.tar.gz ,就解压到/opt里面,
解压完毕,进到里面看看:
tomcat各个目录结构说明:
bin
linux或windows平台上可执行的脚本文件都放在里面,.sh是linux系统下的,.bat是windows系统下的。
其中shutdown.sh 和 startup.sh就是关闭和启动Tomcat的脚本。
conf
这里放的是Tomcat服务器的各种全局配置文件,其中包括
- server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
- web.xml可以设置tomcat支持的文件类型
- context.xml可以用来配置数据源之类的
- tomcat-users.xml用来配置管理tomcat的用户与权限,保存tomcat的用户名,密码,角色信息
- 在Catalina目录下可以设置默认加载的项目
lib
lib目录主要用来存放tomcat运行需要加载的jar包。例如,像连接数据库的jdbc的包就可以加入到lib目录中来。
logs
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
在windows环境中,控制台的输出日志在catalina.xxxx-xx-xx.log文件中,在linux环境中,控制台的输出日志在catalina.out文件中。
temp
temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)。
webapps
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。可以以文件夹、war包、jar包的形式发布应用。
当然,你也可以把应用程序放置在磁盘的任意位置,在配置文件中映射好就行。
work
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。清空work目录,然后重启tomcat,可以达到清除缓存的作用。
其他的如license:许可证 ,notice:说明文件 , running.txt:运行说明文件。。
此时去bin目录运行startup.sh启动tomcat,会提示JAVA HOME和JRE HOME环境变量都没有被定义,至少需要其中一个环境变量来运行tomcat:
很显然,tomcat的运行时依赖java环境的。
下面进入jdk的安装。
安装JDK
什么是jdk?
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
下载jdk
直接在官网下载jdk8,可能下载速度不理想。
我下载的是 jdk-8u192-linux-x64.tar.gz,把下载后的安装包,传到opt目录下,同上tomcat。
解压
tar -xvzf jdk-8u192-linux-x64.tar.gz ,进入jdk1.8.0_192:
目录结构说明
bin
bin目录里面存放了JDK的各种工具命令,即JDK开发工具的可执行文件。其中这些可执行文件都是二进制的,其中包括编译器、解释器以及其他一些工具,比如我们刚开始用的Javac、Java命令去检查JDK是否安装配置正确就是在这个目录下面的命令。
include
include目录里面是一些供C语言使用的标题文件,其中C语言的头文件支持Java本地接口和Java虚拟机调试程序接口的本地编程技术。这里头文件的作用是让Java调用C/C++实现的函数功能。
jre
jre(Java runtime environment即Java运行时环境)目录路径下安装的就是运行Java程序所必须的JRE环境。
lib
其中lib目录:该路径下存放的是JDK工具命令的实际执行程序。
配置环境变量
编辑文件:vim /etc/profile
在末尾加入下面几行:
export JAVA_HOME=/opt/jdk1.8.0_192 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存退出。
执行:source /etc/profile 使配置生效。
此时再回到tomcat下面的bin目录执行startup.sh启动tomcat:
浏览器输入ip+8080:看到一只猫就行了。
若没看到记得去云服务器安全组开放8080端口。
安装mysql8
mysql5.7只能适配到ubuntu17,所以18之后就直接上8,8的性能较5.7有了很大的提升。
具体步骤
下载deb包:mysql-apt-config_0.8.14-1_all.deb https://dev.mysql.com/downloads/repo/apt/
sudo dpkg -i mysql-apt-config_0.8.14-1_all.deb
sudo apt update
接下来安装的就是mysql8了:
sudo apt install mysql-server
选择第一个,回车
选择mysql8回车
选择ok,回车
中间还要输入密码。
选择加密方式5.x,不然可能会登录不进去。
。。。
然后就是慢慢等了。也可更换镜像源加快安装过程。
最后登陆进去:
mysql -u root -p
输入设置的密码。
ok。
然后就是部署项目了
将我的那个接口项目war包放到apache下面的webapps里面,将jdbc.properties和log4j.properties放到apache下面的conf里面。
编辑jdbc.properties,修改ip和账号密码,连接驱动。
坑
然后去请求接口,报错了!!!
查看日志,apache/logs/catalina.out,说是:Mysql| java.sql.SQLException: Unknown system variable 'tx_isolation'
网上搜了一番,说是,mysql之前的版本用的是tx_isolation,mysql8更名为transaction_isolation
所以去设置:mysql> set global transaction_isolation='READ-COMMITTED'
重启mysql。
再去请求接口,还是报错。
有人说要升级版本,war包里的项目用的是mysql5.1.11,应该升级到mysql8。
找到pom.xml。
更该版本号:
重启tomcat,还是报错。
查看日志:java.sql.SQLException: No suitable driver。
去https://dev.mysql.com/downloads/connector/j/下载ubuntu1804的Connector,是.deb格式的。
我先转换为rar,在windows上解压得到:
把这个连接jar包放到我的 /opt/apache-tomcat-8.5.47/webapps/futureloan/WEB-INF/lib 里面,并将里面的5.1.11的连接bao移走。
重启tomcat;
再次报错。这回是:
找到这段代码:vim /opt/apache-tomcat-8.5.47/webapps/futureloan/META-INF/mybatis/memberMapper.xml
这难道又是mysql8带来的问题吗?网上找了好久,在几个mysql群里也问了,没人回,果然所谓的qq学习群都是渣渣。唉,心态炸了。
看来我还是得滚回mysql5.7了,尽管不适配,但之前也用过,问题不大。
总结:软件最新的不一定是最合适的。
安装mysql5.7
这个就简单多了。
apt install mysql-server
一路yes。
安装后直接输入mysql就进入mysql了。
配置mysql允许远程访问:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉 bind-address = 127.0.0.1 即可。
然后就是赋权:
mysql> grant all privileges on *.* to root@'%' identified by 'mima' with grant option;
mysql> flush privileges
重启mysql:
service mysql restart
完毕。