企業級自動化部署方案——ansible實現tomcat自動安裝和配置

来源:https://www.cnblogs.com/zhaoya2019/archive/2020/03/30/12600086.html
-Advertisement-
Play Games

==共耗時10多個小時== 思路一 總體設計 ansible playbook目錄結構 入口文件 執行與結果 實現過程問題記錄 tomcat應用程式是root用戶啟動的,root用戶啟動tomcat有一個嚴重的問題,那就是tomcat具有root許可權,這意味著你的任何一個頁面腳本(html/js)都 ...


共耗時10多個小時

思路一

總體設計

在這裡插入圖片描述

ansible-playbook目錄結構

[root@ansible ~]# tree /etc/ansible/roles/tomcat
/etc/ansible/roles/tomcat
├── files
│   ├── catalina.sh
│   ├── context.xml
│   └── setenv.sh
├── handlers
│   └── main.yaml
├── tasks
│   ├── install_jdk.yaml
│   ├── install_tomcat.yaml
│   └── main.yaml
├── templates
│   ├── catalina.sh
│   ├── server.xml
│   ├── tomcat.service
│   └── tomcat-users.xml
└── vars
    └── main.yaml

入口文件

[root@ansible ~]# ll /etc/ansible/work_dir/tomcat.yaml
-rw-r--r-- 1 root root 55 Mar 29 19:58 /etc/ansible/work_dir/tomcat.yaml

執行與結果

[root@ansible work_dir]# pwd
/etc/ansible/work_dir
[root@ansible work_dir]# ansible-playbook tomcat.yaml

在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

實現過程問題記錄

tomcat應用程式是root用戶啟動的,root用戶啟動tomcat有一個嚴重的問題,那就是tomcat具有root許可權,這意味著你的任何一個頁面腳本(html/js)都具有root許可權,所以可以輕易地用頁面腳本修改整個硬碟里的文件,非常危險。

[root@cilent apache-tomcat-8.5.53]# ll tomcat.pid
-rw-r----- 1 root root 6 Mar 30 13:47 tomcat.pid

嘗試解決

1.TOMCAT_USER=tomcat

[root@cilent ~]# grep "&& TOMCAT_USER" /usr/local/apache-tomcat-8.5.53/bin/daemon.sh
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat

搜索到的文章大多都是這樣解決,但在CentOS7+Tomcat8上不適用

2.重寫startup.sh和shutdown.sh腳本
思路:啟動和關閉Tomcat應用程式的時候切換到tomcat用戶執行
報錯如下:

[tomcat@cilent ~]# systemctl restart nginx
==== AUTHENTICATING FOR org.freedesktop.systemdl.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root

3.解決成功
yum安裝了tomcat,有系統標準啟動方式,查看其配置文件找到瞭解決辦法,tomcat一共折騰了10幾個小時
在tomcat.service添加個 User=tomcat 就好了

[root@cilent apache-tomcat-8.5.53]# ll tomcat.pid
-rw-r----- 1 tomcat tomcat 6 Mar 30 17:38 tomcat.pid

其他問題記錄

1.linux下部署tomcat ,啟動和停止分別使用startup.sh和shutdown.sh,它們都會調用catalina.sh,進而調用到setenv.sh
2.配置管理用戶conf/tomcat-users.xml

<tomcat-users>
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui" />
</tomcat-users>

3.訪問Manager App 403 Access Denied
搜索的文章都只提到了在tomcat-users.xml里添加上面的語句,無法解決
通過403頁面的官方文檔,找到解決辦法

By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Manager App's context.xml file

#cat webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>

這段代碼的作用是限制來訪IP,127.d+.d+.d+|::1|0:0:0:0:0:0:0:1 是正則表達式,表示IPv4和IPv6的本機環回地址,所以其他主機無法訪問

修改為所有人都可以訪問 allow="^.*$"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+"

思路二(失敗)

yum安裝了tomcat,需要配置JAVA變數,有系統標準啟動方式,所以想能不能仿照其配置文件進行ansible自動安裝配置

配置了JAVA變數,複製了配置文件/etc/tomcat,/usr/libexec/tomcat目錄(按實際情況配置)
在這裡插入圖片描述報錯如下:
在這裡插入圖片描述猜測是漏了配置文件


有時間再繼續探索


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • TerminalMACS(Terminal Manager And Check System) 遠程終端管理和檢測系統 本文同步更新地址:https://dotnet9.com/11429.html 一、本系統可監控多種終端資源: 移動端 Android iOS PC端 Windows Linux ...
  • 一、引言 RabbitMQ是Rabbit Message Queue的簡寫,但不能僅僅理解其為消息隊列,消息代理更合適。RabbitMQ是一個由 Erlang 語言開發的AMQP(高級消息隊列協議)的開源實現,其內部結構如下: RabbitMQ作為一個消息代理,主要和消息打交道,負責接收並轉發消息。 ...
  • 本文主要是講解stopwatch對程式運行時間的準確測量 僅僅介紹裡面的StartNew()方法,Restart()方法和ElapsedMilliseconds { get;}屬性 public void StartNew():作用是對新的 System.Diagnostics.Stopwatch ...
  • 在上篇文章中我們已經知道了多線程是什麼了,那麼它到底可以幹嘛呢?這裡特別聲明一個前面的委托沒看的同學可以到上上上篇博文查看,因為多線程要經常使用到委托。源碼 一、非同步、同步 1.同步(在計算的理解總是要你措不及防,同步當線程做完一件事情之後,才會執行後續動作),同步方法慢,只有一個線程執行,非同步方法 ...
  • 文件類型說明: ls –l顯示文件詳細信息中: 說明:10個字元,第一個字元表示文件類型,後面9個字元表示文件許可權。 訪問許可權:可讀(r)、可寫(w)和可執行(x)。 用戶級別:文件擁有者(u)、所屬的用戶組(g)和系統中的其他用戶(o)。 第一個字元顯示文件的類型如下: “-”表示普通文件。 “d ...
  • (1) ls(list,列表) 作用:使用列表把當前文件夾下所有文件顯示出來 ls -a 顯示所有文件,包括隱藏文件(以“.”開頭的文件) ls -l 詳細信息顯示文件 ls -a -l ls -l -a ls -la (2) cd (change directory,更改目錄) 作用:用來切換目錄 ...
  • 不知道大家接觸 Linux 系統有多久了,可曾瞭解過 Linux 中有哪些特殊的字元呢?其實啊,那些特殊字元都大有用處呢,今天的文章就給大家簡單地科普一下 Linux 中你需要瞭解的 15 個特殊字元,想學或剛學 Linux 的小伙伴趕緊上車了為! ~ 主目錄 這個波浪號 ~ 指的是 主目錄 ,也就 ...
  • 1. 查看當前kernel版本 2. 查看已安裝版本 3. 查看可升級kernel版本 4. 升級kernel版本 5. 刪除舊的內核 方法一:安裝yum utls: 設置你想要保留多少舊的內核,比如我想保留兩個: 方法二:直接刪除對應版本 6. 設置永久的內核安裝數量 設置installonly_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...