分类归档: Tech.Memo

Nginx 与 Awstats (FastCGI for Perl)

配置好 Nginx 后,可能有的朋友还想用 Awstats 分析日志。如果另外再起一个 Apache ,觉得费二遍事。如果在 Nginx 上跑 Awstats ,还需要 FASTCGI 支持。配置的方法有些山寨。Nginx 尽管提供 Perl 模块支持,毕竟还是实验性质的。

对比了一些文章,决定还是用 nginx-fcgi 这个脚本。作者是 Daniel Dominik Rudnicki 。这个脚本要比顺子文中提到的要好一点。

该脚本中用到如下的 Perl 模块。所以使用前要确保相关 Perl 模块已经存在。要不,手工下载安装一下。

  • perl-FCGI
  • perl-Getopt
  • perl-IO
  • perl-Socket

使用命令示意:

/usr/local/nginx/nginx-fcgi -S /tmp/fastcgi.sock -l /var/log/nginx/nginx-fcgi.log
-pid /var/run/nginx-fcgi.pid

网上常见的那个脚本必须要显示的指定最为后台进程跑。不是很完善的方法。

注意事项:不能用 root 用户执行(会提示). 要用与 Nginx 相同身份的用户执行。否则可能会在 Nginx Log 中提示 Permision Denied 。

Nginx 中配置好 Log 格式:

log_format  main          '$remote_addr - [$time_local] "$request" ' 
'$status $body_bytes_sent "$http_referer"'
'"$http_user_agent" $http_x_forwarded_for';

相对应的 Awstats 中 Log 格式为:

LogFormat = "%host - %time1 %methodurl %code %bytesd %refererquot %uaquot" 

其他的配置参考一下Sunnyu 的 “为了Awstats给Nginx添加FastCGI方式的Perl支持” 应该就成了。

BTW: 应该说,Nginx 能够有效抵挡搜索引擎爬虫对网站的影响。对于 Apache 来说,这是个很大的进步。

EOF

更新:如果手工写脚本做 Nginx 日志 logrotate 的话,注意不要简单的用 mv 命令, cp 然后 echo ”> 的方式更好。

推荐: Sina 张宴的 Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第4版),这是目前关于 Nginx 最详细的实践文章。

Unix 系统里几个尽量不要运行的命令

日复一日的 Unix/GNU Linux 使用过程中,或许总有一些命令让你感觉肝颤,看看如下几个命令是不是让你很烦?

fsck — file system consistency check

如果有可能,不要手工运行 fsck 命令。关于人为调用 fsck “修复” 系统而引起更大灾难的实例已经有很多了。

Unix 的 rm 命令问题

rm 命令可能是最容易给 Unix 使用者带来麻烦的一个命令,但我想这个命令带来的问题几率可能并不如 fsck 那么高。所以放到第二位。另请请参考我以前写的 如何避免 Unix 环境中的 ‘rm -rf’ 灾难 这个帖子。

crontab -r — 不经提示删除了 cron 内容

这条命令我从来没用过,是网友留言提示的,看来他深受其苦,或许还有同病相怜的人。

source ~/.bash_history

The source command sends the contents of a text file to the Unix shell. 我相信如果有人运行了这样的命令,肯定是命令行自动补全惹得错 :)

或许还有很多命令是尽量不要运行的,话说回来,在 Unix 系统里面运行每个命令都需要谨慎。IBM dw 上这篇关于系统管理员的”懒惰”我倒是挺认同的,无为而治。

上面提到的 Unix ,包括 GNU/Linux,具体的 Shell 具体对待。

EOF
还有个老生常谈的提醒:不要在 root 用户下做日常操作。

此文作者:, 位于 Tech.Memo 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

AIX 上配置 rsync 简记

前提: OpenSSH 配置完毕。并且,目标端到源端通过 SSH 登录无需提示密码验证. (参见我以前的也是关于 rsync 的废话)

下载 AIX 5L Expansion Pack CD 中的 rsync,这个版本稍微有点低。其实也足够了,不过如果和更高版本混用的话,会报告另外一个错误

sync: connection unexpectedly closed (24 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) ...

在 AIX 上 rsync 需要依赖 Popt–A C library for parsing command line parameters,通过 rpm 命令安装即可. 现在的 AIX 系统默认应该就有安装 rpm (AIX-rpm) 工具包的.

在维基百科上 有 对 rsync 算法的介绍。简单的理解是这么回事:待传送的文件被分成若干定长的文件段,然后对每个文件段做个 “Rolling Checksum”,加上一个强 MD4 校验码, 传送这些信息给接收方, 接收方查找本地类似文件–定长的每个文件段, 对比 Rolling Checksum 与 MD4, 然后传送差异(Delta)数据.

rsync 1996 年才被搞出来,最初是用来对付在低速网络连接上传送差异化文件的。

我一直比较好奇的是 Oracle 的 Data Guard 用什么算法保证所有的归档能无差错传送到远地(?)。

EOF

Linux 下的 df 命令以及其他

手边有 AIX 以及 Linux 环境,df 算是我用的频率较高的系统命令了。这个小小的命令在不同的环境中差别还是很大的。比如 “-v” 这个参数,在 AIX 上可以配合 -k -m -g 等参数显示可读性更强的信息, Linux 上只是为了兼容 System V 的 df 命令而保留 “-v”。在 Linux 上类似的命令 是 “-B” ,可以接 k 、m、g 等. 如 df -Bg 按照 GB 显示。如果同时维护这样的混合环境,在命令的使用上也要考虑“兼容性”。

以前介绍过 GNU 核心工具,不过没介绍那份有趣的 GNU Core Utilities FAQ,前两天又重新读了一遍。多少有点新内容。比如那个比较经典的问题,“Linux 下 df 与 du 显示的为什么不一样” (我自己就遇到过一次),在 FAQ 上更新了很有权威性的线索: df and du report different information

我这里补充一下的是,在比较大的文件系统上,保留给超级用户的数据块也可能会产生混淆。默认是 5%,如果文件系统比较大,这里的浪费还是比较惊人的,需要就实际情况作权衡。这个也会对 df 的显示有影响。如果创建文件系统的时候需要修改,用”-m”参数指定特定的百分数。

虽说差不多每天都在用 Unix ,但是总有无数知识盲点.

EOF