Linux下部署tomcat+mysql服务器

时间:2022-10-04 16:51:23

Linux下部署tomcat+mysql服务器

第一次在linux服务器上部署项目,把我部署的过程和其中遇到的坑记录下来。


准备

vpn创建连接

由于目标服务器处于内网网段,因此对方将提供vpn代理服务器,在外网想要连接服务器必须通过vpn代理服务器来连接,当前系统时win10,但vpn的创建都差不多。

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

点击连接,输入密码和账号。

Linux服务器连接工具XShell

xshell这个软件可以连接各种不同系统的服务器,百度搜索xshell工具,下载安装,打开后是这个界面

Linux下部署tomcat+mysql服务器
文件>新建
Linux下部署tomcat+mysql服务器
Linux下部署tomcat+mysql服务器
Linux下部署tomcat+mysql服务器
输入用户名和密码,如果目标服务器在内网,则用vpn代理。
Linux下部署tomcat+mysql服务器
接下来便可以通过命令行的方式来操控目标服务器。

WinSCP文件上传下载

我们可以通过winscp这个软件来与linux服务器进行安全的可视化文件操作。安装完后进入这个界面后,进行简单的登陆就可以了,主机名是目标服务器ip。
Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

部署

拷贝tomcat

把tomcat通过winSCP拷贝到服务器上,由于文件比较大,我把它打包成了.zip文件。

Linux下部署tomcat+mysql服务器

拷过去后可以在winSCP上解压,即右键>自定义命令>Untar,也可以在Xshell的命令行解压

Linux下部署tomcat+mysql服务器

# Unzip 【压缩包文件路径】 -d 【压缩目标文件夹】

这里的路径是从linux的根路径开始,也可以用cd命令进入文件夹后用相对路径。
解压完后我们的tomcat就算成功拷贝到linux上去了。

JDK安装

合适的JDK版本

在下jdk时,首先要考虑到目标服务器的系统和位数,通过命令
# uname -r 可以看到

Linux下部署tomcat+mysql服务器

我的目标服务器是32位,到jdk官网找到linux 32位的jdk,此处我下的是rpm 1.7版本(jdk-7u67-linux-i586.rpm),不过官网的下载速度我就不吐槽了。

JDK安装

jdk下载好后,直接拷到服务器上,一般是目录/usr/java/中

Linux下部署tomcat+mysql服务器

接下来,我们要执行这个文件来安装它,linux在执行任何文件都需要 “执行这个文件”的权限。在命令行使用# chmod +x 【文件名】 给所有用户执行权限。

Linux下部署tomcat+mysql服务器

接着,开始执行这个文件# rpm -ivh 【文件名】.rpm 进行安装。

当遇到以下的错误,则证明服务器已经有jdk环境,在搭建时一定要先检查服务器事先是否有java环境。

Linux下部署tomcat+mysql服务器

# java -version

Linux下部署tomcat+mysql服务器

有时候如果jdk和要用的版本不匹配,可以删掉老版本然后在重新安装后修改环境变量就可以了,在这附上修改环境变量的方法

#vi /etc/profile
在最后面加入
#set java environment
JAVA_HOME=/usr/java/jdk1.7.0_67
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH
保存退出。

配置和在windows下很像。

数据库导入

由于目标服务器已有项目正在运行,所以连mysql都是安装好了的,而对方为了怕误操作,甚至把数据库都给建好了,结果就是没给root账号 (┬_┬),那么现在只是导基础数据和表结构就可以了。
首先进入mysql

# mysql -u【账号】 -p【密码】

Linux下部署tomcat+mysql服务器

由于我事先把数据库导成sql文件并传到服务器上了,现在只需要直接运行就可以了。
首先选择一个数据库

Linux下部署tomcat+mysql服务器

然后执行脚本文件

Linux下部署tomcat+mysql服务器

也可以在外面直接运行sql脚本文件

mysql –u用户名 –p【密码】 –D【数据库】<【sql脚本文件路径全名】

Linux下部署tomcat+mysql服务器

Tip 【表不存在的异常】

Linux上和本地的mysql有个很大的区别,那就是区分表名的大小写,如果代码里是

@Entity
@Table(name = "primary")

而数据库的表名是Primary,则会出现我这样的错

Linux下部署tomcat+mysql服务器

解决办法有两个,第一种就是把大小写搞对,但这个比较麻烦,要到每个实体里面去改,因此我用了第二种方法,就是让linux的mysql也不区别大小写,要做到这点只需要在 \etc\my.cnf 文件的最后加一句lower_case_table_names=1(=0表示区分)

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

然后再重启mysql># service mysqld restart就可以了。

TIp 【删除复杂外键关联的表】

在部署或测试阶段,可能要不止一次的重导数据,这样就需要在每次重导时删除所有表,最直接的就是删数据库在建,但每次重新建数据库又太麻烦了(特别是对于我这种没有root账号的人/(ㄒoㄒ)/~~),为了只删除所有表而不删数据库,我们可以通过在命令

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = '【数据库名】';

来获取所有表的删除命令

Linux下部署tomcat+mysql服务器

然后复制下来,把’|’给清掉就ok。

特别注意,有些表的外键关联太复杂并且又不是空表,直接运行drop是无法删除的,汇报外键异常,所以在清空’|’后,我会在第一条加上SET foreign_key_checks=0(0代表操作是不检查外键);这样就能快速的删除所以的表了,但是要注意,在删除后,不要忘了把值设回来SET foreign_key_checks=1

Tip 【”show tables”中表存在,但这些表无法看到与操作】

有时候在多次删除操作后,可能会有些遗留问题,比如当我执行show tables时

Linux下部署tomcat+mysql服务器

表示存在的,但在操作与查看却提示表不存在。

Linux下部署tomcat+mysql服务器

造成这种情况是因为mysql中存在这个表的“ 数据文件” 和“定义文件(.frm)”,但是共享表空间文件被替换掉了或者说其内没有这些表的信息,通俗点就是只要.frm文件存在,这个表就会被show tables命令给扫出来,这个时候想要彻底的删除这些表,就只要把.frm文件删了出现就可以了;

Linux下部署tomcat+mysql服务器

启动Tomcat

那么到目前为止,就可以启动tomcat了(在启动前,如果代码有配置文件,不要忘了进行相应的修改)。
首先,进入 tomcat/bin/目录下,执行startup.sh文件

Linux下部署tomcat+mysql服务器

Linux下部署tomcat+mysql服务器

在执行时给出个权限拒绝,那我们赋个权限。
chmod +x startup.sh

Linux下部署tomcat+mysql服务器

好家伙,又来个错,这个错说明我们没有catalina.sh文件的权限

Linux下部署tomcat+mysql服务器

干脆吧bin文件夹里面的所有.sh文件都给权限
在bin下执行chmod +x *.sh

Linux下部署tomcat+mysql服务器

再次启动,成功!

Linux下部署tomcat+mysql服务器

Tip

通过startup.sh启动是无法看到控制台的,如果想要看到控制台的信息,需要用./catalina.sh run 命令来开启,先关闭之前的启动。

Linux下部署tomcat+mysql服务器

在命令行输入 ./catalina.sh run 就可以了。

nohup 不挂断地运行命令

在我们退出xshell后,连接中断,tomcat就会被关闭,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行

[root@centos6 bin]# nohup ./catalina.sh run &
[1] 8579
[root@centos6 bin]# nohup: ignoring input and appending output to `nohup.out'

查看并删除正在运行的tomcat

有的时候可能莫名其妙的没有关掉tomcat,当我们再次运行时就会报端口占用的异常,这个时候可以执行# ps -ef |grep tomcat 来查看启动的tomcat的进程号

这个是tomcat未启动时

Linux下部署tomcat+mysql服务器

启动后
Linux下部署tomcat+mysql服务器

此时就可以用# kill -9 【进程号】来关闭tomcat了。

Linux下部署tomcat+mysql服务器

使用过的命令

  • 解压zip
    # Unzip 【压缩包文件路径】 -d 【压缩目标文件夹】

  • 查看linux服务器版本
    # uname -r

  • 分配文件执行权限
    # chmod +x 【文件名】

  • 查看jdk是否配置成功
    # java -version

  • 登入mysql
    # mysql -u【账号】 -p【密码】

  • 不登入的情况下执行sql脚本
    # mysql –u用户名 –p密码 –D数据库<【sql脚本文件路径全名】

  • 重启mysql
    mysql > service mysqld restart;

  • 展示所有的表
    mysql > show tables;

  • 执行文件
    # ./【文件名】

  • 查看正在运行的tomcat进程
    # ps -ef |grep tomcat

  • 关闭进程
    # kill -9 【进程号】