xshell关闭后 数据库进程_解决liunx 下xshell 关闭后 tomcat自动断掉的状况
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 【进程号】
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)