Author Archive

一张图片

2010.03.29. 18:33 Articles by 老翅 Posted in 感悟 - 6 Comments
Author Website: http://www.nowings.com

tumblr_kywwemwORc1qzr04eo1_500.png

开源的力量-日志分析及进程处理

2009.11.03. 20:15 Articles by 老翅 Posted in 学习 - 1 Comment
Author Website: http://www.nowings.com

最近有一个同事要求我写两个脚本(或者我主动要求),需求是这样子的。

第一个需求是给出一个进程的名称,杀掉它。

第二个需求是监视一个log日志文件的输出,遇到指定字眼,就要以别的形式报警。

关于第一个要求。恰好以前看到类似的代码,翻出来看看。

ps ax | grep 进程名字 | grep -v grep | awk '{ print $1 }' | xargs kill -9

翻出来马上意识到,这不是一个很好的解决方案,比如说 如果想结束Firefox进程,进程中存在 firefox,以及 vi firefox.conf,那么这俩不幸的进程就会被干掉了。

不过找到了另外一个命令 pkill write by Kjetil Torgrim Homme. 直接调用 pkill -9 进程名字 就万事大吉了。

第二个需求么,就有点费劲了,逻辑倒是比较容易理清楚,就是对我来说实现起来有些难度。Google搜索了一下,果然也有成型的开源产品,叫做Swatch

只要下载安装,稍作配置,就能很好的工作。可以参考 这里

Logcheck 也不错, http://logcheck.org/ http://sourceforge.net/projects/logcheck/

推荐给同事使用了。

Windows文件上传到Linux

2009.11.02. 10:37 Articles by 老翅 Posted in 学习 - 3 Comments
Author Website: http://www.nowings.com


接上篇。Apache配置好了之后,尝试把网页文件上传到服务器,简单的把WWW服务架起来。蛮以为简单的事情,结果问题来了。

同事编辑的网页是使用的中文名称,比如"网站首页.html"。而服务器在架设之初,我使用的编码格式是en_US.UTF-8,可以支持汉字。所以没有多想,用FTP工具将其上传,且在FTP工具显示正常。打开浏览器测试,失败。

大概的心里有数了,用Putty连接到服务器查看了一下,乱码。



rar格式的比较好办,rar 3.6以后版本对unicode的支持更加智能化。

Linux下使用rar进行压缩/解压缩时,可以使用-scuc,来强制指定文件名用unicode编码进行压缩和解压缩。

对于zip格式的需要注意,Windows下创建的zip压缩包默认是使用的本地编码。即如果是简体中文的Win系统,则会使用GBK来存储文件名。此时,在Linux下解压缩包含中文文件名的压缩包时,需要在命令行使用参数-O cp936。

同理,在Windows下如果用WinRAR来解压缩zip文件倒是没有这个限制,WinRAR会自动检测文件名的编码方式。

不建议在Linux下使用gz/tar格式的压缩文件来给Windows机器共享文件,如果gz/tar压缩包中包含中文文件名会导致winrar解压缩包含中文文件名的文件时失败! --来自这里


ftp乱码的现象和原因:访问ftp,遇到中文文件名出现乱码。由于在FAT和NTFS文件系统中,中文是直接按照操作系统所使用的编码方式存储的,中文系统通常是gbk编码。针对不同的ftp客户端软件,有的ftp服务器端软件无法将文件系统中的编码,转换成客户端软件所使用的编码,于是就出现了乱码。--来自这里


推荐 这里 的一篇文章,摘录一部分,以作参考。

首先是在Windows上用Filezilla连接Ubuntu时看到的中文文件名全是乱码,但是用Putty通过SSH连接Ubuntu却是正常的(原先是乱码,后来改设置为UTF-8编码就好了,不过Filezilla没有类似的设置可改)。如果用Filezilla向Ubuntu上传本地的中文文件,则在Filezilla里看到Remote端的文件名是正确的,但在Putty里看到是乱码。

然后更严重的问题是:当我在Ubuntu上用Filezilla的SFTP从FreeBSD上下载文件时发现那些中文文件名都成了乱码。只好改用tar/tar.gz再试,结果还是乱。最后问了Google,但是结果并不理想,试过很多方法都无法解决,甚至为此特地在FreeBSD和Ubuntu上都装了p7zip试验,也还是不行。

折腾了好几天之后,我才想到应该研究一下几个系统上的locale设置究竟是如何的--坦白说,要不是因为搜到的资料里有提到这方面,我从前还真没注意到这回事。在FreeBSD和Ubuntu上分别运行了locale命令检查的结果是:

FreeBSD的LC_ALL为"C",即"POSIX"的别名,似乎是一种无固定编码的方案,或者可以认为就是本地编码,默认的设置。
Ubuntu的LC_ALL为"zh_CN.UTF-8",这个是我设置的。
Windows不必说了,肯定是本地编码--只是我没有想到的是,公司里用的英文版Windows居然也是本地编码,我一直以为是Unicode的,看来是为了保持兼容。

这样就好理解了,Filezilla不改变编码方式,所以当Remote端与本机的编码不一致时,必然乱码。所以在Windows上用Filezilla连接Ubuntu看到乱码,而我的Putty因为是设置为UTF-8编码,所以看到的是正确的--因为Ubuntu一端是UTF-8。而如果用Filezilla上传中文文件,则因为Windows是本地编码,所以上传以后仍然为本地编码(GB系),而Ubuntu是UTF-8所以是乱码。

FreeBSD那边的问题也是一样的,因为那些文件都是以前从Windows上传上去的,用的都是GB系编码,而早年我用Putty都是用默认的本地编码方案,所以一直没有发现问题。这样的话,因为FreeBSD是本地编码,与Ubuntu的UTF-8不一致,所以怎么弄都是乱码。

但是据说用7zip这样的工具打包以后是可以解决这样的编码不一致问题的,我试了却没有成功。后来才想明白,因为7zip是根据系统的locale设置来对文件名进行相应的处理,因为原来我处理的时候文件名是GB系的编码,而系统是设置为UTF-8,所以总也不对。



经过对上面文字的研究,大概了解了是怎么回事。但是处理起来还是不是太容易。用了各种方法都未能成功。

最后的做法是,使用 Haozip 在Windows上将文件做成Tar格式的压缩包,然后上传到服务器,使用tar 命令解压缩,解压缩出来的文件名依然是乱码。


但是,试着在浏览器里打开时,一切正常。


随后出现这么一个情况。



这可如何是好?


Apache配置单IP多站点

2009.10.16. 18:50 Articles by 老翅 Posted in 学习 - 5 Comments
Author Website: http://www.nowings.com
前因
在很久很久之前,公司有两个域名,指向的是同一个IP,仅仅启用了mail子域名,提供邮件服务。
突然某一天,上级说,咱们的域名得利用起来。咱们的服务器条件,能够放多个网站吗?我在脑袋里Google了一下,想到网络上有得是,比如幼兔就是,然后回答说,可以,一台服务器支持多个网站,提供多种服务的。
架构
1 公司的邮件服务器,Linux操作系统,采用iRedMail架设邮件系统,提供Mail服务,当然也包括Web服务。
2 服务器运行于内网,通过路由的端口映射,提供邮件服务。
尝试
接下这个任务后,也没有刻意去找解决方案,有一次在与Oneoo聊天的时候,忽然想到这个任务。顺口就咨询了一下。
-------------------------
老翅 18:39:17
嗯啊。一个小事情。webserver的想请教一下
Oneoooo 18:39:53
请说
老翅 18:39:59
现在我们的 http server 是运行在内网上的。通过端口映射,使得互联网可以访问。
老翅 18:40:49
现在的问题是,如果有两个域名想解析进来,是否可以做到?1 能解析 2 根据域名不同,显示不同的文件/page
Oneoooo 18:41:24
http server 配置虚拟主机,或者 rewrite
Oneoooo 18:41:36
这跟映射没关系
老翅 18:41:53
嗯,是一个apache ,也就是说,纯粹是apach的配置就可以做到,对吧
老翅 18:42:29
Ok 知道方向了。 我这几天就动手试试。
------------------------
上网找了找,大概了解了一下,找到一本Apache手册, 查看其中,基于主机名的虚拟主机 (一个IP地址,多个网站)的部分。大概心里有数了。

登录公司邮件服务器,尝试修改/etc/httpd/conf/httpd.conf,找到NameVirtualHost部分

按照下面的格式进行修改。

NameVirtualHost *:80


<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>


然后使用 httpd -t 查看语法是否有错误的地方。

使用 service httpd restart 命令重启Apache服务,使虚拟主机设置生效。

打开浏览器,测试成功,Over 配置完毕。

后记
使用Apache的虚拟主机功能,解决了手头上的实际问题,但是在Web服务器Apache的使用和管理方面,欠缺的太多,没有良好的知识储备。在出现问题的时候只能依靠搜索引擎,虽然能解决问题,并积累经验。却不是一种良好的学习态度,和学习习惯。

延伸阅读
1 Apache虚拟主机文档
http://lamp.linux.gov.cn/Apache/ApacheMenu/vhosts/
2 Apache HTTP Server Version 2.2 文档
http://lapp.unixmap.net/Apache/ApacheMenu/index.html


附记
在使用 httpd -t 验证语法时,遇到这样的错误。

httpd: Could not reliably determine the server's fully qualified domain name, using *** for ServerName


原因是httpd.conf里面的ServerName没有去掉注释。因此解决办法也很简单,修改httpd.conf,去掉ServerName的注释,然后重启Apache服务即可。

当博客没有良民证的时候

2009.10.13. 19:37 Articles by 老翅 Posted in 未分类 - 7 Comments
Author Website: http://www.nowings.com
话说,我的博客因为没有良民证,被提示说要求去领一个的时候。
逝时流光 19:12:56
你可以转过来
老翅 19:13:48
转啥?
老翅 19:13:55
你说我的Blog?
逝时流光 19:13:57
blog
老翅 19:16:15
嘿嘿
逝时流光 19:16:35
哈哈
老翅 19:17:05
呵呵
逝时流光 19:17:14
吼吼
老翅 19:17:29
嗨嗨
逝时流光 19:17:48
咔咔
老翅 19:18:37
哼哼
逝时流光 19:18:55
呼呼
老翅 19:20:12
喝喝
逝时流光 19:20:56
嚯嚯
老翅 19:21:19
哗哗
逝时流光 19:22:09
喔喔
老翅 19:22:34
哦哦
逝时流光 19:22:43
哇哇
老翅 19:23:01
噢噢
逝时流光 19:23:26
……
老翅 19:30:16
ai