Linux下部署tomcat+mysql服务器

来源:互联网 发布:right函数 vb 编辑:程序博客网 时间:2024/06/01 10:07

Linux下部署tomcat+mysql服务器

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

  • Linux下部署tomcatmysql服务器
    • 准备
      • vpn创建连接
      • Linux服务器连接工具XShell
      • WinSCP文件上传下载
    • 部署
      • 拷贝tomcat
      • JDK安装
        • 合适的JDK版本
        • JDK安装
        • 数据库导入
        • Tip 表不存在的异常
        • TIp 删除复杂外键关联的表
        • Tip show tables中表存在但这些表无法看到与操作
      • 启动Tomcat
        • Tip
    • nohup 不挂断地运行命令
      • 查看并删除正在运行的tomcat
      • 使用过的命令


准备

vpn创建连接

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

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

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

Linux服务器连接工具XShell

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

这里写图片描述
文件>新建
这里写图片描述
这里写图片描述
这里写图片描述
输入用户名和密码,如果目标服务器在内网,则用vpn代理。
这里写图片描述
接下来便可以通过命令行的方式来操控目标服务器。

WinSCP文件上传下载

我们可以通过winscp这个软件来与linux服务器进行安全的可视化文件操作。安装完后进入这个界面后,进行简单的登陆就可以了,主机名是目标服务器ip。
这里写图片描述

这里写图片描述

部署

拷贝tomcat

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

这里写图片描述

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

这里写图片描述

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

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

JDK安装

合适的JDK版本

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

这里写图片描述

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

JDK安装

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

# java -version

这里写图片描述

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

#vi /etc/profile在最后面加入#set java environmentJAVA_HOME=/usr/java/jdk1.7.0_67  CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH保存退出。

配置和在windows下很像。

数据库导入

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

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

这里写图片描述

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

这里写图片描述

然后执行脚本文件

这里写图片描述

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

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

这里写图片描述

Tip 【表不存在的异常】

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

@Entity@Table(name = "primary")

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

这里写图片描述

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

这里写图片描述

这里写图片描述

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

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

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

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

来获取所有表的删除命令

这里写图片描述

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

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

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

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

启动Tomcat

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

这里写图片描述

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

再次启动,成功!

这里写图片描述

Tip

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

这里写图片描述

在命令行输入 ./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未启动时

这里写图片描述

启动后
这里写图片描述

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

这里写图片描述

使用过的命令

  • 解压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 【进程号】

0 0