在另一篇文章中,已經講述了怎麼在ECS(Ubantu版)上安裝docker和Tomcat,并順利啟動和通路,該篇文章重點說明如何調整Tomcat配置,與域名映射一緻,并采用HTTPS通路
一、進行ECS伺服器域名備案
操作步驟:開通ECS伺服器後,進入備案管理,先申請備案服務号,再到ICP備案中,按要求填寫有關資訊,并填寫要備案的域名,例如:www.xxxx.net.cn
如下圖所示:

後續會按階段送出和驗證一些資訊,如手機核實法人及網站負責人,上傳備案委托書、備案幕布拍照等,初審通過後,送出到信管局後,需要等17天左右
二、修改Tomcat的配置資訊
進入tomcat容器
docker exec -it 容器名字或者id /bin/bash
如下圖所示,先使用 docker ps 檢視容器名字、ID,然後使用上述指令
輸入vim指令,顯示該指令未找到,先安裝
指令行: sudo apt-get install vim,如下圖所示,先安裝,再重新進入Tomcat容器
重新進入還是不行,網上搜尋了下,對鏡像有了更深入的了解,鏡像就是一個靜态的安裝包,而容器才是動态的可用服務,如果我們使用vim在容器中修改檔案,鏡像并沒有改變,如果再次啟動容器,又是按之前的鏡像啟動,原來修改就又恢複了,這種辦法不是解決問題的根本辦法,那麼參照挂載的方式,隻有把容器中的鏡像配置檔案,複制到Ubantu的檔案夾中,然後進行修改,修改完成後,再進行配置檔案挂載,則可以從根本上解決問題,以下是具體的操作步驟:
1、使用cp的指令,進行配置檔案複制:
指令行:docker ps 檢視目前的容器,擷取 {容器ID},放置到下一個指令行中替換 {容器ID}
指令行:docker cp {容器ID}:/user/local/tomcat/conf /opt/software/tomcat-conf
兩個部分說明:
/user/local/tomcat/conf 為Tomcat容器的Tomcat鏡像的位置
/opt/software/tomcat-conf 為建立立存放Tomcat配置檔案的位置
以上兩端路徑,中間使用空行隔開
2、然後使用FileZilla 連接配接ECS的Ubantu伺服器,可以看到在對應路徑下,已經有複制過來的配置檔案
此處主要對server.xml進行修改,故把server.xml複制到本地,然後進行修改
3、server.xml的修改内容包括三個部分:
(1)8080端口設定為80端口,直接映射80端口,為了省略浏覽器通路時候輸入端口号:8080
為增加的一行,其他的均為直接在原檔案位置做修改
(3)配置HTTPS通路
4、配置SSL證書,開啟https通路
找到
  Â
    Â
     CLIENT-CERT
     Client Cert Users-only Area
SSL
/*
CONFIDENTIAL
6、待以上server.xml和web.xml配置調整完成後,把server.xml、web.xml、pfx證書等三個檔案,使用FileZilla傳輸到/opt/software/tomcat-conf 檔案夾中替換目前檔案,如下圖所示:
7、把/opt/software/tomcat-conf 和 /user/local/tomcat/conf 進行挂載,并啟動Tomcat
docker run -d -v /opt/software/tomcat-conf:/usr/local/tomcat/conf -p 80:80 docker.io/tomcat
docker run -d -p 443:443 docker.io/tomcat
8、重新啟動容器,使用浏覽器通路驗證
目前備案正常進行中,進行上述配置後,域名映射和解析均為完成成功,隻能等備案結果
三、iptables開放端口
1、# 檢查并安裝
檢查
sudo whereis iptables
安裝
sudo apt-get install iptables
檢視防火牆配置
/sbin/iptables -L -n
2、建立規則檔案
建立目錄和檔案
mkdir /etc/iptables & vi /etc/iptables/rules.conf
加入内容并儲存:
*filter
預設INPUT 的政策是DROP 即拒絕所有的外來請求
:INPUT DROP [0:0]
一般情況下用不到FORWARD 可以配置為預設DROP
:FORWARD DROP [0:0]
本機對其他機器通路設定為預設ACCEPT
:OUTPUT ACCEPT [0:0]
允許已經建立和相關的連接配接
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
允許icmp協定(即ping)
-A INPUT -p icmp -j ACCEPT
允許回環請求
-A INPUT -i lo -j ACCEPT
開放端口22 80(如果要開放其他端口 繼續添加開放規則即可)
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
COMMIT
按ESC鍵退出輸入狀态,SHIFT+冒号,彈出提示,輸入 wq,退出并儲存
3、使防火牆生效:
iptables-restore < /etc/iptables/rules.conf
4、建立檔案,添加以下内容,使防火牆開機啟動
vi /etc/network/if-pre-up.d/iptables
!/bin/bash
4、添加執行權限:
chmod +x /etc/network/if-pre-up.d/iptables
5、檢視規則是否生效:
iptables -L -n
6、在關閉容器後,出現如下問題:
按上圖所示,出現錯誤資訊為:
Error response from daemon: driver failed programming external connectivity on endpoint zealous_volhard (e4ebc07db12c56abfa13505e1bbd3b5462102b0864cd0a8f1b26a0a0361cd9b8): (iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 172.17.0.2 --dport 80 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1))
該問題的解決辦法為:重新開機docker服務,即可OK,如上圖在錯誤資訊下的操作
待備案成功後,在進行後續操作