我在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时我必须注意什么?
答案 0 :(得分:1)
经过一番挖掘后,我在/var/log/supervisor/
下的Docker容器中找到了访问/错误日志,其中according to Supervisor's docs是所有此类子进程日志的典型位置:
默认情况下,由主管生成的子进程的stdout被捕获,以便重新显示给supervisorctl和其他客户端的用户。如果在配置文件中的[program:x],[fcgi-program:x]或[eventlistener:x]部分中未执行特定的与日志文件相关的配置,则以下情况属实:
- supervisord会将子进程'
stdout
和stderr
输出捕获到临时文件中。每个流都被捕获到一个单独的文件中。这称为AUTO日志模式。- 自动命名AUTO日志文件并将其放置在配置为配置文件的supervisord部分的childlogdir的目录中。 - 每个AUTO日志文件的大小由程序部分的
旋转(就像活动日志一样){streamname}_logfile_maxbytes
值限定(其中{streamname}
是“stdout”或“stderr”)。当它达到该数字时,它会根据{streamname}_logfile_backups
。