wel*_*wel 3 tomcat centos centos7
我想使用 cmdlet 在 CentOS 上启动 Tomcat 服务:
systemctl start tomcat.service
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
无法启动 Apache ExecStart=/opt/tomcat/bin/startup.sh(代码=退出,状态=203/EXEC)。
和通过命令的日志:
Journalctl -xe
Run Code Online (Sandbox Code Playgroud)
正在说明
Selinux 阻止 (artup.sh) 对文件 startup.sh 执行访问
鉴于我可以在 CentOS 上启动任何其他服务,我的 tomcat 服务可能有什么问题?
谢谢
SELinux 将可以在 ExecStart 中使用的二进制文件限制为具有 system_u:object_r:bin_t:s0 属性集的路径。通常这些是 /usr/bin /usr/sbin /usr/libexec /usr/local/bin 目录。
您需要将脚本移动到此目录之一或更改 selinux 策略以允许 systemd 在所需位置使用二进制文件:
chcon -R -t bin_t /opt/tomcat/bin/
Run Code Online (Sandbox Code Playgroud)
restorecon 将更好地“解开”上述内容以更新策略,例如
semanage fcontext -a -t bin_t "/opt/tomcat/bin(/.*)?"
restorecon -r -v /opt/tomcat/bin
Run Code Online (Sandbox Code Playgroud)
更新
如果 java 二进制文件不在标准位置(自定义 JVM 发行版),那么您还需要为其设置bin_t标签。例如,如果您的 JVM 安装在 /opt/java 中,则:
semanage fcontext -a -t bin_t "/opt/java/bin(/.*)?"
restorecon -r -v /opt/java/bin
Run Code Online (Sandbox Code Playgroud)
注意:如果 JAVA_HOME 环境变量未在单元文件中设置,则 systemd 会忽略它。
归档时间: |
|
查看次数: |
3335 次 |
最近记录: |