centos7 nginx 配置日志,提示 No such file or directory


centos7+nginx1.6.2,配置目录/home/mysite绑定了100个网站(网站程序一样,链接数据库不一样)
然后他们的日志配置是


 access_log /home/mysite/logs/$host/access.log main;

重新启动nginx,访问网站,访问日志没有生成,nginx错误日志中提示:


 2014/12/22 23:56:11 [crit] 14021#0: *1 open() "/home/mysite/logs/xxxxA.com/access.log" failed (2: No such file or directory) while logging request, client$

修改nginx.conf


 access_log /home/mysite/logs/$host.access.log main;

重启nginx再访问网站,错误日志:


 2014/12/23 00:00:34 [crit] 14021#0: *6 open() "/home/mysite/logs/xxxxA.com.access.log" failed (13: Permission denied) while logging request, client: 113.$

目录 ll /home/mysite


 [root@flxx nginx]# ll /home/mysite
total 12
drwxr-xr-x 2 mysite root 4096 Dec 22 23:04 bak
drwxr-xr-x 2 mysite root 4096 Dec 22 23:04 logs
drwxr-xr-x 2 mysite root 4096 Dec 22 23:37 www

如何解决


 1)nginx 不同域名自动生成目录问题
2)nginx 日志写入权限问题

nginx-php5-fpm php nginx centos7

重度香味依存 11 years, 11 months ago

目录权限的问题,你的logs目录是除了root用户意外都不能写,所以会Permission denied,chown成Nginx的用户或者最简单权限改成777

很无齿的混蛋 answered 11 years, 11 months ago

不同的域名生成目录可以这样,在启动或重读 Nginx 配置的时候,cd 到 www 目录,然后执行以下命令,就可以在logs目录下创建相应的域名目录了。

find . -type d -maxdepth 1 -exec mkdir -p ../logs/{} \;

日志写入权限的问题呢,解决方法就很多了:

  • 方法一、由于是日志目录,不必要做过多的权限,直接把该目录设置成 777 权限即可。
  • 方法二、或者把该目录的所有者和所属组改成与 Nginx 中的 user 对所应

这中间有坑,使用时注意咯!

如果你在创建这些日志目录的时候是使用的 root 用户,那创建完相应的目录先万别忘记改权限。

500loli answered 11 years, 11 months ago

Your Answer