我正在尝试使用 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/。我该如何解决这个问题,以便将日志存储在正确的位置?
Apache 2.2 的 CustomLog是按服务器或按虚拟主机设置的,
http://localhost/~user1/
并且http://localhost/~user2/
类型 URI 方案都是同一默认虚拟主机中的所有别名。类似下面的内容适用于 CustomLog(ErrorLog 似乎不支持 env 修饰符)
您需要考虑到,对于大量用户,为每个用户提供自己的日志会对 apache 提出额外的资源要求。
它可以处理的日志文件数量有一个简单的限制——系统的文件描述符限制。
此外,您不能在单个虚拟主机中拆分错误日志。