Entries Tagged as ''

build一个最小化的apache

工作需要
做一个最小化的apache
只需要能记录log就行
于是找了个apache1.3.37(apache1.3的最新版)
cd /tmp
wget http://archive.apache.org/dist/httpd/apache_1.3.37.tar.gz
tar xzvf apache_1.3.37.tar.gz
cd apache_1.3.37
vim src/include/httpd.h

“#define HARD_SERVER_LIMIT 256″

这行改成:

“#define HARD_SERVER_LIMIT 2560″

然后
./configure –disable-module=all –enable-module=log_config
make
make install
strip /usr/local/apache/bin/httpd
vim /usr/local/apache/conf/httpd.conf

把Order、Deny、Allow开头的几句都注释掉
然后
/usr/local/apache/bin/apachectl start
ok了

365博邻寄过来的T-shirt收到了

365博邻寄过来的T-shirt
看来365博邻的工作效率还可以
原来以为夏天不过去是收不到T-shirt的
厚厚
衣服质量还行
就是
就是,但是选的size较小
穿不了
:(

apachestats:用cacti监测apache性能

cacti系统缺省没有带监测apache性能的template
但其论坛上有:http://forums.cacti.net/about9861.html
把这里下下来的ws_apachestats.pl.gz解开,放到<path_cacti>/scripts/下
变成<path_cacti>/scripts/ws_apachestats.pl
然后把下载下来的cacti_host_template_webserver_apache.xml在cacti里import进去
(console–>Import Templates)
成功以后
再给某台机器画图
就可以在”Associated Graph Templates”里选一堆”WebServer - Apache Statistics”之类的模板
然后画出相应的图来
这里有2个问题:
1,需要在要监测的apache上打开mod_status,并打开extend_status
方法是:
编辑文件/etc/httpd/conf/httpd.conf

LoadModule status_module modules/mod_status.so
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.10.
Allow from 192.168.
Allow from 127.0.0.
</Location>

然后再重启apache

还有个问题

当画图”Bytes/Requets“或这是”Thread Details (%)“的时候

会报个空comments的错误:
ERROR: Expected some arguments after ‘COMMENT’:

这个问题在cacti-0.8.6k已经被修正

如果你还是cacti-0.8.6.j或以前版本

可以升夏季

apache第三方模块儿mod_extract_forwarded

前一段
在公司idc机房跑apache的web server上
为某个域名(www.abc.com)用mod_proxy打了个洞到公司内网的某台机器上
这样做以后
公司内网的那台真正的服务于域名http://www.abc.com的web server的access_log里全是内网ip
而且是idc机房用来给www.abc.com打洞的前端服务器的内网ip
鉴于公司内网的real server上要做日志分析
log日志上全是公司内网的某几个ip显然是没法做的
于是产品那边提出需求:要在log里记录访问者真实的ip
找了个第三方的apache模块儿:mod_extract_forwarded
他有两个版本
for apache1.x的1.x,主页在这里、for apache2.x的2.x,主页在这里
这里因为我们的apache是httpd2.0.x,所以我们要用2.x版本的mod_extract_forwarded
但是这里的2.x的官网http://www.openinfo.co.uk连不上去
所以我们在rpmfind.net找了个SRPM
重新build了一下
得到RPM
再安装
于是会生成文件:

/etc/httpd/conf.d/mod_extract_forwarded.conf
/usr/lib/httpd/modules/mod_extract_forwarded.so
/usr/share/doc/mod_extract_forwarded-2.0.2
/usr/share/doc/mod_extract_forwarded-2.0.2/INSTALL
/usr/share/doc/mod_extract_forwarded-2.0.2/README

而且在配置文件/etc/httpd/conf.d/mod_extract_forwarded.conf已经做了最基本的配置
如下(注释已经全部去掉):

LoadModule extract_forwarded_module modules/mod_extract_forwarded.so
MEForder refuse,accept
MEFrefuse all
MEFaddenv on
MEFdebug off

我们所需要做的仅仅是在”MEFrefuse all“后面添加一句“MEFaccept x.x.x.x”即可
这里的”x.x.x.x“是打洞过来的http://www.abc.com的前端,也就是跑mod_proxy的机器的内网ip地址
如果有多台前端
这里改成”MEFaccept x.x.x.x y.y.y.y

然后再重启httpd
再看access_log
基本上记录的都是合法的公网ip了

apache的NameVirtualHost参数导致的问题

工作需要
在一台机器(httpd2.2)上面开个某个域名(http://www.abc.com)的反向代理
指向内网的一台机器
本想,这还不easy
开个ProxyPassProxyPassReverse应该马上搞定
于是马上就动手


<VirtualHost *>
ServerName www.abc.com
ProxyPass / http://10.10.10.10
ProxyPassReverse / http://10.10.10.10
</VirtualHost>

1,居然不行
用浏览器看发现报”循环的重定向“?
然后用telnet测,能出东西(html代码)呀
后来搞半天
发现了NameVirtualHost参数
于是想会不会是这个参数的问题呢
把它打开
NameVirtualHost *:80
再把VirtualHost里也做了相应的改动
再重启httpd
OK了!
这时仔细分析一下
才明白了前因后果
原来,这台httpd的机器原来没有VirtualHost,所有的都在一个DocumentRoot
当我没打开NameVirtualHost的时候
其实VirtualHost根本就没有被启用(虽然在配置文件里有)
所以当我们访问http://www.abc.com这个域名的时候
并没有进入www.abc.com的VirtualHost配置
他还是用的缺省的配置,也就是原来的配置
而原来的DocumentRoot目录下的index.php有问题,他通过html代码反复重定向到原来的域名
所以这就导致了”循环的重定向“

在FC3上做了个lvm

工作需要,在一台FC3(Fedora Core release 3,代号Heidelberg)的机器上搭个ftp server
其上有两个数据盘
一个叫/dev/cciss/c0d1,一个叫/dev/cciss/c1d1,两个大小不一,加起来有1.4个T左右的空间
为了能充分的利用这两个盘的空间
决定做个lvm,把这两个盘的空间做在一起
具体过程如下:

[@ftp ~]# vgscan
Reading all physical volumes. This may take a while…
No volume groups found

vgscan是首先必须要做的
[@ftp ~]# pvcreate /dev/cciss/c0d1
Physical volume “/dev/cciss/c0d1″ successfully created
把/dev/cciss/c0d1做成物理卷
[@ftp ~]# vgcreate LVM /dev/cciss/c0d1
Volume group “LVM” successfully created
再创建个卷组LVM,把先创建好的物理卷/dev/cciss/c0d1加进去
[@ftp ~]# pvcreate /dev/cciss/c1d1
Physical volume “/dev/cciss/c1d1″ successfully created
又创建第二个物理卷/dev/cciss/c1d1
[@ftp ~]# vgextend LVM /dev/cciss/c1d1
Volume group “LVM” successfully extended
扩展卷组LVM,把物理卷/dev/cciss/c1d1加进去
[@ftp ~]# lvcreate -L1340G -nDATA LVM
Logical volume “DATA” created
在卷组LVM上建个大小为1.4T的逻辑卷DATA

到这一步,其实lvm已经建好了
接下来该格式化卷/dev/LVM/DATA了
这里牵涉到用什么文件系统来格式化
推荐用reiserfs,因为用这个可以比较方便的扩展、缩小卷的大小
当然ext3也行,就是扩展、缩小卷的时候复杂些
fc3的系统我的kernel已经升到2.6.12-1.1381,而且是支持reiserfs的
所以只需要安装reiserfs的工具就行了
于是安装reiserfs-utils包
yum install reiserfs-utils
再接着格式化卷/dev/LVM/DATA为reiserfs类型
mkreiserfs /dev/LVM/DATA
再然后编辑文件/etc/fstab
在其中加入一句:

/dev/LVM/DATA /DATA reiserfs defaults 0 0

再然后
mkdir /DATA
mount /DATA

这样,/DATA分区就可以用了

用snmpwalk检测远端服务器上的net-snmp是否支持64位计数

主要是工作中需要用cacti来画服务器的流量图
这就牵扯到远端服务器上的net-snmp是否支持64位计数
如果不支持的话当流量大于100M得出来的数据就不准了
所以存在有检测一说
snmpwalk -v 2c -c public 10.10.10.10 ifHCInOctets
这里”2c”是snmp的版本号、”public”是远端服务器的community string
10.10.10.10是远端的服务器的ip地址
这个命令如果返回“IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID”类似的错误的话,就说明远端的net-snmp不支持64位计数
反之如果返回的有几行含有“Counter64:”的话
那么表明是支持的

/etc/hosts文件里的www.abc.com.和www.abc.com有什么区别

问题来源于工作中碰到的一个需求
公司在idc的服务器有需求向公司内部的工作邮件发信
但是公司内部邮件系统的真正的mx记录所指的机器(mail.abc.com)又把公司idc网段的公网ip给封了
(为什么会这样呢,不懂)
就是说,直接走正常渠道发信是发不过去的
为了解决这个问题
公司内部邮件系统的服务器的内网ip(10.10.10.10)对公司idc网段的机器开放了(用内网ip相连)
也就是说给abc.com这个域的用户发信直接发给mail.abc.com(这是公网ip)不行
发给10.10.10.10可以
但是abc.com的mx记录又不指向10.10.10.10
于是我就想能不能通过/etc/hosts文件来解决这个问题
于是我在/etc/hosts文件里把mail.abc.com指向ip地址10.10.10.10(收abc.com域的信的机器的内网ip)
发现还是不行
log上还是报连接mail.abc.com(真实公网ip) Deferred了
看到这里解析出来的mail.abc.com.的还是公网地址,就知道/etc/hosts的方法没成功
突然我看到这里的“mail.abc.com.”最后多出了个“.”
灵机一动
我把/etc/hosts里的”mail.abc.com”改成了”mail.abc.com.”
这下,居然成功了!
随后,我就考虑:

“/etc/hosts文件里的域名部分的mail.abc.com和mail.abc.com.有什么区别呢”

一个免费送T-shirt的地方–博邻

广大博友有福了
365BlogLink博邻正在搞一个推广活动
你只要先发信给博邻申请
写上你的博客名称和url
通过后(非常好通过)
只要在你的博客里加上他们的图片链接(如下之一)
365bloglink - 博邻
365bloglink - 博邻
博邻就给你寄一件以写着你的博客名字和url的T-shirt
(目前只有白色的了)
具体见这里