技术上的问题对我来说多的说不完,其实又没有那么多,用到什么学什么。
Mar 20

1, 系统环境

1.1, 操作系统

Gentoo 2007.0 with portage snapshot 20081022, update world in 2008.10.22

1.2, 服务器列表

修改/etc/hosts,加入下面的机器名和IP对应
数据库和track服务器: M-Gentoo IP:10.129.62.243
存储服务器01: S-Gentoo-01 IP:10.129.62.244
存储服务器02: S-Gentoo-02 IP:10.129.62.241

2, 解锁gentoo portage中安装mogilefs所需要的包

echo =dev-perl/mogilefs-server-2.20  ~x86 >> /etc/portage/package.keywords
echo =dev-perl/Danga-Socket-1.59 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/IO-AIO-3.07 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/Gearman-Server-1.09-r1 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/Gearman-1.09 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/Gearman-Client-Async-0.94 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/Perlbal-1.72 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/MogileFS-Utils-2.13 ~x86 >> /etc/portage/package.keywords
echo =dev-perl/MogileFS-Client-1.08 ~x86 >> /etc/portage/package.keywords

3, 安装

USE=”mysql” emerge mogile-server MogileFS-Client MogileFS-Utils
这个过程会将关联的包全部装好

4, 配置

4.1, 数据库

建立数据库
mogdbsetup –dbname=mogilefs –dbuser mogile –dbpass mogile

4.2, tracker

修改tracker服务器配置文件/etc/mogilefs/mogilefsd.conf
db_dsn = DBI:mysql:mogilefs
db_user = mogile
db_pass = mogile

4.3, storage server

修改storage服务器的配置文件/etc/mogilefs/mogstorage.conf
httplisten = 0.0.0.0:7500
mgmtlisten = 0.0.0.0:7501
docroot = /var/mogdata
server = perlbal

5, start server

M-Gentoo: /etc/init.d/mogilefsd start
S-Gentoo-01: /etc/init.d/mogstored start
S-Gentoo-02: /etc/init.d/mogstored start

6, 在tracker中注册存储服务器

mogadm –trackers=M-Gentoo:7001 host add S-Gentoo-01 -status=alive
mogadm –trackers=M-Gentoo:7001 host add S-Gentoo-02 -status=alive

7, 添加设备

建立保存文件的目录,分别在S-Gentoo-01和S-Gentoo-02中的/var/mogdata/下建立dev1和dev2的目录,并在tracker中添加这些device:
mogadm –trackers=M-Gentoo:7001 device add S-Gentoo-01 1 –status=alive
mogadm –trackers=M-Gentoo:7001 device add S-Gentoo-02 2 –status=alive
察看device: mogadm –trackers=M-Gentoo:7001 device list

8, 添加domain和class

增加一个domain: mogadm –trackers=M-Gentoo:7001 domain add project
增加一个class并且设定replication为2份: mogadm –trackers=M-Gentoo:7001 class add project class01 –mindevcount=2

9,测试

http://capoune.net/mogilef... 这里提供的php的module在php 5.2.6上面不work,所以改用http://www.sbw.org/File_Mo...提供的pear的包进行测试.
pear的File_Mogile的类需要Validate的支持,分别下载安装之:
wget http://www.sbw.org/File_Mo...
wget http://download.pear.php.n...
pear install Validate-0.8.1.tgz
pear install File_Mogile-0.0.7.tgz

<?php require_once('File/Mogile.php'); $hosts = array('127.0.0.1:7001'); $domain = 'project'; $class = 'class01'; $key = 'file_storage'; //这个为文件的唯一标识! $mogile = new File_Mogile($hosts, $domain,array('socketTimeout' => 0.01,'streamTimeout' =>1.0,'commandTimeout' => 4,)); $mogile->storeData($key, $class, 'I am the walrus.' . "\n"); $paths = $mogile->getPaths($key); var_dump($paths); ?>

参考:

http://mogilefs.pbwiki.com...

http://danga.com/mogilefs/...

http://capoune.net/mogilef...

转自 http://i.19830102.com/arch...

Mar 19
 ssh -l root [ip] -i [publickey_path]
Tags: ,
Mar 4

#emerge --sync      //升级整个portage目录

#emerge portage     //如果不是最新的portage,需要按提示执行此操作
#emerge python     //如果不是最新的python,需要按提示执行此操作
#/usr/sbin/update-python     //执行完emerge python后执行此操作

#emerge -avuDN world      //按照 /var/lib/portage/world 文件下的包,重新构建整个系统
 参数说明:  --ask (-a)  控制Portage显示它要更新的软件包列表,并让您决定是否继续更新
                --verbose (-v) 在屏幕上输出完整的文件列表
                --update (-u) 更新包的最佳版本
                --deep (-D)  更新系统中的每个软件包
                --newuse (-N) USE标记变更后,要使Portage检查USE标记的变动是否导致
                            需要安装新的软件包或者将现有的包重新编译

#emerge -av --depclean     //清除不需要(孤立)的软件包

#revdep-rebuild     //gentoolkit包里面的一个软件,用来检查系统的依赖关系是否都满足,
                            自动安装没有满足关系的包

#dispatch-conf     //更新系统的配置文件

#emerge -e world     //本地重新编译整个系统,USE标记变化不大时不需执行
 参数说明: --emptytree (-e) 

 

  1. emerge --sync
  2. emerge -vuD --newuse world
  3. emerge –depclean
  4. revdep-rebuild

Feb 20

实时检测HTTPD连接数:
watch -n 1 -d "pgrep httpd|wc -l"

ps -ef | grep httpd | wc -l
  返回结果示例:
  1388
  表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整,我这组服务器中每台的峰值曾达到过2002。


安装memcached @ CentOS

* memcached homepage:
http://www.danga.com/memca...
yum install memcached
chkconfig memcached on
service memcached start

vi /etc/sysconfig/memcached
# set listening host to localhost
OPTIONS="-l 127.0.0.1"
If you use a different version of php from the one in official CentOS repo, you need to compile the php memcache extension (php-pecl-memcache) by yourself. Just download the source rpm from the CentOS Extras repository and build it.

Nov 23

下面的代码主要是伪静态的实现,搜索引擎喜欢

大家经常看到别的站的URL是这样的吧?
http://www.xxx.com/module/...
或者
http://xx.com/module/show/... 带扩展名的
或者
http://xx.com/module/show/...
这样的吧
今天我就是公布下这种方法的实现,并独立出最简单的代码
函数如下,没封装成类,主要是没必要,用函数能方便些

<?php
/**
* 获得友好的URL访问
*
* @accesspublic
* @return array
*/
function getQueryString(){
$_SGETS = explode("/",substr($_SERVER['PATH_INFO'],1));
$_SLEN = count($_SGETS);
$_SGET = $_GET;
for($i=0;$i<$_SLEN;$i+=2){
if(!empty($_SGETS[$i]) && !empty($_SGETS[$i+1])) $_SGET[$_SGETS[$i]]=$_SGETS[$i+1];
}
$_SGET['m'] = !empty($_SGET['m']) && is_string($_SGET['m']) ? trim($_SGET['m']).'Action' : 'indexAction';
$_SGET['a'] = !empty($_SGET['a']) && is_string($_SGET['a']) ? trim($_SGET['a']) : 'run';
return $_SGET;
}
/**
* 生成链接URL
*
* @accesspublic
* @param array $arr
* @return string
*/
function setUrl($arr){
global $Global;
$queryString='';
if($Global['urlmode']==2){
foreach($arr as $k=> $v){
$queryString.=$k.'/'.$v.'/';
}
}
$queryString.=$Global['urlsuffix'];
return $queryString;
}
?>
使用很简单
<?php
$_GET= getQueryString();
?>
但是这样还不行,这样只能实现
http://www.xxx.com/index.p... 这样的
中间多了个index.php 为此我们要把他去掉,只好重写
但是有些文件 又不希望这样,比如 样式 图片,那就放条件里
建立一个 .htaccess文件

RewriteEngine on
RewriteCond $1 !^(index\.php|css|pics|themes|js|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
现在OK了,赶快去测试吧

<?php
$_GET= getQueryString();
print_r($_GET);
?>
分页: 1/5 第一页 1 2 3 4 5 下页 最后页 [ 显示模式: 摘要 | 列表 ]