使用Supervisor D在Docker容器中未填充Apache Access /错误日志

时间:2016-07-19 19:12:14

标签: php apache docker supervisord

我在Ubuntu容器中运行Apache 2.4.7,并且没有填充Apache访问/错误日志。这是Dockefile:

FROM ubuntu:14.04
MAINTAINER me@mysite.com

RUN apt-get update
RUN apt-get install -y apache2 supervisor php5 php5-mysql php5-cli

RUN mkdir -p /var/lock/apache2 /var/run/apache2 /var/log/supervisor

RUN a2enmod rewrite
RUN a2enmod ssl
RUN a2enmod headers

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY pickle /etc/logrotate.d/pickle
COPY pickle_socket /etc/logrotate.d/pickle_socket
COPY pickleudp /etc/logrotate.d/pickleudp

ADD 000-default.conf /etc/apache2/sites-enabled/
ADD default-ssl.conf /etc/apache2/sites-enabled/
ADD apache2.conf /etc/apache2/
ADD www-server/ /www-server/

EXPOSE 80 443 

CMD ["/usr/bin/supervisord"]

SupervidorD配置文件。其他服务在这里开始,但不相关:

[supervisord]
nodaemon=true

[program:apache2]
command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"

最后,这是用于Apache设置和写入日志文件的000-default.conf:

<VirtualHost *:80>

    DocumentRoot /www-server/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

<Directory /www-server/>
    # prevent potential clickjacking
    Header always append X-Frame-Options SAMEORIGIN
    # allow .htaccess overrides to work
    AllowOverride All
    DirectoryIndex login.html index.html index.php
</Directory>

我已确认已在/ etc / apache2 / envvars中设置了相应的指令 - export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

经过大量的研究,阅读错误报告等等。我比开始时更接近于解决问题。我做错了什么来获取日志文件?或者在Docker容器中运行Apache时我必须注意什么?

1 个答案:

答案 0 :(得分:1)

经过一番挖掘后,我在/var/log/supervisor/下的Docker容器中找到了访问/错误日志,其中according to Supervisor's docs是所有此类子进程日志的典型位置:

  

默认情况下,由主管生成的子进程的stdout被捕获,以便重新显示给supervisorctl和其他客户端的用户。如果在配置文件中的[program:x],[fcgi-program:x]或[eventlistener:x]部分中未执行特定的与日志文件相关的配置,则以下情况属实:

     
      
  • supervisord会将子进程'stdoutstderr输出捕获到临时文件中。每个流都被捕获到一个单独的文件中。这称为AUTO日志模式。
  •   
  • 自动命名AUTO日志文件并将其放置在配置为配置文件的supervisord部分的childlogdir的目录中。    - 每个AUTO日志文件的大小由程序部分的{streamname}_logfile_maxbytes值限定(其中{streamname}是“stdout”或“stderr”)。当它达到该数字时,它会根据{streamname}_logfile_backups
  • 旋转(就像活动日志一样)