聲明:因?qū)儆谏a(chǎn)服務器鲸鹦,僅作操作記錄限佩。(部分涉及公司信息將替換或隱藏)
鏡像備份
由于使用阿里云的服務器故使用了鏡像備份膏潮,具體操作很簡單,可阿里云查看即可掌腰。
遷移前準備
因使用舊鏡像狰住,故僅需測試所需軟件即可。
SSH工具:SecureCRT齿梁、SecureFX(可替換其他工具催植,Puttty、SSH Secure)
應用:java(1.6士飒、1.7查邢、1.8)、tomcat(8.0.50)酵幕、nginx扰藕、redis、LibreOffice芳撒、cronolog邓深、ELK等未桥。(本人其他文章有另外介紹)
阿里云安全組策略:入棧規(guī)則:正常開放80、443端口即可芥备。出站規(guī)則根據(jù)實際需求冬耿,通常默認全開。
遷移
阿里云新服務器使用之前備份的鏡像即可萌壳,只需等待一定的時間即可登錄新的服務器了亦镶。
檢查iptables狀態(tài)
如果無安裝可使用:yum install -y iptables安裝或yum update iptables 升級。
設置iptables規(guī)則
#查看iptables現(xiàn)有規(guī)則
iptables -L -n
#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
#清空所有默認規(guī)則
iptables -F
#清空所有自定義規(guī)則
iptables -X
#所有計數(shù)器歸0
iptables -Z
#允許來自于lo接口的數(shù)據(jù)包(本地訪問)
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
#允許接受本機請求之后的返回數(shù)據(jù) RELATED,是為FTP設置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丟棄
iptables -P INPUT DROP
#所有出站一律綠燈
iptables -P OUTPUT ACCEPT
#所有轉發(fā)一律丟棄
iptables -P FORWARD DROP
保存iptables規(guī)則
service iptables save
注:也可以修改/etc/sysconfig/iptables文件袱瓮,以上規(guī)則可以根據(jù)實際需要開放缤骨。
重啟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ù)據(jù)尺借。
創(chuàng)建用戶組绊起,及用戶組標識號(非系統(tǒng)工作組大于等于500,系統(tǒng)工作組的組小于500)燎斩。
創(chuàng)建用戶
useradd –d /usr/tomcat -m tomcat -g tomcat
僅作為實例虱歪。
創(chuàng)建tomcat用戶屬于tomcat組,并且指定home目錄為/usr/tomcat 栅表,無則創(chuàng)建該目錄笋鄙。
可直接用root用戶設置用戶密碼.
passwd tomcat (根據(jù)步驟輸入兩次即可)
文件授權
創(chuàng)建相應文件夾或已有的文件夾
mkdir /usr/tomcat
更改文件夾和文件擁有者
chown -R 777 tomcat:tomcat /usr/tomcat
授權tomcat用戶組下tomcat用戶,/usr/tomcat下所有文件及文件夾的所有權限(777谨读,讀局装、寫、執(zhí)行)劳殖,-R為遍歷根目錄铐尚。
注:需在/usr/tomcat/XXX/bin目錄下為*.sh執(zhí)行授權 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等有其他文章專門介紹。
因遷移時落竹,已經(jīng)具備java環(huán)境故此處默認已有泌霍,linux配置java環(huán)境也很簡單可自行查閱、部署述召。
部署方式1
官網(wǎng)下載相應版本即可:下載地址 朱转。 推薦從官網(wǎng)下載相應版本中的最新小版本蟹地,因官方會修復一些已知的漏洞后發(fā)布出來且刪除舊的有漏洞的版本。
也可以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端口根據(jù)實際需求即可怪与。此處部署是帶證書的,所以需要增加一條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用戶無法監(jiān)聽1024以下的端口窿吩。reloadable線上環(huán)境記得設置成false茎杂。
當然错览,規(guī)范肯定是以其他用戶啟動的纫雁,可以使用iptables做端口轉發(fā)的策略繞過此限制。
如80-8081 443-8443 倾哺;
Iptables需增加端口轉發(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實例轧邪,通過修改配置文件、環(huán)境變量羞海、腳本來實現(xiàn)忌愚。(開發(fā)工具也是使用此形式實現(xiàn)的。)
官網(wǎng)下載相應版本即可:下載地址 却邓。 推薦從官網(wǎng)下載相應版本中的最新小版本硕糊,因官方會修復一些已知的漏洞后發(fā)布出來且刪除舊的有漏洞的版本。
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:啟動腳本
#!/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 "當前配置目錄:$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 執(zhí)行.."
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包。
后續(xù)部署時將當前模版解壓后修改server.xml的端口漓踢、應用地址即可牵署。
優(yōu)點:tomcat版本升級時只需升級tomcat文件即可,不用每個應用都去修改喧半。
備注:個人博客同步至簡書奴迅。