阿里云生产服务器迁移及应用部署(tomcat容器及自定义shell脚本)

声明:因属于生产服务器,仅作操作记录。(部分涉及公司信息将替换或隐藏)

镜像备份

由于使用阿里云的服务器故使用了镜像备份,具体操作很简单,可阿里云查看即可。

迁移前准备

因使用旧镜像,故仅需测试所需软件即可。
SSH工具:SecureCRT、SecureFX(可替换其他工具,Puttty、SSH Secure)
应用:java(1.6、1.7、1.8)、tomcat(8.0.50)、nginx、redis、LibreOffice、cronolog、ELK等。(本人其他文章有另外介绍)

阿里云安全组策略:入栈规则:正常开放80、443端口即可。出站规则根据实际需求,通常默认全开。

迁移

阿里云新服务器使用之前备份的镜像即可,只需等待一定的时间即可登录新的服务器了。

检查iptables状态

如果无安装可使用:yum install -y iptables安装或yum update iptables 升级。

设置iptables规则

#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
#允许来自于lo接口的数据包(本地访问)
iptables -A INPUT -i lo -j ACCEPT
#开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#开放21端口(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#开放80端口(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#开放443端口(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律绿灯
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP

保存iptables规则

service iptables save

注:也可以修改/etc/sysconfig/iptables文件,以上规则可以根据实际需要开放。

重启iptables

service  iptables restart

角色创建

创建用户组

groupadd -g 500 tomcat
groupadd -g 501 nginx
groupadd -g 502 redis
groupadd -g 503 app

以上仅供参考,非实际数据。

创建用户组,及用户组标识号(非系统工作组大于等于500,系统工作组的组小于500)。

创建用户

useradd –d /usr/tomcat -m tomcat -g tomcat

仅作为实例。

创建tomcat用户属于tomcat组,并且指定home目录为/usr/tomcat ,无则创建该目录。
可直接用root用户设置用户密码.
passwd tomcat (根据步骤输入两次即可)

文件授权

创建相应文件夹或已有的文件夹

mkdir  /usr/tomcat

更改文件夹和文件拥有者

chown -R 777 tomcat:tomcat /usr/tomcat

授权tomcat用户组下tomcat用户,/usr/tomcat下所有文件及文件夹的所有权限(777,读、写、执行),-R为遍历根目录。

注:需在/usr/tomcat/XXX/bin目录下为*.sh执行授权 chmod u+x *.sh

安装软件

以安装Liberoffice为例。

以root安装则很简单

sudo yum install ./LibreOffice_4.x.x_Linux_x86_rpm/RPMS/*.rpm

以非root安装(推荐)

需要先Yum install授权,编辑/etc/sudoers。

vi /etc/sudoers

在root用户下面增加一条如以下示例

root ALL=(ALL) ALL
app ALL=(ALL) ALL

则可使用app用户安装所需软件,

yum install ./LibreOffice_5.x.x_Linux_x86_rpm/RPMS/*.rpm

部署应用

本文以tomcat为例,nginx、redis、oracle、cronolog、ELK等有其他文章专门介绍。

因迁移时,已经具备java环境故此处默认已有,linux配置java环境也很简单可自行查阅、部署。

部署方式1

官网下载相应版本即可:下载地址 。 推荐从官网下载相应版本中的最新小版本,因官方会修复一些已知的漏洞后发布出来且删除旧的有漏洞的版本。

也可以wget下载。

wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.tar.gz

然后解压即可

tar -xzvf apache-tomcat-8.0.53.tar.gz

修改./conf/server.xml 文件

vi ./conf/server.xml

修改Connector标签的port端口根据实际需求即可。此处部署是带证书的,所以需要增加一条Connector。因项目原因会屏蔽一些字眼。

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />
  <Connector URIEncoding="UTF-8" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="15" port="443" redirectPort="1889" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="keystore/www.xxx.com.jks" keystorePass="xxx" clientAuth="false" sslProtocol="TLS" ciphers="TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,SSL_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />
  <Engine defaultHost="localhost" name="localhost">
  <Host name="localhost" appBase="webapps" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/> 
    <Context docBase="/usr/local/webapps/example1" path="/example1" reloadable="false" />
    <Context docBase="/usr/local/webapps/example2" path="/example2" reloadable="false" />
  </Host>
</Engine>

注:以上示例需以root运行tomcat,因非root用户无法监听1024以下的端口。reloadable线上环境记得设置成false。

当然,规范肯定是以其他用户启动的,可以使用iptables做端口转发的策略绕过此限制。

如80-8081 443-8443 ;

Iptables需增加端口转发(80->8081/443->8443)
*nat 下面增加

-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
-A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

部署方式2(推荐)

此方式以一份tomcat实例,通过修改配置文件、环境变量、脚本来实现。(开发工具也是使用此形式实现的。)

官网下载相应版本即可:下载地址 。 推荐从官网下载相应版本中的最新小版本,因官方会修复一些已知的漏洞后发布出来且删除旧的有漏洞的版本。

wget下载。

wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.0.53/bin/apache-tomcat-8.0.53.tar.gz

然后解压即可

tar -xzvf apache-tomcat-8.0.53.tar.gz

然后编写如下脚本(仅作示例)

setenv : 用于配置环境变量

/bin/sh
TOMCAT_USER=tomcat
export JAVA_HOME=/usr/java/jdkxxx
export CATALINA_HOME=/usr/tomcat/apache-tomcat-xxx
export JAVA_OPTS="-server -XX:PermSize=128m -XX:MaxPermSize=256m -Xms512m -Xmx1024m"

starup:启动脚本

#!/bin/sh
export CATALINA_BASE=$(cd `dirname $0`; pwd)
. $CATALINA_BASE/setenv.sh $*
 
WHO=`whoami`
COUNT=$(ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'|wc -l)
 
if [[ $WHO == root ]];then
  echo "切换到 $TOMCAT_USER 执行.."
  su - $TOMCAT_USER -c "$CATALINA_BASE/startup.sh"
  #|awk '{printf "..."}END{print "Finished"}'
  exit 1;
  elif [[ $WHO == $TOMCAT_USER ]];then
  
  echo "*******************************************************"
  echo "当前配置目录:$CATALINA_BASE"
  echo "*******************************************************"
  if [[ $COUNT -ge 1 ]];then
  echo "服务正在运行,请先 shutdown."
  else
  $CATALINA_HOME/bin/catalina.sh start|awk '{printf "..."}END{print "启动完毕"}'
  if [[ $? == 0 ]];then
  echo "TOMCAT 启动成功 @$CATALINA_BASE"
  fi
  fi
  echo "进程信息:"
  ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'
  
  fi

shutdown:关闭脚本

 #!/bin/sh
 export CATALINA_BASE=$(cd `dirname $0`; pwd)
 . $CATALINA_BASE/setenv.sh $*
 
 WHO=`whoami`
 
 GetPid(){
 PS_ID=$(ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'|awk '{print $2}')
 }
 
 ShowPid(){
 echo "进程信息:"
 ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'
 }
 
 CountPid(){
 COUNT=$(ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'|wc -l)
 }
 
 StopTomcat(){
 STOP_RESULT=`$CATALINA_HOME/bin/catalina.sh stop >/dev/null 2>&1|grep "Connection Refused"|grep -v grep|wc -l`
 }
 
 if [[ $WHO == root ]];then
 echo "切换到 $TOMCAT_USER 执行.."
 su - $TOMCAT_USER -c "$CATALINA_BASE/shutdown.sh"
 exit 1;
 elif [[ $WHO == $TOMCAT_USER ]];then
 
CountPid
 
 if [[ $COUNT == "0" ]];then
 echo "服务没有启动."
 else
 
 ShowPid
 StopTomcat

 for((i=1;i<=30;i++));do
 for((j=1;j<=5;j++));do
 sleep 0.5
 printf "."
 done
 CountPid
 if [[ $COUNT -gt 0 ]];then
 StopTomcat
 elif [[ $COUNT -eq 0 ]];then
 break;
 fi
 done
 for((i=1;i<=120;i++));do
 if [[ $COUNT -gt 0 ]];then
 sleep 0.5 
 printf ".."
 CountPid 
 fi
 done
 #如果超时,直接杀死
 if [[ $COUNT -gt 0 ]];then
 GetPid
 kill -9 $PS_ID
 fi
 if [[ $? == 0 ]];then
 echo "TOMCAT 服务已停止 @$CATALINA_BASE"
 fi
 fi 
 fi

jc:查看当前tomcat进程

 #!/bin/sh
 export CATALINA_BASE=$(cd `dirname $0`; pwd)
 . $CATALINA_BASE/setenv.sh $*
 
 echo "进程信息:"
 ps -ef|grep "^$TOMCAT_USER"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'

rz:查看日志脚本

 #!/bin/sh
 
 CATALINA_BASE=$(cd `dirname $0`; pwd)
 tail -n 100 -f $CATALINA_BASE/logs/catalina.out

相应的脚本编写完后进行打包,制作成模版,部署其他应用时直接使用,修改部分配置信息文件后即可。

 tar -zcvf tomcat-tmpl.tar.gz --exclude=tomcat/lib  tomcatxx

注:排除了lib包,因所有tomcat示例都共享这个lib的jar包。

后续部署时将当前模版解压后修改server.xml的端口、应用地址即可。

优点:tomcat版本升级时只需升级tomcat文件即可,不用每个应用都去修改。

备注:个人博客同步至简书。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容