阿里云生產(chǎn)服務(wù)器遷移及應(yīng)用部署(tomcat容器及自定義shell腳本)

聲明:因?qū)儆谏a(chǎn)服務(wù)器,僅作操作記錄。(部分涉及公司信息將替換或隱藏)

鏡像備份

由于使用阿里云的服務(wù)器故使用了鏡像備份,具體操作很簡(jiǎn)單,可阿里云查看即可。

遷移前準(zhǔn)備

因使用舊鏡像,故僅需測(cè)試所需軟件即可。
SSH工具:SecureCRT、SecureFX(可替換其他工具,Puttty、SSH Secure)
應(yīng)用:java(1.6、1.7、1.8)、tomcat(8.0.50)、nginx、redis、LibreOffice、cronolog、ELK等。(本人其他文章有另外介紹)

阿里云安全組策略:入棧規(guī)則:正常開放80、443端口即可。出站規(guī)則根據(jù)實(shí)際需求,通常默認(rèn)全開。

遷移

阿里云新服務(wù)器使用之前備份的鏡像即可,只需等待一定的時(shí)間即可登錄新的服務(wù)器了。

檢查iptables狀態(tài)

如果無(wú)安裝可使用:yum install -y iptables安裝或yum update iptables 升級(jí)。

設(shè)置iptables規(guī)則

#查看iptables現(xiàn)有規(guī)則
iptables -L -n
#先允許所有,不然有可能會(huì)杯具
iptables -P INPUT ACCEPT
#清空所有默認(rèn)規(guī)則
iptables -F
#清空所有自定義規(guī)則
iptables -X
#所有計(jì)數(shù)器歸0
iptables -Z
#允許來(lái)自于lo接口的數(shù)據(jù)包(本地訪問(wèn))
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
#允許接受本機(jī)請(qǐng)求之后的返回?cái)?shù)據(jù) RELATED,是為FTP設(shè)置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丟棄
iptables -P INPUT DROP
#所有出站一律綠燈
iptables -P OUTPUT ACCEPT
#所有轉(zhuǎn)發(fā)一律丟棄
iptables -P FORWARD DROP

保存iptables規(guī)則

service iptables save

注:也可以修改/etc/sysconfig/iptables文件,以上規(guī)則可以根據(jù)實(shí)際需要開放。

重啟iptables

service  iptables restart

角色創(chuàng)建

創(chuàng)建用戶組

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

以上僅供參考,非實(shí)際數(shù)據(jù)。

創(chuàng)建用戶組,及用戶組標(biāo)識(shí)號(hào)(非系統(tǒng)工作組大于等于500,系統(tǒng)工作組的組小于500)。

創(chuàng)建用戶

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

僅作為實(shí)例。

創(chuàng)建tomcat用戶屬于tomcat組,并且指定home目錄為/usr/tomcat ,無(wú)則創(chuàng)建該目錄。
可直接用root用戶設(shè)置用戶密碼.
passwd tomcat (根據(jù)步驟輸入兩次即可)

文件授權(quán)

創(chuàng)建相應(yīng)文件夾或已有的文件夾

mkdir  /usr/tomcat

更改文件夾和文件擁有者

chown -R 777 tomcat:tomcat /usr/tomcat

授權(quán)tomcat用戶組下tomcat用戶,/usr/tomcat下所有文件及文件夾的所有權(quán)限(777,讀、寫、執(zhí)行),-R為遍歷根目錄。

注:需在/usr/tomcat/XXX/bin目錄下為*.sh執(zhí)行授權(quán) chmod u+x *.sh

安裝軟件

以安裝Liberoffice為例。

以root安裝則很簡(jiǎn)單

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

以非root安裝(推薦)

需要先Yum install授權(quán),編輯/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

部署應(yīng)用

本文以tomcat為例,nginx、redis、oracle、cronolog、ELK等有其他文章專門介紹。

因遷移時(shí),已經(jīng)具備java環(huán)境故此處默認(rèn)已有,linux配置java環(huán)境也很簡(jiǎn)單可自行查閱、部署。

部署方式1

官網(wǎng)下載相應(yīng)版本即可:下載地址 。 推薦從官網(wǎng)下載相應(yīng)版本中的最新小版本,因官方會(huì)修復(fù)一些已知的漏洞后發(fā)布出來(lái)且刪除舊的有漏洞的版本。

也可以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標(biāo)簽的port端口根據(jù)實(shí)際需求即可。此處部署是帶證書的,所以需要增加一條Connector。因項(xiàng)目原因會(huì)屏蔽一些字眼。

<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運(yùn)行tomcat,因非root用戶無(wú)法監(jiān)聽(tīng)1024以下的端口。reloadable線上環(huán)境記得設(shè)置成false。

當(dāng)然,規(guī)范肯定是以其他用戶啟動(dòng)的,可以使用iptables做端口轉(zhuǎn)發(fā)的策略繞過(guò)此限制。

如80-8081 443-8443 ;

Iptables需增加端口轉(zhuǎn)發(fā)(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實(shí)例,通過(guò)修改配置文件、環(huán)境變量、腳本來(lái)實(shí)現(xiàn)。(開發(fā)工具也是使用此形式實(shí)現(xiàn)的。)

官網(wǎng)下載相應(yīng)版本即可:下載地址 。 推薦從官網(wǎng)下載相應(yīng)版本中的最新小版本,因官方會(huì)修復(fù)一些已知的漏洞后發(fā)布出來(lái)且刪除舊的有漏洞的版本。

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 : 用于配置環(huán)境變量

/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:?jiǎn)?dòng)腳本

#!/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 執(zhí)行.."
  su - $TOMCAT_USER -c "$CATALINA_BASE/startup.sh"
  #|awk '{printf "..."}END{print "Finished"}'
  exit 1;
  elif [[ $WHO == $TOMCAT_USER ]];then
  
  echo "*******************************************************"
  echo "當(dāng)前配置目錄:$CATALINA_BASE"
  echo "*******************************************************"
  if [[ $COUNT -ge 1 ]];then
  echo "服務(wù)正在運(yùn)行,請(qǐng)先 shutdown."
  else
  $CATALINA_HOME/bin/catalina.sh start|awk '{printf "..."}END{print "啟動(dòng)完畢"}'
  if [[ $? == 0 ]];then
  echo "TOMCAT 啟動(dòng)成功 @$CATALINA_BASE"
  fi
  fi
  echo "進(jìn)程信息:"
  ps -ef|grep "^$WHO"|grep $JAVA_HOME|grep $CATALINA_HOME|grep "$CATALINA_BASE "|grep -v 'grep'
  
  fi

shutdown:關(guān)閉腳本

 #!/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 "進(jìn)程信息:"
 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 執(zhí)行.."
 su - $TOMCAT_USER -c "$CATALINA_BASE/shutdown.sh"
 exit 1;
 elif [[ $WHO == $TOMCAT_USER ]];then
 
CountPid
 
 if [[ $COUNT == "0" ]];then
 echo "服務(wù)沒(méi)有啟動(dòng)."
 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
 #如果超時(shí),直接殺死
 if [[ $COUNT -gt 0 ]];then
 GetPid
 kill -9 $PS_ID
 fi
 if [[ $? == 0 ]];then
 echo "TOMCAT 服務(wù)已停止 @$CATALINA_BASE"
 fi
 fi 
 fi

jc:查看當(dāng)前tomcat進(jìn)程

 #!/bin/sh
 export CATALINA_BASE=$(cd `dirname $0`; pwd)
 . $CATALINA_BASE/setenv.sh $*
 
 echo "進(jìn)程信息:"
 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

相應(yīng)的腳本編寫完后進(jìn)行打包,制作成模版,部署其他應(yīng)用時(shí)直接使用,修改部分配置信息文件后即可。

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

注:排除了lib包,因所有tomcat示例都共享這個(gè)lib的jar包。

后續(xù)部署時(shí)將當(dāng)前模版解壓后修改server.xml的端口、應(yīng)用地址即可。

優(yōu)點(diǎn):tomcat版本升級(jí)時(shí)只需升級(jí)tomcat文件即可,不用每個(gè)應(yīng)用都去修改。

備注:個(gè)人博客同步至簡(jiǎn)書。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容