月度归档:2008年08月

手机架设www服务 lamp平台之pamp

做网站的朋友相信对LAMP这几个字母一定不会陌生,LAMP是由Linux,Apache,Mysql,Php组成的高效服务器,其主要职能就是以较低的配置高效的完成WWW服务,相比普及性更高的Windows更有优势。WWW服务就是现在我们大家现在上网,所看到的网站就是由WWW服务提供的,  令人难以置信的是,现在WWW服务可以直接在手机上运行,这个WWW服务目前只能在Symbian Series60 3rd 手机上运行,只要你的手机大于128M内存,那么就能满足PAMP的运行条件!什么是PAMP,就是 Personal,Apache,Mysql,Php的首字母手写,字面上的意思就是个人Php服务器。
 
可惜自己的手机是moto E2 是linux的,没办法安装了

  最令人惊讶的是,在Symbian Series60 3rd上运行的Apache和Mysql并不是什么迷你版或者低版本,而是目前应用得比较普遍的5.x版。
  目前PAMP已经成功在诺基亚N95 8G版和E90上运行测试通过,只要能满足内存的要求,其它S60 3rd 都能运行。

  下面我们来看看PAMP的实现原理,如图:

  如果对PAMP感兴趣的朋友,可以点击下载sisx安装包,一共五个文件。

找个时间自己写一个简单的框架用于今后的项目开发

用过thinkphp,fleaphp还有公司自己的框架,但它们给我的感觉就是都比较庞大,功能上不错,但灵活性方面还是不足,当做非常小的小型项目中并不是很好用。

一直想自己写一个框架自己用,最近用thinkphp用得比较熟,所以打算借鉴tp的思想打造个属于自己的框架。在这里不得不好好说下TP真的不错,思想很好,功能上也很强大,做中型项目还是我的首选!

webgame现在前景不错,准备找个时间好好研究下

感觉最近一年webgame 发展的非常火,也玩过几款webgame,果然是消磨时间的好东西。。

webgame核心还是php进行服务端的数据处理,js ajax进行客户端的交互操作。

当然还有另一类,采用php做为服务端 flash做为客户端进行交互操作!

因为对php ajax非常熟悉了,准备过段时间做个简单的webgame和朋友一起玩!嘿嘿..

现在正在想game的主题

比苹果的操作系统更加的豪华Ubuntu 8.10的桌面

Ubuntu发明人说过Ubuntu 8.10会比苹果的操作系统更加的豪华美观,现在我们一起欣赏它的桌面,或许它就是Ubuntu 8.10正式版的桌面,当我看到这个图的时候真的是被震撼到了,超乎我的想像,不知运行它是否需要大内存,现在使用Ubuntu至少要256MB内存以 上。

      我个人预测,操作系统豪华桌面时代将来临,我们看到的Windows 7也是非常华丽的。

 

 

PHP程序模拟用户登录yahoo空间

 

PHP代码
  1. <?php   
  2. /*  
  3. 用PHP程序如何模拟用户登录yahoo空间(http://i.cn.yahoo.com/)。所谓的“模拟用户登录”是指用写支PHP程序模拟用户登录  
  4. 的过程。  
  5. */  
  6.   
  7. //登陆成功则会提示succeed  失败则自动转向yahoo出错页   
  8. loginYahoo(‘cnphpd@yahoo.com’,‘******’);   
  9.   
  10. function loginYahoo($user,$pass){   
  11.     $ch = curl_init();   
  12.     curl_setopt($ch, CURLOPT_URL, "https://edit.bjs.yahoo.com/config/login");   
  13.     curl_setopt($ch, CURLOPT_POST, 1);   
  14.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);   
  15.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);   
  16.     curl_setopt($ch, CURLOPT_POSTFIELDS,‘login=’.$user.‘&passwd=’.$pass.‘&.persistent=y’);   
  17.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
  18.     $result = curl_exec($chor die (curl_error($ch));   
  19.     echo $result;   
  20.     echo curl_error($ch);   
  21.     curl_close($ch);   
  22.     //判断是否登陆成功!   
  23.     $ch2 = curl_init();   
  24.     curl_setopt($ch2, CURLOPT_URL, "http://i.cn.yahoo.com/my.html?.login=1");   
  25.     curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, FALSE);   
  26.     curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, 2);   
  27.     $result2 =curl_exec($ch2);   
  28.     curl_close($ch2);   
  29.     if($result2==1){   
  30.         echo ‘succeed’;   
  31.     }else{   
  32.         echo ‘error’;   
  33.     }   
  34. }   
  35. ?>  

采集器的基本实现代码

 

如果采集下面链接的内容。http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html这是一篇文章,
假设我们只要采集它的文章标题和文章内容。请写出实现代码。

PHP代码
  1. <?php   
  2. /*  
  3. 如果采集下面链接的内容。http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html这是一篇文章,  
  4. 假设我们只要采集它的文章标题和文章内容。请写出实现代码。  
  5. */  
  6.   
  7.   
  8. //$startStr1,$endStr1 标题采集开始处与结束外标记   
  9. $startStr1=‘<td width="93%" class="blogtitle">  ‘;   
  10. $endStr1=‘</td>  
  11.                 </tr>  
  12.                 <tr>  
  13.                   <td class="subtitle" style="background-position:0px 32px">’;   
  14.   
  15. //$startStr2,$endStr2 文章内容采集开始处与结束外标记   
  16. $startStr2=‘<div class="textMain">’;   
  17. $endStr2=‘</div>  
  18.                           <br></td>  
  19.                       </tr>  
  20.                       <tr>  
  21.                         <td colspan="2" class="padding text4" style="word-break : normal; overflow:hidden; padding:25px 15px 10px 15px" id="textMain"><div align="center"><a href="#comment">’;   
  22.   
  23. $filename="http://my.mmosite.com/umge/Blog/Item/525f4dc178610c4f07321cc0925cda19.html";   
  24.   
  25. $mmosite=new mmosite($filename);   
  26. echo $mmosite->show($startStr1,$endStr1);   
  27. echo $mmosite->show($startStr2,$endStr2);   
  28.   
  29.   
  30.   
  31.   
  32.   
  33. //采集处理类   
  34.   
  35.   
  36. class mmosite{   
  37.   
  38.     public function __construct($filename)   
  39.     {   
  40.         $this->filename=$filename;   
  41.     }   
  42.   
  43.     function go($contents,$startStr,$endStr)   
  44.     {   
  45.         $startStr=str_replace("\r\n","",$startStr);   
  46.         $endStr=str_replace("\r\n","",$endStr);   
  47.         $contents=str_replace("\r\n","",$contents);   
  48.   
  49.         preg_match_all( "@" . preg_quote($startStr) . "(.*?)". preg_quote($endStr) ."@is"$contents$tpl );        
  50.         $content = $tpl[1];       
  51.         $content = implode(""$content );   
  52.         return $content;   
  53.     }   
  54.   
  55.     function open()   
  56.     {   
  57.         $handle=fopen($this->filename, "r");   
  58.         $this->contents=stream_get_contents($handle);   
  59.         fclose($handle);   
  60.     }   
  61.   
  62.     function show($startStr,$endStr)   
  63.     {   
  64.         $this->open();   
  65.         return $this->go($this->contents,$startStr,$endStr);   
  66.     }   
  67. }   
  68.   
  69. ?>  

利用apache的.htaccess进行虚拟主机的密码保护

首先用apache生成一个.htpasswd文件,如果觉得麻烦的话可以在线生成一个.htpasswd文件内容。

http://www.4webhelp.net/us/password.php

在上面的网页中输入授权用户的“用户名”和“密码”,然后将生成的字符内容复制到记事本中,用上面一步的方法保存为“.htpasswd”文件。

然后输入.htaccess内容。。

XML/HTML代码
  1. Deny from all   
  2. AuthType Basic   
  3. AuthUserFile /var/www/xzy/.htpasswd   
  4. AuthName “Hello Admin”   
  5. require valid-user   
  6. satisfy any    

给ubuntu服务器安装MRTG监控软件

一:安装网络流量监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

安装软件:
apt-get install apache2
apt-get install mrtg
apt-get install snmpd

编辑snmpd:
vim /etc/snmp/snmpd.conf

查找到类似的行,修改为如下所示:(仅仅修改屏蔽或放开)
# sec.name source community
# com2sec paranoid default public # kommentieren
com2sec readonly default public # <- auskommentieren
#com2sec readwrite default private

重启snmpd服务:
/etc/init.d/snmpd restart

重新生成mrtg的配置文件:
cfgmaker public@localhost > /etc/mrtg.cfg

(注意)如果仅仅监视一个IP地址采用如下命令:
cfgmaker public@192.168.0.1 >> /etc/mrtg.cfg

生成mrtg的主页:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

访问:
http://localhost/mrtg/

二安装CPU负载监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

安装软件:
apt-get install sysstat

建立CPU脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.cpu
#!/bin/bash
cpuusr=`/usr/bin/sar -u 1 3 | grep Average | awk ‘{print $3}’`
cpusys=`/usr/bin/sar -u 1 3 | grep Average | awk ‘{print $5}’`
UPtime=`/usr/bin/uptime | awk ‘{print $3""$4""$5}’`
echo $cpuusr
echo $cpusys
echo $UPtime
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.cpu

修改 /etc/mrtg.cfg 在文件最后加入cpu项目
Target[cpu]: `/opt/mrtg/mrtg.cpu`
MaxBytes[cpu]: 100
Options[cpu]: gauge, nopercent, growright
YLegend[cpu]: CPU loading (%)
ShortLegend[cpu]: %
LegendO[cpu]: &nbsp; CPU us;
LegendI[cpu]: &nbsp; CPU sy;
Title[cpu]: CPU Loading
PageTop[cpu]: <H1>CPU Loading</H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

三安装WWW连接数监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

建立WWW脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.www
#!/bin/bash
all=`netstat -a | grep www|awk ‘{print $5}’|sort | wc -l|awk ‘{print$1 – 1}’`
user=`netstat -a | grep www|awk ‘{print $5}’|cut -d":" -f1|sort| uniq |wc -l | awk ‘{print $1 – 1}’`
if [ "$all" = "-1" ]; then
echo 0
else
echo $all
fi
if [ "$user" = "-1" ]; then
echo 0
else
echo $user
fi
UPtime=`/usr/bin/uptime | awk ‘{print $3 " " $4 " " $5}’`
echo $UPtime
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.www

修改 /etc/mrtg.cfg 在文件最后加入www项目
Target[www]: `/opt/mrtg/mrtg.www`
MaxBytes[www]: 500
Options[www]: nopercent, growright
YLegend[www]: Online Users
ShortLegend[www]: %
LegendI[www]: &nbsp; Connect :
LegendO[www]: &nbsp; Online :
Title[www]: WWW Connect
PageTop[www]: <H1> WWW Connect </H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

 

四安装内存使用监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

建立RAM脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.ram
#!/bin/bash
# run this script to check the mem usage.
totalmem=`/usr/bin/free |grep Mem |awk ‘{print $2}’`
usedmem=`/usr/bin/free |grep Mem |awk ‘{print $3}’`
UPtime=`/usr/bin/uptime | awk ‘{print $3""$4""$5}’`
echo $totalmem
echo $usedmem
echo $UPtime
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.ram

修改 /etc/mrtg.cfg 在文件最后加入ram项目
Target[ram]: `/opt/mrtg/mrtg.ram`
#Unscaled[ram]: dwym
MaxBytes[ram]: 2048000
Title[ram]:Memory
ShortLegend[ram]: &
kmg[ram]:kB,MB
kilo[ram]:1024
YLegend[ram]: &nbsp; Memory Usage :
Legend1[ram]: &nbsp; Total Memory :
Legend2[ram]: &nbsp; Used Memory :
LegendI[ram]: &nbsp; Total Memory :
LegendO[ram]: &nbsp; Used Memory :
Options[ram]: growright,gauge,nopercent
PageTop[ram]:<H1>Memory</H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

 

五安装FTP连接数监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

建立FTP脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.ftp
#!/bin/bash
all=`netstat -a | grep ftp|awk ‘{print $5}’|sort | wc -l|awk ‘{print$1 – 1}’`
user=`netstat -a | grep ftp|awk ‘{print $5}’|cut -d":" -f1|sort| uniq |wc -l | awk ‘{print $1 – 1}’`
if [ "$all" = "-1" ]; then
echo 0
else
echo $all
fi
if [ "$user" = "-1" ]; then
echo 0
else
echo $user
fi
UPtime=`/usr/bin/uptime | awk ‘{print $3 " " $4 " " $5}’`
echo $UPtime
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.ftp

修改 /etc/mrtg.cfg 在文件最后加入ftp项目
Target[ftp]: `/opt/mrtg/mrtg.ftp`
MaxBytes[ftp]: 500
Options[ftp]: nopercent, growright
YLegend[ftp]: Online Users
ShortLegend[ftp]: %
LegendI[ftp]: &nbsp; Connect :
LegendO[ftp]: &nbsp; Online :
Title[ftp]: FTP Connect
PageTop[ftp]: <H1> FTP Connect </H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

六安装CPU温度监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

安装软件:
apt-get install mbmon

建立CPU温度脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.temp
#!/bin/bash
/usr/bin/mbmon -c 1 -i -T 4 -u -n
exit 0

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.temp

修改 /etc/mrtg.cfg 在文件最后加入cpu项目
Target[temp]: `/opt/mrtg/mrtg.temp`
MaxBytes[temp]: 100
Title[temp]: CPU Temperature
PageTop[temp]: <H1>CPU Temperature</H1>
Options[temp]: gauge,absolute,unknaszero,growright
YLegend[temp]: Temperature(C)
ShortLegend[temp]: (C)
Legend1[temp]: CPU Temperature
Legend2[temp]: M/B Temperature
LegendI[temp]: CPU Temp.
LegendO[temp]: M/B Temp.

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

七硬盘读写监视[默认5分钟采集一次]

切换到超级用户:
sudo -sH

建立硬盘读写脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.disk
#!/bin/bash
hd=sda
disk=/dev/$hd
UPtime=`/usr/bin/uptime |awk ‘{print $3""$4""$5}’`
KBread_sec=`iostat -x $disk|grep $hd |awk ‘{print 8$}’`
KBwrite_sec=`iostat -x $disk|grep $hd |awk ‘{print 9$}’`
echo $KBread_sec
echo $KBwrite_sec
echo $UPtime
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.disk

修改 /etc/mrtg.cfg 在文件最后加入硬盘读写
Target[disk]: `/opt/mrtg/mrtg.disk`
Title[disk]: Disk HDA I/O Utilization Report
#Unscaled[disk]: dwym
MaxBytes[disk]: 10240000
PageTop[disk]: <H1>Disk I/O Utilization Report</H1>
kmg[disk]: KB,MB,GB
LegendI[disk]: Disk I/O KBread/sec
LegendO[disk]: Disk I/O KBwrite/sec
Legend1[disk]: Disk I/O KBread/sec
Legend2[disk]: Disk I/O KBwrite/sec
YLegend[disk]: Megabytes
ShortLegend[disk]: &
Options[disk]: growright,gauge,nopercent

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

 

八:磁盘使用

切换到超级用户:
sudo -sH

建立磁盘使用脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.df
#!/usr/bin/perl
foreach $filesystem (`df -kl | grep -v "Filesystem"`)
{
@df = split(/\s+/,$filesystem);
$total += $df[1];
$usage += $df[2];
}
print "$total\n";
print "$usage\n";
hostname

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.df

修改 /etc/mrtg.cfg 在文件最后加入
Target[disk]: `/opt/mrtg/mrtg.df`
Title[disk]: Disk Space
Unscaled[disk]: dwym
MaxBytes[disk]: 465247550
kmg[disk]: KB,MB,GB
LegendI[disk]: Total Disk Space
LegendO[disk]: Used Disk Space
Legend1[disk]: Total Disk Space
Legend2[disk]: Used Disk Space
YLegend[disk]: Megabytes
ShortLegend[disk]: &
Options[disk]: growright,nopercent
PageTop[disk]: <H1>Disk Space</H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

九:交换分区

切换到超级用户:
sudo -sH

建立交换分区脚本:
mkdir /opt/mrtg
vim /opt/mrtg/mrtg.swap
#!/bin/bash
# This script to monitor the swap usage.
totalswap=`/usr/bin/free |grep Swap |awk ‘{print $2}’`
usedswap=`/usr/bin/free |grep Swap |awk ‘{print $3}’`
echo "$totalswap"
echo "$usedswap"

使脚本可以执行:
chmod +755 /opt/mrtg/mrtg.swap

修改 /etc/mrtg.cfg 在文件最后加入
Target[swap]: `/opt/mrtg/mrtg.swap`
MaxBytes[swap]: 2048000
Title[swap]:Memory State of Server
ShortLegend[swap]: &
kmg[swap]:kB,MB
kilo[swap]:1024
YLegend[swap]: Swap Usage
Legend1[swap]: Total Swap
Legend2[swap]: Used Swap
LegendI[swap]: Total Swap
LegendO[swap]: Used Swap
Options[swap]: growright,gauge,nopercent
PageTop[swap]:<H1>Swap</H1>

重新生成索引页面:
indexmaker /etc/mrtg.cfg > /var/www/mrtg/index.html

* Target[裝置名稱]:

o Target[adj.idv.tw_2]: 2: public@192.168.1.2
上面是一般的用法,其中半括號內的是裝置的名稱,同一個裝置的各參數中,這個名稱要一致!

o Target[adj.idv.tw_3]:`/usr/local/apache/htdocs/mrtg/cpu/mrtg.cpu`
後面接的是一個自訂的加掛的可執行檔案,這個檔案執行之後,會顯示四個數據,這樣就可以繪圖了!在繪製非 MRTG 程式的預設咚咚中,這個是最常使用的方法了!

* MaxBytes[裝置名稱]:

o MaxBytes[adj.idv.tw_2]: 1250000
後面的數字代表資料監測時,最大的傳送速率,使用 bytes,所以 10Mbps 則為 1.25MBytes,大約是 1250000 Bytes。這個數值程式會自動判斷啦!不過你也可以自己修改,用到這個數字的時候是在你的圖表下方,每一個說明後面的(xx%)時用到的。

o MaxBytes[adj.idv.tw_3]: 100
如果你的資料並不是 Bytes 時,例如監測 CPU 負載率時,那這個數值就需要改變啦!

* Options[裝置名稱]:

o Options[adj.idv.tw_2]: growright, bits (用在網路流量中)
o Options[adj.idv.tw_3]: growright, nopercent, gauge (用在 CPU 負載中)

growright:將資料隨時間變化的順序以右而左繪圖;
bits:資料單位為 bits;
nopercent:在圖下方的說明文字中,不顯示百分比;
gauge:圖表的上限固定!

最终效果:

 

 

 

mrtg.jpg