apache 日志:customlog配置的piped log program \'/log.sh\' failed unexpectedly错误->解决

如果想自己处理apache日志,有一个方法就是把日志重定向到自己写的程序上,如php或是其它脚本类.

在conf配置文件中使用customlog命令即可;

使用|即可使用管道命令.

CustomLog "|/var/www/log.sh" common
但是我在定向到一个bash 脚本时,它的error.log日志总是提示标题上的错误.

经过测试发现它已经成功调用sh了,但是不明白什么原因,

发现它运行sh时是使用

/bin/sh -c /var/www/log.sh ddd形式运行的,且使用了root权限运行.所以不会是因为权限不足问题.

经过测试是必须消耗掉管道输入stdin的内容.

如sh可以这样用

while read line # 消耗stdin
do
        echo "$line"
        if [ "$loop" -gt 999999 ];then
                exit 0;
        fi

        let "loop +=1"
        `echo "line $line " >> /var/log/apache2/log.log`
done
就不会提示出错,但是还是没办法获取到日志内容.

有人说这个必须使用守护进程才行.

经过测试并非如此,只要消耗stdin即可(看一眼c实现代码没看完没搞明白它是怎么判断这个的)

 

整个简单的sh可以这样写

 

----------------sh 代码----------

#! /bin/sh
loop=0

while read line
do      
        if [ "$loop" -gt 999999 ];then # if deal loop exit
                exit 0;
        else
                loop=$loop+1
        fi

        `echo $line >> /var/log/apache2/log.log`
done

echo "sh runing" #start apache will see this echo
exit 0

------------代码结束----------

另一个需要注意的地方是:如果测试无效可以暂时换回文件路径方式记录而非管道,看看 是不是普通方式也没日志输出,如果是就是说明暂时管道脚本并没有问题.然后发现这个命令放到virtualhost标签中才有输出,前面测试我一直放在全局apache,且发现切换到普通文件方式也没有任何东西时,再看一下access.log也是用到customlog命令,一般到管理方式时即可看到访问记录往这个sh中灌了.

 

        #CustomLog /var/log/apache2/access.log combined
       CustomLog "|/var/www/log.sh" combined

.........

</VirtualHost>


然后这个脚本会在结束后,apache会再次调用的.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 配置Apache服务器 在CentOS 7上安装Apache服务器并启动后,可以通过以下步骤配置Apache服务器,使客户端可以通过 http://abc259.com/ 访问: 1)在终端中使用以下命令打开Apache的全局配置文件: ``` sudo vi /etc/httpd/conf/httpd.conf ``` 2)找到以下行并将其取消注释(去掉前面的#): ``` #ServerName www.example.com:80 ``` 将其修改为: ``` ServerName abc259.com:80 ``` 3)在文件末尾添加以下内容: ``` <VirtualHost *:80&gt; ServerAdmin webmaster@abc259.com DocumentRoot /var/www/html ServerName abc259.com ErrorLog /var/log/httpd/abc259.com-error_log CustomLog /var/log/httpd/abc259.com-access_log common </VirtualHost&gt; ``` 4)保存并关闭文件。 5)重启Apache服务器: ``` sudo systemctl restart httpd ``` 现在,客户端就可以通过输入 http://abc259.com/ 来访问您的网站了。 2. 配置个人主页 如果您想要实现客户端通过输入 http://abc259.com/~abc259 来访问个人主页,可以按照以下步骤进行配置: 1)在终端中使用以下命令创建一个名为“public_html”的目录: ``` mkdir ~/public_html ``` 2)在“public_html”目录中创建一个名为“index.html”的文件: ``` vi ~/public_html/index.html ``` 3)在文件中输入以下内容: ``` <html&gt; <head&gt; <title&gt;My Personal Homepage</title&gt; </head&gt; <body&gt; <h1&gt;Welcome to My Personal Homepage!</h1&gt; </body&gt; </html&gt; ``` 4)保存并关闭文件。 5)在终端中使用以下命令修改文件和目录的权限: ``` chmod 755 ~ chmod 755 ~/public_html chmod 644 ~/public_html/index.html ``` 6)在Apache的全局配置文件中添加以下内容: ``` <Directory /home/abc259/public_html&gt; Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory&gt; ``` 7)保存并关闭文件。 8)重启Apache服务器: ``` sudo systemctl restart httpd ``` 现在,客户端就可以通过输入 http://abc259.com/~abc259 来访问您的个人主页了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值