在阿里云ECS上安装Docker、Tomcat并部署官网(无后端交互)
在阿里云上的ECS服務器配置
ECS 1核1G,1M帶寬
Ubantu 16
Docker
Tomcat 9
有公網IP,配置安全策略,沒有購買RDS,購買完成后,即設置了賬號、密碼,遠程連接工具用的是putty,文件傳輸工具用的是FileZilla,官網用的是Bootstrap,VS?code,并安裝了browser插件
以下是具體操作步驟,及遇到的問題和解決方式:(Ubantu和Centos大家注意區分,別搞混了)
1.首先打開終端窗口輸入命令,更新包信息:
sudo apt-get update
?
2.安裝CA證書,支持Https:
sudo apt-get installsudo apt-get install apt-transport-httpssudo apt-get install ca-certificatessudo apt-get install curlsudo apt-get install software-properties-common3.添加一個官方的GPG密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.驗證密鑰指紋:
sudo apt-key fingerprint 0EBFCD88
輸出的是:9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88? 即正確。
?
5.下載amd64的官方最新穩定版Docker:
sudo add-apt-repository?"deb [arch=amd64] https://download.docker.com/linux/ubuntu??$(lsb_release -cs) ?stable"
?
出現如下提示,則正確:
6.再次更新包信息:
sudo apt-get update
?
7.安裝Docker CE版本:因為已修改鏡像地址為阿里云,所以可以直接使用下述方式,如果未修改,命令為 sudo apt-get install docker-ce
sudo apt-get install docker
8.創建一個docker組,防止每次都要用sudo命令執行docker命令:
sudo groupadd docker
9.將該用戶加入到組內:${USER}?不用修改,是直接取值的寫法
sudo gpasswd -a ${USER} docker
10.重啟docker:
sudo service docker restart
執行到此步時,出現以下報錯:
執行以下語句:
apt install docker.io
會顯示安裝過程,并可明顯看到成功與否,基本都是成功的,然后重新執行? ?sudo service docker restart?
11.切換當前會話到新的組:
newgrp - docker
?
2. 安裝Tomcat容器
2.1 查找 tomcat 信息
docker search tomcat
2.2 下載下來官方的鏡像Starts最高的那個
docker pull ?docker.io/tomcat
?
2.3 查看docker所有的鏡像
docker?images
?
2.4啟動tomcat
docker run -p 8080:8080 docker.io/tomcat
此處的兩個8080分別說明下:?
-p?后面的是服務器端口,docker前面的是容器內端口,此處的寫法是進行對應,也可不一樣
成功啟動后,發現無法正常訪問,此時進行如下操作:
查看當前的鏡像:? docker?images
猜測因為啟動了網絡,那么是否有可能是防火墻的原因,輸入 sudo ufw allow 8080,加入例外
再次打開瀏覽器訪問發現仍不能正常訪問
網上找了一下,說是有可能是安裝docker的時候,源文件有問題,因為之前配置過docker鏡像從阿里云鏡像獲取,故重新替換當前文件
1 更改apt源,更改前先對sources.list文件進行備分
命令行:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
修改sources.list文件
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
先把sources.list清空,然后把上述的10條復制進去,退出編輯后,保存、退出
點擊ESC,然后快捷鍵:SHIFT+冒號,退出編輯,輸入wq,保存、退出
2、更新apt源
命令行:sudo apt-get update
3、安裝Docker
命令行:sudo apt-get install docker.io
安裝完成后,需要重啟下系統。
sudo reboot
4、啟動docker
sudo service docker restart,如果未開啟的情況下,restart?改為? start
5、啟動Tomcat
docker run -p 8080:8080 docker.io/tomcat
啟動后,使用ECS外圍IP,:8080,可以正常訪問
接下來,還需要做的是,把使用Bootstrap做的官網靜態頁面,放到Tomcat中,因為沒后端代碼,所以不叫做發布
?
此處比較搞笑的一點是:想嘗試著做個鏡像,結果把Windows下Tomcat通過FileZilla傳輸到?Ubantu下,然后發現始終啟動不起了,馬失前蹄啊,其實問題的關鍵是局部替換,即把原始版本中Tomcat/webapps下的幾個文件夾全部刪除,改用我要替換的內容,此處還有一點要謹記的是,如果只是把如下的文件放置到webapps下,是不能直接訪問到的
其實大家可以類比下自己的項目,Tomcat本身的加載機制已經很完善和嚴謹,所以我沒必要怨懟,按規則做就好
我用website包了一層,放到webapps下
然后通過 FileZilla?直接傳輸到Ubantu的Tomcat/webapps下,重新查看當前的容器是否有在啟動
命令行:docker?ps -a,
如果只是?docker?ps,只會顯示當前運行中的容器,?加上? -a 把全部容器的狀態顯示出來,我們只需查看非exited?的就好,如果覺得不想看那么多,可以做下清理:
命令行:
#刪除所有未運行的容器(已經運行的刪除不了,未運行的就一起被刪除了)
sudo docker rm $(sudo docker ps -a -q)
做鏡像的話,阿里云上的容器鏡像服務,有比較專業的說明,還算比較容易操作
完成以上操作,我們打開瀏覽器訪問:
?
然后很高興的關閉了putty ,結果幾分鐘后刷新,發現又訪問不了了,查看當前運行中的容器,發現是空的,之前啟動的也已退出
分析了原因,原來是容器重啟后,Tomcat服務就不在了,這樣的話,不利于我們做官網部署,所以采用掛載的方式啟動
在?opt下新建單獨的目錄,用以單獨存放官網的靜態頁面,即上述所說的website,并放在 xxxx.net.cn,與tomcat/webapps對應起來,命令行如下:
docker run -d -v /opt/software/xxxx.net.cn:/usr/local/tomcat/webapps -p 8080:8080 docker.io/tomcat ?
-d? ?采用后臺方式,掛載啟動,因為我安裝Tomcat時,用的就是?docker.io/docker?方式
執行以上操作后,則可放心了,再者Ubantu本身也比較穩定,可以幾個月不用重啟服務了
?
在單獨做Tomcat鏡像的時候,用到的兩段命令行分享一下:
dockerFile
FROM ubuntu:16.04?
MAINTAINER cc-man
#上傳
ADD tomcat-website /opt/tomcat
COPY /run.sh /root/run.sh
RUN ?chmod 777 /root/run.sh
ENTRYPOINT ["/root/run.sh"]
?
?
run.sh
#!/bin/bash
sh /opt/tomcat/tomcat-website/bin/catalina.sh run
此處的tomcat-website是經過加工的Tomcat,即從鏡像倉庫中pull后,在把需要用的東西放到webapps下,然后再生成新的鏡像
?
以上是此次處理時的分享,希望對大家有所幫助
?
另外訪問時,還剩余幾個問題:
?
1、http訪問,需要加SSL證書,換成https安全訪問
2、IP跟域名要進行映射
3、在網站發布后,同步要進行備案操作,備案后要把備案信息按要求放置在頁面底部
以上三個問題,會單獨寫文章分享,阿里云的備案還是可以的,之前用過幾次,這次用的也是阿里云的
購買域名、網站備案、商標注冊都不錯,以下是我的域名米店,歡迎光臨選購:
https://mi.aliyun.com/shop/38495
目前已上架200多個域名
另外還有阿里云的優惠券,新老用戶需要的拿去:
https://chuangke.aliyun.com/invite?userCode=dansrwg4
總結
以上是生活随笔為你收集整理的在阿里云ECS上安装Docker、Tomcat并部署官网(无后端交互)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码质量随想录(五)注得多不如注得巧
- 下一篇: 可以响应各个方向CompoundDraw