Linux下部署tomcat+mysql服务器

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

准备

vpn建立链接

因为目标服务器处于内网网段,所以对方将提供vpn代理服务器,在外网想要链接服务器必须经过vpn代理服务器来链接,当前系统时win10,但vpn的建立都差很少。java

点击链接,输入密码和帐号。mysql

Linux服务器链接工具XShell

xshell这个软件能够链接各类不一样系统的服务器,百度搜索xshell工具,下载安装,打开后是这个界面linux

文件>新建

 

 

输入用户名和密码,若是目标服务器在内网,则用vpn代理。

接下来即可以经过命令行的方式来操控目标服务器。sql

WinSCP文件上传下载

咱们能够经过winscp这个软件来与linux服务器进行安全的可视化文件操做。安装完后进入这个界面后,进行简单的登录就能够了,主机名是目标服务器ip。

shell

部署

拷贝tomcat

把tomcat经过winSCP拷贝到服务器上,因为文件比较大,我把它打包成了.zip文件。数据库

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

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

1

1

这里的路径是从linux的根路径开始,也能够用cd命令进入文件夹后用相对路径。

解压完后咱们的tomcat就算成功拷贝到linux上去了。centos

JDK安装

合适的JDK版本

在下jdk时,首先要考虑到目标服务器的系统和位数,经过命令

# uname -r 能够看到tomcat

个人目标服务器是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 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

保存退出。

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

配置和在windows下很像。

数据库导入

因为目标服务器已有项目正在运行,因此连MySQL都是安装好了的,而对方为了怕误操做,甚至把数据库都给建好了,结果就是没给root帐号 (┬_┬),那么如今只是导基础数据和表结构就能够了。

首先进入mysql

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

因为我事先把数据库导成sql文件并传到服务器上了,如今只须要直接运行就能够了。

首先选择一个数据库

而后执行脚本文件

也能够在外面直接运行sql脚本文件

mysql –u用户名 –p【密码】 –D【数据库】

Tip 【表不存在的异常】

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

@Entity

@Table(name = "primary")

1

2

1

2

而数据库的表名是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.tables

WHERE table_schema = '【数据库名】';

1

2

3

1

2

3

来获取全部表的删除命令

而后复制下来,把’|’给清掉就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'

1

2

3

4

1

2

3

4

查看并删除正在运行的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数据库

重启mysql

mysql > service mysqld restart;

展现全部的表

mysql > show tables;

执行文件

# ./【文件名】

查看正在运行的tomcat进程

# ps -ef |grep tomcat

关闭进程

# kill -9 【进程号】

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐