ubuntu apache 将日志存储在主文件夹中

ubuntu apache 将日志存储在主文件夹中

我正在尝试使用 apache 设置一个服务器,其中每个用户的主文件夹中都有一个日志文件夹,并且所有错误/访问日志都存储在该文件夹中。

我当前的设置:

<VirtualHost *:80>
  DocumentRoot /home/user/public_html

  ErrorLog /home/user/logs/error.log
  CustomLog /home/user/logs/access.log combined
  LogLevel info

</VirtualHost> 


<VirtualHost *:80>
 DocumentRoot /home/user1/public_html

 ErrorLog /home/user1/logs/error.log
 CustomLog /home/user1/logs/access.log combined
 LogLevel info

</VirtualHost> 

这种设置的问题是,如果我访问 user1 的网站

  http://localhost/~user1/

所有日志都存储在 /home/user/logs/ 中,而不是 /home/user1/logs/ 中。我该如何修复此问题,以便将日志存储在正确的位置?

答案1

Apache 2.2 的 CustomLog是每个服务器或每个虚拟主机的设置,并且http://localhost/~user1/类型 http://localhost/~user2/URI 方案都是同一默认虚拟主机内的别名。

类似下面的方法适用于 CustomLog(ErrorLog 似乎不支持 env 修饰符)

<VirtualHost *:80>
  DocumentRoot /var/www/html
  ErrorLog logs/error_log

  SetEnvIf Request_URI ^~user1 user1
  SetEnvIf Request_URI ^~user2 user2

  CustomLog /home/user1/logs/access.log combined env=user1
  CustomLog /home/user2/logs/access.log combined env=user2

 ...
</VirtualHost>

答案2

您需要考虑的是,由于用户数量相当多,为每个用户提供自己的日志会给 apache 带来额外的资源需求。

它可以处理的日志文件数量有一个简单的限制 - 系统的文件描述符限制。

此外,您不能在单个虚拟主机内拆分错误日志。

相关内容