==共耗時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目錄(按實際情況配置)
報錯如下:
猜測是漏了配置文件
有時間再繼續探索