1、部署时有用到rsync命令,如系统没有安装,通过命令yum install rsync。
2、远程部署需要通过ssh连接。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。
ssh有一套很有用的工具,其中的ssh-keygen可以用来生成private和public密钥文件.将生成的public密钥文件内容拷贝到远程机器的authorized_keys文件后,可以使ssh到另外一台机器的登陆不用密码.具体方法如下.
1) 在本地机器中的~/.ssh/目录下执行下命令,ssh-keygen -t dsa 或者ssh-keygen -t rsa
将生成两个文件,id_dsa和id_dsa.pub. 或者 id_rsa和id_rsa.pub
2) 将公钥文件id_dsa.pub或者id_rsa.pub的内容添加到远程机器的~/.ssh/authorized_keys文件中.
用 ssh-copy-id 把公钥复制到远程主机上如:ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-server
3) 直接登录远程服务器
ssh remote-server 注:不提示密码即设置成功。
3、编写远程服务器启动脚本tomcat-remote-start.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCE=$2
SSH="ssh -o StrictHostKeyChecking=no"
echo "start tomcat $TARGET_INSTANCE on $TARGET_SERVER"
$SSH $TARGET_SERVER "/opt/app/bin/tomcat-$TARGET_INSTANCE-start.sh"
4、编写远程服务器停止脚本tomcat-remote-start.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCE=$2
SSH="ssh -o StrictHostKeyChecking=no"
echo "stop tomcat $TARGET_INSTANCE on $TARGET_SERVER"
$SSH $TARGET_SERVER "/opt/app/bin/tomcat-$TARGET_INSTANCE-stop.sh"
5、编写远程部署脚本deploy-tomcat.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCES=$2
WAR_FILE=$3
BASE_DIR=$(dirname $0)
if [ "$4" != "--skip-stop" ] ; then
for INSTANCE in $TARGET_INSTANCES;
do
$BASE_DIR/tomcat-remote-stop.sh $TARGET_SERVER $INSTANCE
done
fi
echo "push $WAR_FILE"
rsync -avc $WAR_FILE $TARGET_SERVER:/opt/app/tomcat/$TARGET_INSTANCES/webapps/
for INSTANCE in $TARGET_INSTANCES;
do
$BASE_DIR/tomcat-remote-start.sh $TARGET_SERVER $INSTANCE
done
6、编写调用脚本deploy-local-test.sh
#!/bin/sh
/opt/app/bin/deploy-tomcat.sh remote-server 'local-test' /opt/app/jenkins/workspace/local-test/target/test.war
在Jenkins上调用deploy-local-test.sh,即可实现编译完自动远程部署。
2、远程部署需要通过ssh连接。
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。
ssh有一套很有用的工具,其中的ssh-keygen可以用来生成private和public密钥文件.将生成的public密钥文件内容拷贝到远程机器的authorized_keys文件后,可以使ssh到另外一台机器的登陆不用密码.具体方法如下.
1) 在本地机器中的~/.ssh/目录下执行下命令,ssh-keygen -t dsa 或者ssh-keygen -t rsa
将生成两个文件,id_dsa和id_dsa.pub. 或者 id_rsa和id_rsa.pub
2) 将公钥文件id_dsa.pub或者id_rsa.pub的内容添加到远程机器的~/.ssh/authorized_keys文件中.
用 ssh-copy-id 把公钥复制到远程主机上如:ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-server
3) 直接登录远程服务器
ssh remote-server 注:不提示密码即设置成功。
3、编写远程服务器启动脚本tomcat-remote-start.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCE=$2
SSH="ssh -o StrictHostKeyChecking=no"
echo "start tomcat $TARGET_INSTANCE on $TARGET_SERVER"
$SSH $TARGET_SERVER "/opt/app/bin/tomcat-$TARGET_INSTANCE-start.sh"
4、编写远程服务器停止脚本tomcat-remote-start.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCE=$2
SSH="ssh -o StrictHostKeyChecking=no"
echo "stop tomcat $TARGET_INSTANCE on $TARGET_SERVER"
$SSH $TARGET_SERVER "/opt/app/bin/tomcat-$TARGET_INSTANCE-stop.sh"
5、编写远程部署脚本deploy-tomcat.sh
#!/bin/sh
TARGET_SERVER=$1
TARGET_INSTANCES=$2
WAR_FILE=$3
BASE_DIR=$(dirname $0)
if [ "$4" != "--skip-stop" ] ; then
for INSTANCE in $TARGET_INSTANCES;
do
$BASE_DIR/tomcat-remote-stop.sh $TARGET_SERVER $INSTANCE
done
fi
echo "push $WAR_FILE"
rsync -avc $WAR_FILE $TARGET_SERVER:/opt/app/tomcat/$TARGET_INSTANCES/webapps/
for INSTANCE in $TARGET_INSTANCES;
do
$BASE_DIR/tomcat-remote-start.sh $TARGET_SERVER $INSTANCE
done
6、编写调用脚本deploy-local-test.sh
#!/bin/sh
/opt/app/bin/deploy-tomcat.sh remote-server 'local-test' /opt/app/jenkins/workspace/local-test/target/test.war
在Jenkins上调用deploy-local-test.sh,即可实现编译完自动远程部署。