我在 Ubuntu 17.04 上安装了 Tomcat 8.5.23。一切正常,但无法登录管理器/主机管理器。
我愿意tomcat 组和tomcat 用户
groupadd tomcat
useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
下载 Tomcat
cd /opt/
wget www-eu.apache.org/dist/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
提取+重命名目录
tar -xzvf apache-tomcat-8.5.6.tar.gz
mv apache-tomcat-8.5.6 tomcat
更改 tomcat 所有者目录
chown -hR tomcat:tomcat tomcat
chmod +x /opt/tomcat/bin/
编辑 .bashrc
vim ~/.bashrc
粘贴配置行并重新加载:
export CATALINA_HOME=/opt/tomcat
source ~/.bashrc
测试 Tomcat:
$CATALINA_HOME/bin/startup.sh
我得到了 Tomcat 主页
http://localhost:8080/
现在我将 Apache 设置为服务:
cd /etc/systemd/system/
vim tomcat.service
我的 tomcat.service 文件如下所示:
[Unit]
Description=Apache Tomcat 8 Servlet Container
After=syslog.target network.target
[Service]
User=tomcat
Group=tomcat
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
重新加载系统守护进程并启动 Tomcat:
systemctl daemon-reload
systemctl start tomcat
systemctl enable tomcat
现在当我输入
systemctl status tomcat
再次打印 Tomcat 状态:
● tomcat.service - Apache Tomcat 8 Servlet Container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2017-10-17 13:54:04 CEST; 11min ago
Process: 3521 ExecStop=/opt/tomcat/bin/shutdown.sh (code=exited, status=0/SUCCESS)
Process: 3559 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 3567 (java)
Tasks: 53 (limit: 4915)
CGroup: /system.slice/tomcat.service
└─3567 /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/
paź 17 13:54:04 acid-G551JM systemd[1]: Starting Apache Tomcat 8 Servlet Container...
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using CATALINA_BASE: /opt/tomcat
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using CATALINA_HOME: /opt/tomcat
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using CATALINA_TMPDIR: /opt/tomcat/temp
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tom
paź 17 13:54:04 acid-G551JM startup.sh[3559]: Using CATALINA_PID: /opt/tomcat/tomcat.pid
paź 17 13:54:04 acid-G551JM systemd[1]: Started Apache Tomcat 8 Servlet Container.
对于 /opt/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui,admin-gui"/>
对于 /opt/tomcat/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" /> -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
对于 /opt/tomcat/webapps/host-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" /> -->
**最后重启**
systemctl restart tomcat
我要去http://localhost:8080/
并且当我输入管理器应用程序/主机管理器登录名:管理员密码:管理员我一次又一次地重新登录...
第二个问题是当我想将 Tomcat 添加到我的 Eclipse Oxygen 时。
我认为这是由于 Tomcat 安装在 /opt/ 中,而 Eclipse 无法访问(没有权限)。有办法补救吗?
答案1
我已经通过这种方式解决了:
root@debianMate:/usr/local/apache-tomcat-9.0.6# chgrp -R tomcat /usr/local/apache-tomcat-9.0.6
root@debianMate:/usr/local/apache-tomcat-9.0.6# chown -R tomcat /usr/local/apache-tomcat-9.0.6
root@debianMate:/usr/local/apache-tomcat-9.0.6# chmod -R 755 /usr/local/apache-tomcat-9.0.6