我正在尝试将简单的SpringBoot应用程序部署在Ubuntu
服务器上,作为Upstart
服务。此应用程序具有logback-spring.xml
配置,该配置指向创建服务日志文件的完全相同位置,即/var/log/upstart
目录。
但当我部署此应用程序时,它会失败,并出现以下错误,指示某些权限问题(permission denied
),
<?xml version="1.0" encoding="UTF-8"?>
<!-- Enable jmxConfiguration to allow dynamic level change through spring boot admin -->
<jmxConfigurator/>
<property resource="log.properties" />
<!-- Standard console appender used in all environments. Upstart catches logs and stores in /var/log/upstart-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%-5level] [%t] %d %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<springProfile name="local">
<appender name="local" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.local.path}/${log.name.async}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${log.local.path}/%d{yyyy-MM-dd,aux}/${log.name.async}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>7</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 256MB -->
<maxFileSize>256MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%-5level [%t] %d{yyyy-MM-dd_HH:mm:ss.SSS} %logger{35} - %msg%n</Pattern>
</encoder>
</appender>
</springProfile>
<root level="INFO">
<appender-ref ref="console"/>
<appender-ref ref="local"/>
</root>
log.local.path=/var/log/upstart
log.name.async=propspace-async
我终于弄明白了问题所在。虽然这个错误很简单,但有些事情我需要重新审视。
服务
是Ubuntu上的用户“appuser”
拥有的。
用户“AppUser
”不允许将日志指向的目录(/var/log/upstart/
)。日志目录由用户“root
”拥有。因此,我创建了另一个目录(/var/log/app/
),该目录也由同一个用户(即'appuser')拥有,并启动了应用程序。
它解决了问题。
我遇到一个例外,当我试图打开FileInputStream时,文件打开权限被拒绝。 这是stacktrace: 是的,我在清单中有权限:
在其他设备中没有发生这种情况,我测试的设备:、、
在stackoverflow中也有类似的错误,但在尝试解决方案后(如您将在下几行中看到的),我会遇到相同的错误。 我在使用Nexus 5X api 27 oreo rom的模拟器和使用Android4.4的华为真手机中都试过了 在这两个设备中,我都有相同的错误:
Docker安装在AWS EC2 Ubuntu 16.04实例上,如下所示: 引发权限被拒绝错误: 尝试连接到处的Docker守护程序套接字时,权限被拒绝unix:///var/run/docker.sock: 收到http:///var/run/docker.sock/v1.39/info: 拨号unix/var/run/docker.sock:connect:权限被拒绝 显示: uname-a
我正在使用默认配置,同时添加在我的ubuntu 12.04计算机上安装了nginx的特定目录。 我只需要一个简单的静态nginx服务器来提供该目录之外的文件。但是,请检查我明白了 我已经在上完成了,我已经将它们设置为。我不知道还需要设置什么。
更新 结果发现我调用open和close FileOutputStream的频率太高了,这会在某个时候抛出FileNotFoundException。听起来更像是线程问题。