2018-05-09服务器自动更新部署tomcat+maven+git

学习Java半年了,在前期Linux+idea着实把我虐翻了,曾一度让我怀疑人生,还好我倔强。

刚开始感觉服务器自动更新部署很难,研究完后发现,都是由Linux命令拼出来的。
这是我最近两个礼拜每天晚上独自加班取得的小成果,也是对自己的一点交代。
成果不大,重点是给自己收心,找回学习的状态,端正研究的态度,年轻就是要让自己受苦。
哈哈,说的有点矫情了~~~

1、搭建虚拟机做服务器
  • 在自己的PC上安装virtualbox虚拟机管理工具,用deepin系统做服务器。装完后,删掉没用的软件(节省消耗,也可以忽略)。

  • 虚拟机网络选择桥接网络,这样才能让主机跟服务器在同一个局域网,能ping通连接。根据自己的网段将虚拟机IP设为固定IP。

  • 虚拟机安装ssh:apt-get install openssh-server

  • 主机用Rimmina连接虚拟机。


2、虚拟机环境部署
  • 安装Java:apt-get install openjdk-8-jdk

  • 安装tomcat:apt-get install tomcat8

  • 安装git:apt-get install git

  • 安装maven:apt-get install maven

  • 安装mysql:apt-get install 

    mysql-server

  • 安装MySQL Workbench:mysql-workbench

  • 如果主机不能连接服务器的mysql,请查看我之前写的这篇文章进行配置:http://blog.sina.com.cn/s/blog_837706ff0102x7ls.html


3、git配置
  • 在https://github.com/上创建自己的项目工程,并克隆到本地:

  • git clone https://github.com/qq940328720/myproject.git

  • 本地创建maven项目,完成后将项目放到本地更新的git文件夹下,建议用idea提交到git上。如果用git命令提交的话,会把很多不需要的东西提交上去:git add .(添加),git commit -m "提交信息"(提交本地仓库),git push -u origin master(提交git仓库)。测试的时候发现:用命令提交的时候,文件夹下必须有文件才能add,哪怕文件夹套文件夹再套文件也不可以。(被这一规定差点搞哭了,文件死活提交不上去,提示什么干净的工作区)


4、手动war包直接部署
  • 在home文件夹下依次创建work/tomcat/两个文件夹。

  • 更改文件所属用户组:chgrp -R currentUser 文件夹名称

  • 更改文件所属用户:chown -R currentUser 文件夹名称

  • 部署tomcat的时候,由于没找见用命令安装的tomcat(汗),所以自己又下了一个压缩包,然后解压拷贝到刚建的tomcat文件夹底下,修改名称:mv srcfoldername myproject


  • 修改myroject/bin/底下catlina.sh文件:在文件前面添加如下代码:


  • JAVA_OPTS="-Dspring.profiles.active=local -server -XX:PermSize=128M -XX:MaxPermSize=256m -Xms128m -Xmx256m"

  • export CATALINA_PID="/home/work/tomcat/myproject/bin/tomcat.pid"


  • 修改myproject/conf/底下的server.xml文件中的端口号:

  •  

    connectionTimeout="20000"

  •  

    redirectPort="8303" />


  • 用idea将项目打成war包:build--->build artifacts---->all

  • remmina:左侧-->工具-->打开安全文件传输-->(上传本地war包assembly-->target-->项目-assembly.war)

  • 进入项目ROOT目录下执行(复制上传的war包到ROOT目录下):cp /home/user/myproject-assmbly.war ./

  • 解压war包:执行命令  :

  • unzip myproject-assmbly.war

  • 选择大写A回车,然后启动tomcat。

  • 结束。


5、下载源码,自动编译,生成war包。
  • 在home文件夹下创建sourcecode文件夹,进入sourcecode文件夹:git clone https://github.com/qq940328720/myproject.git

  • 进入myproject文件夹,用maven打包:mvn -X clean package

  •  

    这个可能会报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.5:test 

  • 改用命令跳过测试:mvn -X clean package -Dmaven.test.skip=true

  • 按照4的步骤,发布war包。


6、shell脚本自动更新打包发布。
  • 在home文件夹下创建deploy文件夹,进入deploy,创建文件:touch myproject.sh

  • 赋予文件可执行权限:chmod +x myproject.sh

  • 编辑文件:vi myprodect.sh 内容如下:

#!/bin/bash
#pull git code
sourcecodefile=myproject
if [ -d "/home/sourcecode/$sourcecodefile/" ];then
cd /home/sourcecode/$sourcecodefile/
git pull
echo "更新完成"
else
cd /home/sourcecode/
git clone https://github.com/qq940328720/$sourcecodefile.git
echo "创建完成"
fi
#maven clean package
cd /home/sourcecode/$sourcecodefile/
mvn -X clean package -Dmaven.test.skip=true
echo "打包结束"
if [ -f "/home/sourcecode/$sourcecodefile/$sourcecodefile-assembly/target/$sourcecodefile-assembly.war" ];then
cd /home/work/tomcat/$sourcecodefile/bin/
./shutdown.sh
echo "tomcat停止"
cd /home/work/tomcat/$sourcecodefile/webapps/ROOT
cp /home/sourcecode/$sourcecodefile/$sourcecodefile-assembly/target/$sourcecodefile-assembly.war ./
echo "拷贝war包完成"
jar -xvf $sourcecodefile-assembly.war
echo "war包解压完成"
cd /home/work/tomcat/$sourcecodefile/bin/
./startup.sh
echo "tomcat启动"
else
echo "打包失败"
fi
  • 保存退出。

  • 这个脚本刚开始学着这写,还有很多不完善的地方,以后还需要改进。

  • 执行脚本:./myproject.sh

  • 如果出现如下错误:


  • SLF4J: Class path contains multiple SLF4J bindings.

  • SLF4J: Found binding in [jar:file:/home/work/tomcat/myproject/webapps/ROOT/WEB-INF/lib/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

  • SLF4J: Found binding in [jar:file:/home/work/tomcat/myproject/webapps/ROOT/WEB-INF/lib/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

  • SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

  • Failed to instantiate [ch.qos.logback.classic.LoggerContext]


  • lib下面如果有相同的包的不同版本,启动tomcat会报错。暴力点,直接删掉lib文件夹,重新发布。

  • 战斗结束。


搞这一堆东西,有时候确实让人头大,只要坚持下去,多查资料,弄清出原理,再难也能掌握。


支持Ctrl+Enter提交
暂无留言,快抢沙发!