Apache2 写入 /dev/stdout 而不是 /var/log/apache2/access.log (使用 docker)?

Apache2 写入 /dev/stdout 而不是 /var/log/apache2/access.log (使用 docker)?

我在跑步阿帕奇2 2.4.10在 debian docker 容器中使用以下 docker-compose 文件:

version: '3.8'
services:
  apache2-php:
    container_name: apache2-php-container
    image: apache2-php-image
    build:
      context: ./docker/apache2
    ports:
      - "8082:80"
    volumes:
      - ./docker/apache2/index.php:/var/www/index.php
 

与此网站。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName localhost
    ServerAlias localhost
    DocumentRoot /var/www
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

它启动并运行良好,但由于某种原因,日志被写入 stdout/stderr,而不是上面指定的文件。我还看到:

$ ls -la /var/log/apache2
total 8
drwxrwxrwx 2 www-data www-data 4096 Dec 29  2018 .
drwxr-xr-x 1 root     root     4096 Dec 29  2018 ..
lrwxrwxrwx 1 www-data www-data   11 Dec 29  2018 access.log -> /dev/stdout
lrwxrwxrwx 1 www-data www-data   11 Dec 29  2018 error.log -> /dev/stderr
lrwxrwxrwx 1 www-data www-data   11 Dec 29  2018 other_vhosts_access.log -> /dev/stdout

我是否需要在我的网站中添加一些选项来强制 apache2 写入实际文件而不是 stdout/stderr?

答案1

由于某些原因,这些是指向 stdout 和 stderr 设备文件的符号链接。要使 Apache 写入实际文件,您只需删除符号链接并重新启动 Apache:

sudo rm /var/log/apache2/{access,error,other_vhosts_access}.log
sudo systemctl restart apache2

相关内容