注:以下代码按history整理,仅供参考
第一步:下载awstats
第二步:安装ip库
第三步:下载js文件方便按天浏览
#download js
http://www.internetofficer.com/awstats/day-by-day/
下载后放js目录吧,懂的
第四步:配置网站文件
第五步:配置网站访问吧,比如lighttpd
$HTTP["host"] == "awstats.aslibra.com" {
server.document-root = "/Data/webapps/awstats/wwwroot/"
cgi.assign = ( ".pl" => "/usr/bin/perl")
}
第六步:配置计划任务?
按你日志的切割方式,定期执行处理任务
参考阅读:
1 AWStats Installation, Configuration and Reporting
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats按天分析日志:databasebreak=day
4 AWStats Day by Day
第一步:下载awstats
wget http://prdownloads.sourceforge.net/awstats/awstats-7.0.tar.gz
tar xfz awstats-7.0.tar.gz
mv awstats-7.0 /Data/webapps/awstats
tar xfz awstats-7.0.tar.gz
mv awstats-7.0 /Data/webapps/awstats
第二步:安装ip库
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
tar xfz GeoIP.tar.gz
cd /Data/tgz/awstats/GeoIP-1.4.7/
./configure
make && make install
cd ..
wget http://geolite.maxmind.com/download/geoip/api/perl/Geo-IP-1.39.tar.gz
tar xfz Geo-IP-1.39.tar.gz
cd Geo-IP-1.39
perl Makefile.PL
make && make install
cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GM/GMPASSOS/Geo-IPfree-0.2.tar.gz
tar xfz Geo-IPfree-0.2.tar.gz
cd Geo-IPfree-0.2
perl Makefile.PL
make && make install
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mkdir /Data/webapps/awstats/wwwroot/data/
mv *.dat /Data/webapps/awstats/wwwroot/data/
tar xfz GeoIP.tar.gz
cd /Data/tgz/awstats/GeoIP-1.4.7/
./configure
make && make install
cd ..
wget http://geolite.maxmind.com/download/geoip/api/perl/Geo-IP-1.39.tar.gz
tar xfz Geo-IP-1.39.tar.gz
cd Geo-IP-1.39
perl Makefile.PL
make && make install
cd ..
wget http://search.cpan.org/CPAN/authors/id/G/GM/GMPASSOS/Geo-IPfree-0.2.tar.gz
tar xfz Geo-IPfree-0.2.tar.gz
cd Geo-IPfree-0.2
perl Makefile.PL
make && make install
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
mkdir /Data/webapps/awstats/wwwroot/data/
mv *.dat /Data/webapps/awstats/wwwroot/data/
第三步:下载js文件方便按天浏览
#download js
http://www.internetofficer.com/awstats/day-by-day/
下载后放js目录吧,懂的
第四步:配置网站文件
cd /Data/webapps/awstats/wwwroot/cgi-bin/
mv awstats.model.conf common.conf
### vi common.conf: 启用一些插件
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoLiteCity.dat"
mkdir /Data/webapps/awstats/wwwroot/output
### vi awstats.www.conf 配置网站参数
Include "common.conf"
LogFile="/Data/logs/date/%YYYY-1/%MM-1/%DD-1/%HH-1/www.log"
SiteDomain="www.aslibra.com"
HostAliases="aslibra.com"
DefaultFile="index.html"
DirData="/Data/webapps/awstats/wwwroot/output/"
HTMLHeadSection="<script language=javascript src="/js/day-by-day-head.js"></script>"
HTMLEndSection="<script language=javascript src="/js/day-by-day-end.js"></script>"
mv awstats.model.conf common.conf
### vi common.conf: 启用一些插件
LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /Data/webapps/awstats/wwwroot/data/GeoLiteCity.dat"
mkdir /Data/webapps/awstats/wwwroot/output
### vi awstats.www.conf 配置网站参数
Include "common.conf"
LogFile="/Data/logs/date/%YYYY-1/%MM-1/%DD-1/%HH-1/www.log"
SiteDomain="www.aslibra.com"
HostAliases="aslibra.com"
DefaultFile="index.html"
DirData="/Data/webapps/awstats/wwwroot/output/"
HTMLHeadSection="<script language=javascript src="/js/day-by-day-head.js"></script>"
HTMLEndSection="<script language=javascript src="/js/day-by-day-end.js"></script>"
第五步:配置网站访问吧,比如lighttpd
$HTTP["host"] == "awstats.aslibra.com" {
server.document-root = "/Data/webapps/awstats/wwwroot/"
cgi.assign = ( ".pl" => "/usr/bin/perl")
}
第六步:配置计划任务?
按你日志的切割方式,定期执行处理任务
/Data/webapps/awstats/wwwroot/cgi-bin/awstats.pl \
-update -databasebreak=day -config=www -lang=cn
-update -databasebreak=day -config=www -lang=cn
参考阅读:
1 AWStats Installation, Configuration and Reporting
2 AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用
3 AWStats按天分析日志:databasebreak=day
4 AWStats Day by Day
某位童鞋这样写redirect无效:
有童鞋建议这样:
这个比较奇怪,mark
原文 http://forum.lighttpd.net/topic/1622
url.redirect = (
"^/foo" => "http://www.somesite.com"
)
url.rewrite-once = (
"^/(.*)/?$" => "/action.php?id=$1",
)
"^/foo" => "http://www.somesite.com"
)
url.rewrite-once = (
"^/(.*)/?$" => "/action.php?id=$1",
)
有童鞋建议这样:
url.redirect = (
"^/foo" => "http://www.somesite.com"
)
url.rewrite-once = (
"^/foo" => "$0",
"^/(.*)/?$" => "/action.php?id=$1",
)
"^/foo" => "http://www.somesite.com"
)
url.rewrite-once = (
"^/foo" => "$0",
"^/(.*)/?$" => "/action.php?id=$1",
)
这个比较奇怪,mark
原文 http://forum.lighttpd.net/topic/1622
1 下载文件
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
2 解压
tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.9-linux-glibc23-i386
这里要注意,进入data文件夹后,so文件是对应版本的,看好系统中的php版本再安装,我安装的是对应5.2版本PHP的。
把 ZendOptimizer.so 文件拷贝到某个目录,比如:
/usr/local/Zend/lib
把下列行加入php.ini,不要加入任何空格和tab
zend_optimizer.optimization_level=15
zend_extension=”/usr/local/Zend/lib/ZendOptimizer.so”
3 重启
/path/to/php-fpm restart
=问题集锦=
1 cannot restore segment prot after reloc: Permission denied
这是selinux的问题,如果无大的问题,可以关闭selinux
2 和eAccelerator冲突
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
2 解压
tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
cd ZendOptimizer-3.3.9-linux-glibc23-i386
这里要注意,进入data文件夹后,so文件是对应版本的,看好系统中的php版本再安装,我安装的是对应5.2版本PHP的。
把 ZendOptimizer.so 文件拷贝到某个目录,比如:
/usr/local/Zend/lib
把下列行加入php.ini,不要加入任何空格和tab
zend_optimizer.optimization_level=15
zend_extension=”/usr/local/Zend/lib/ZendOptimizer.so”
3 重启
/path/to/php-fpm restart
=问题集锦=
1 cannot restore segment prot after reloc: Permission denied
这是selinux的问题,如果无大的问题,可以关闭selinux
引用
关闭SELinux即可解决:
修改/etc/sysconfig/selinux,修改为SELINUX=disabled
执行/usr/sbin/setenforce 0立即关闭,且无需重启系统
如果你不希望关闭SELinux的话,也可以
chcon -t shlib_t ZendOptimizer.so
chcon -t texrel_shlib_t ZendOptimizer.so
修改/etc/sysconfig/selinux,修改为SELINUX=disabled
执行/usr/sbin/setenforce 0立即关闭,且无需重启系统
如果你不希望关闭SELinux的话,也可以
chcon -t shlib_t ZendOptimizer.so
chcon -t texrel_shlib_t ZendOptimizer.so
2 和eAccelerator冲突
参考整理的,代码放了挺久,忘记出处了,分离内容目前测试看的是正常
有需要的同学可以参考一下
有需要的同学可以参考一下
<?php
#从输入读取到所有的邮件内容
$email = "";
$fd = fopen("php://stdin", "r");
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
#记录所有的内容,测试
file_put_contents("/tmp/mail/".time(), $email);
#处理邮件
$lines = explode("\n", $email);
// empty vars
$from = "";
$date = "";
$subject = "";
$message = "";
$splittingheaders = true;
for ($i=0; $i<count($lines); $i++) {
if ($splittingheaders) {
// look out for special headers
if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
if(strpos($lines[$i],"<")){
//the name exist too in from header
$data = explode('<',$lines[$i]);
$from = substr(trim($data[1]),0,-1);
}else{
//only the mail
$from = $matches[1];
}
}
if (preg_match("/^Date: (.*)/", $lines[$i], $matches)) {
$date = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i]."\n";
}
if (trim($lines[$i])=="") {
// empty line, header section has ended
$splittingheaders = false;
}
}
$when = date("Y-m-d G:i:s");
$data = explode('@',$from);
$username = $data[0];
#记录到数据库
$sql = "insert into mails ( `username`, `from`, `subject`, `date`, `message`) values ( '$username', '$from', '$subject', '$when', '$message')";
#测试
file_put_contents("/tmp/mail2.log", $sql);
?>
#从输入读取到所有的邮件内容
$email = "";
$fd = fopen("php://stdin", "r");
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
#记录所有的内容,测试
file_put_contents("/tmp/mail/".time(), $email);
#处理邮件
$lines = explode("\n", $email);
// empty vars
$from = "";
$date = "";
$subject = "";
$message = "";
$splittingheaders = true;
for ($i=0; $i<count($lines); $i++) {
if ($splittingheaders) {
// look out for special headers
if (preg_match("/^Subject: (.*)/", $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match("/^From: (.*)/", $lines[$i], $matches)) {
if(strpos($lines[$i],"<")){
//the name exist too in from header
$data = explode('<',$lines[$i]);
$from = substr(trim($data[1]),0,-1);
}else{
//only the mail
$from = $matches[1];
}
}
if (preg_match("/^Date: (.*)/", $lines[$i], $matches)) {
$date = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i]."\n";
}
if (trim($lines[$i])=="") {
// empty line, header section has ended
$splittingheaders = false;
}
}
$when = date("Y-m-d G:i:s");
$data = explode('@',$from);
$username = $data[0];
#记录到数据库
$sql = "insert into mails ( `username`, `from`, `subject`, `date`, `message`) values ( '$username', '$from', '$subject', '$when', '$message')";
#测试
file_put_contents("/tmp/mail2.log", $sql);
?>
最近对postfix的使用又产生了点兴趣,特实验并整理一下相关的使用:
一 安装
yum install postfix
参考:postfix基本配置和设定DNS
二 配置默认发送域名
配置文件可以设定:
mydomain = mail.yourdomain.com
myhostname = yourdomain.com
如果不行,可以试试这样(笨人方法):
hostname yourdomain.com
service postfix restart
这样发出的邮件就是 xx@yourdomain.com
三 配置收邮件
inet_interfaces = all
四 希望收到的邮件提供给PHP处理
修改 aliases文件要执行 newaliases 才能生效
这样发给 aslibra@yourdomain.com 的邮件会交给 /tmp/m.php 处理
程序参考: PHP处理postfix的邮件内容
五 希望增加收邮件的域名
别的域名的邮件发到此服务器是会有出错提示的,不处理的,修改一下即可
mydestination = $myhostname, localhost.$mydomain, localhost, www.aslibra.com
这样 xx@www.aslibra.com 的邮件就可以处理了
六 希望做邮件转发
比如 xxxx@www.aslibra.com 全部都交给php处理,这个用处很大,可以用程序处理用户邮件交互
1 编辑 /etc/postfix/canonical 增加一行
@www.aslibra.com aslibra@yourdomain.com
2 postconf -e canonical_maps=hash:/etc/postfix/canonical
3 postmap /etc/postfix/canonical
这样邮件就都交给前面设定的用户了,继而交给php处理了
# 参考资料:
1 Postfix 邮件转发
一 安装
yum install postfix
参考:postfix基本配置和设定DNS
二 配置默认发送域名
配置文件可以设定:
mydomain = mail.yourdomain.com
myhostname = yourdomain.com
如果不行,可以试试这样(笨人方法):
hostname yourdomain.com
service postfix restart
这样发出的邮件就是 xx@yourdomain.com
三 配置收邮件
inet_interfaces = all
四 希望收到的邮件提供给PHP处理
cat /etc/aliases | grep aslibra
aslibra: "| php -q /tmp/m.php"
aslibra: "| php -q /tmp/m.php"
修改 aliases文件要执行 newaliases 才能生效
这样发给 aslibra@yourdomain.com 的邮件会交给 /tmp/m.php 处理
程序参考: PHP处理postfix的邮件内容
五 希望增加收邮件的域名
别的域名的邮件发到此服务器是会有出错提示的,不处理的,修改一下即可
mydestination = $myhostname, localhost.$mydomain, localhost, www.aslibra.com
这样 xx@www.aslibra.com 的邮件就可以处理了
六 希望做邮件转发
比如 xxxx@www.aslibra.com 全部都交给php处理,这个用处很大,可以用程序处理用户邮件交互
1 编辑 /etc/postfix/canonical 增加一行
@www.aslibra.com aslibra@yourdomain.com
2 postconf -e canonical_maps=hash:/etc/postfix/canonical
3 postmap /etc/postfix/canonical
这样邮件就都交给前面设定的用户了,继而交给php处理了
# 参考资料:
1 Postfix 邮件转发
假设我们在client.aslibra.com的机器要实现免输入密码登录到server.aslibra.com
那要做什么事情呢?
1 client生成密钥
2 client把公钥上传到server
3 server把公钥加入到自己的authorized_keys文件即可
修改@0508:
谢谢profans的提示,2和3一步就可以完成啦!实验过,正常。
MAC: ssh-copy-id in Mac OS X
For some reason Macs don’t have this useful script so this will add it.
那要做什么事情呢?
1 client生成密钥
2 client把公钥上传到server
3 server把公钥加入到自己的authorized_keys文件即可
修改@0508:
谢谢profans的提示,2和3一步就可以完成啦!实验过,正常。
#生成密钥后
ssh-copy-id -i .ssh/id_rsa.pub server.aslibra.com
ssh-copy-id -i .ssh/id_rsa.pub server.aslibra.com
MAC: ssh-copy-id in Mac OS X
For some reason Macs don’t have this useful script so this will add it.
sudo curl "http://phildawson.co.uk/ssh-copy-id" -o /usr/bin/ssh-copy-id
sudo chmod +x /usr/bin/ssh-copy-id
sudo chmod +x /usr/bin/ssh-copy-id
sftp要比ftp安全一些,不妨升级一下,简单快捷
下载并编译安装:
配置文件示例 [etc/proftpd.conf]:
下载并编译安装:
cd /Data/tgz
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3e.tar.gz
tar xfz proftpd-1.3.3e.tar.gz
cd proftpd-1.3.3e
./configure --prefix=/Data/apps/proftpd \
--enable-shadow \
--enable-openssl \
--enable-autoshadow \
--disable-auth-pam \
--without-pam \
--with-modules=mod_ratio:mod_readme:mod_wrap:mod_sftp \
&& make && make install
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3e.tar.gz
tar xfz proftpd-1.3.3e.tar.gz
cd proftpd-1.3.3e
./configure --prefix=/Data/apps/proftpd \
--enable-shadow \
--enable-openssl \
--enable-autoshadow \
--disable-auth-pam \
--without-pam \
--with-modules=mod_ratio:mod_readme:mod_wrap:mod_sftp \
&& make && make install
配置文件示例 [etc/proftpd.conf]:






