星期五, 二月 04, 2005

rpm安装总结

rpm安装总结

在RedHat Linux和Mandrake等兼容RedHat的发行版中,整个发行版都是利用RPM安装的。所以安装新软件的最好方法是从网络上下载rpm包。

1)用RPM安装软件包,最简单的命令如下:

# rpm -ivh foo-1.0-l.i386.rpm (这里讲的软件包是foo-1.0-l.i386.rpm,以下都是)

foo####################

下面rpm就会输出该软件包的名称,并显示一个状态条。安装很简单。

2)拆除已安装的软件包
要反安装软件包foo,只需输入以下这行命令:

# rpm -e foo

注意:软件包名是foo,而不是rpm文件名"foo-1.0-l.i386.rpm"。

3)升级软件包
升级软件类似于安装软件:

# rpm -Uvh foo-2.0-l.i386.rpm

foo####################

用户要注意的是:rpm会自动反安装相应软件包的老版本。如果老版本软件的配置文件通新版本的不兼容,rpm会自动将其保存为另外一个文件,用户会看到下面的信息:

saving /etc/foo.conf as /etc/foo.conf.rpmsave

这样用户就可以自己手工去更改相应的配置文件。
另外如果用户要安装老版本的软件,用户就会看到下面的出错信息:

# rpm -Uvh foo-1.0-l.i386.rpm

foo packag foo-2.0-l(which is newer) is already installed

error:foo-1.0-l.i386.rpm cannot be installed

如果用户要抢行安装就使用-oldpackage参数。

4)查询软件包
用户可以用rpm -q在rpm的数据库中查询相应的软件,rpm会给出软件包的名称,版本,发布版本号,例如:

# rpm -q foo

foo-2.0-l

下面是查询时可以使用的特定参数:
-a 查询目前系统安装的所有软件包。
-f 文件名查询包括嘎文件的软件包。
-F 同-f参数,只是输入是标准输入(例如 find /usr/bin | rpm -qF)
-q 软件包名 : 查询该软件包
-Q 同-p参数,只是输入是标准输入(例如 find /mnt/cdrom/RedHat/RPMS | rpm -qQ)
下面是输出时的格式选择:
-i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。
-l 显示软件包包含的文件
-s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing
-d 显示软件包中的文档(如man,info,README等)
-c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab等
如果用-v参数就可以得到类似于ls -l的输出

5)用rpm校验软件包
用户可以用rpm来校验已经安装的软件包,rpm可以校验文件大小、MD5校验码、文件权限、类型和属主等信息。
下面是校验时的参数说明:
-a 简单校验软件包中的文件是否存在
-b 校验软件包中的单个文件
-c 校验安装的所有软件包
-d 比较一个源软件包和已经安装的软件包

如果检验通过就没有任何出错信息,如果有出错信息,它的格式如下:出错信息是一个8位的字符串,如果是一个".",就代表没有问题,下面是相应的字符的意义:
5 MD5校验错
S 文件大小错
L 符号连接
T 文件修改时间错
D 设备文件错
U 用户名错
G 组名错
M 属性(包括改写权和文件类型)错
如果用户看到这些信息,最好重新安装或者手工修复。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

rpm 实用技巧!
1)用户可以通过FTP来安装软件包。如果用户能够连上网络,想安装某个新的软件包时,可以直接用它的URL地址来安装:
比如:现在在ftp.linuxsir.com/pub/linux/redhat/RPMS/下有这个文件包:foo-1.0-1.i386.rpm,那就可以用这样的命令:

# rpm -i ftp.linuxsir.com/pub/linux/redhat/RPMS/foo-1.0-1.i386.rpm

来安装,也可以查询!

2)如果用户不小心巫山了几个文件,但不确定到底是那些文件,想对整个系统进行校验,以了解哪些部分可能已经损坏,可以用:

# rpm -Va

3)如果用户碰到一个人不出来的文件,想要知道它是属于那一个软件包的话,可以这样做:

# rpm -qf /usr/X11R6/bin/xjewel

结果会得到以下信息:
xjewel-1.6-1

4)如果用户得到一个新的RPM文件,却不清楚它的内容;或想了解某个文件包将会在系统里安装那些文件,可以这样做:

# rpm -qpi koules-1.2-2.i386.rpm

结果会获得很多信息!


Freebsd 下 升级至 perl5.6

Freebsd 下 升级至 perl5.6

引:
http://www.the7f.com/archives/43.html

计划安装awstats的Geo-IPfree插件,提示perl版本太低,唯有升级perl。

方法1:
cd /usr/ports/lang/perl5
make install
use.perl port

方法2:
安装portupgrade,升级perl
cd /usr/ports/sysutiles/protupgrade
make install
/usr/local/sbin/portupgrade -rf perl

如果安装protupgrade无法下载文件,可以从这里下载pkgtools-20040701.tar.bz2 ,http://www.artfiles.org/freebsd.org/ports/local-distfiles/knu/ ,拷贝到 /usr/ports/distfiles/ 再执行 make install

检查perl版本命令:
perl -v


LAMP 架构服务器性能优化建议(03/11/2004,R1版)

LAMP 架构服务器性能优化建议(03/11/2004,R1版)

  维护“手机之家”( http://www.imobile.com.cn )的服务器有快两年了,也有些经验心得,写在这里给大家分享。

  服务器配置如下:redhat linux 9.0、apache 1.3.29、php 4.3.4、mysql 3.23.58,以下建议均在以上平台上跑的很好,当然也跟你的应用有关系,具体实施要根据实际效果来进行。

  1、众所周知的方法就是使用 Zend Optimizer(简称 ZO,最新版本为 2.5.1) 或者 Zend Performance Suite(简称 ZPS,其中包含 ZO,最新版本为 3.6.0)对 PHP 进行加速。相关软件可到张微波的主页来下载哦,地址为:http://www.5ilinux.com/blog/archives/000093.html

  2、apache配置优化(httpd.conf)
1)修改“Timeout”的值为 30-60,如果你得程序没有执行时间需要很长的话,可以修改到 10-15;
2)修改“KeepAlive”的值为“Off”,这个很有效果,也很有争议,我自己的看法是很有效果,而且并没有影响速度,大家可以自行试验;
3)修改“MaxRequestsPerChild”的值为“2048”,这个还在试验中,一是因为怕有内存泄漏,二是因为 apache 进程会因为随着服务时间的延长,会变得越来越胖(我这里的实际情况是某些 apache 进程会狂吃内存到18MB,晕啊:),不过这设置有没有效果,还在试验中;
4)在不使用 .htaccess 的情况下,将其“<Files .htaccess>”部分设置为“None”方式,如果你使用 PHPMYADMIN 进行管理的话,可以使用 PHPMYADMIN 的 COOKIE 权限控制方式。

  3、卸载不必要的模块,不管是静态编译还是 DSO 模式,以便节省内存占用。具体模块可以参照 apache 的手册,这里就不多说了。PHP 也是同样,我基本上已经把不用的模块都卸载了:)

  4、使用 mod_gzip 进行加速,很简单,就不多说了。

  5、如果你的服务器还是负载很高的话,更极端的方式就是在 httpd.conf 里面将日志停掉了,不过一般要保留 errorlog 才好,以便排错,而且要记得,不是把“CustomLog”注释掉就行了,而要使用“CustomLog /dev/null common”这样的方式才好。

  6、如果你的 PHP 程序使用 Session 对话的话,可以在 php.ini 里面将“session.save_path”设置为“session.save_path = /dev/shm”,因为 /dev/shm 是 linux 系统独有的 TMPFS 文件系统,是以内存为主要存储方式的文件系统,比 RAMDISK 要好,因为可以使用 DISKSWAP 作为补充,而且是系统自带,不需要另行配置,想想吧,从磁盘IO操作到内存操作,速度会快多少?:)你也可以把你所需要的临时文件都写在 /dev/shm 下,只是别忘了,重启就没有啦,我是只存放目标文件的,呵呵。额外的说明资料请看“使用虚拟内存(virtual memory,VM)文件系统和绑定安装”(http://www-900.ibm.com/developer ... m/l-fs3/index.shtml)。

  7、MYSQL 的优化(/etc/my.cnf)
1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;
3)如果不需要的话,可以将二进制日志(binlog)停掉,方法是将“log-bin”注释掉;
4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:

[mysqld]
set-variable = key_buffer=512M
set-variable = max_allowed_packet=4M
set-variable = table_cache=1024
set-variable = thread_cache=64
set-variable = join_buffer_size=32M
set-variable = sort_buffer=32M
set-variable = record_buffer=32M
set-variable = max_connections=512
set-variable = wait_timeout=120
set-variable = interactive_timeout=120
set-variable = max_connect_errors=30000
set-variable = long_query_time=1
set-variable = max_heap_table_size=256M
set-variable = tmp_table_size=128M
set-variable = thread_concurrency=8
set-variable = myisam_sort_buffer_size=128M

你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries

  8、在启动脚本中使用“--log-slow-queries=/home/logs/mysql_slow.log”参数,以便进行 SQL 语句的优化工作,这个其实是很很重要的工作。记得一定要在 my.cnf 中设置“set-variable = long_query_time=1”才行。

  9、另外可以使用 4.0.xx 版本的 MYSQL,4.0.xx 版本除了一些性能提升以外,还有 QueryCache 方法,就是在 SQL 语句查询结果没有变动之前,将其结果进行缓存,下次再进行同样的 SQL 语句查询就可以直接反回结果,当然也是以牺牲内存为前提:)

  10、额外的,对于 LINUX EXT3 文件系统还有一个小技巧可用,就是在修改 /etc/fstab 中的参数,比如“/dev/sdb2 /home ext3 defaults 1 2”改为“/dev/sdb2 /home ext3 noatime 1 2”,“noatime”的意思就是不修改 accesstime,对于磁盘文件读写频繁的服务器也应该可以降低一些效果。不过最好不要远程操作,不然因为修改失误,服务器不能启动了,可别怪我:)

  好了,基本上我用过的方法已经说过一遍了,有些方法是取自于一些很好的文章,由于未作保留,所以无法写出出处,只能泛泛的表示感谢了。其中有些方法也适用于 Windows 平台,大家可以根据自己的服务器、应用情况去进行应用,大家也可一说说自己的办法,比如改用 ZEUS 来做 webserver,我也在找更多的办法来提升服务器性能,比如基于 LINUX KERNEL v2.4 以上内核的一些性能优化方法,从 network 到 swap(因为内核升级,所以一些老版本内核的方法已经不能再使用了:)。我也会进一步更新这篇文章,让大家能够更好的进行服务器的性能提升工作~

  另外欢迎来访问国内数一数二的手机网站,手机之家,地址见下,呵呵~

高春辉
mailto:paulgao@yeah.net
手机之家网站( http://www.imobile.com.cn )


plog安装及与vbb3统一认证

plog安装及与vbb3统一认证

这里的plog是使用的 bb的user表认证,plog无法注册用户,注册用户vbb,修改密码也是在vbb。

安装

1、使用安装脚本:wizard.php

2、安装数据库:install/plog.sql
修改文件夹权限:tmp,gallery 777
修改配制文件 config/config.properties.php

整合

1、需要安装vbb3,如果是vbb2,适当修改认证,2和3在认证的时候的加密方式不同,这里用到的是vbb3

2、修改plog
class/dao/users.class.php

在文件头增加这个函数

// by lendy
function getbbsuser($user, $pass){
$db = mysql_connect('localhost', 'xxxxxx', 'xxxxxx');
mysql_select_db('vbb3_xxxxxx',$db);
$query = "SELECT userid,username,password,email,salt FROM user WHERE username = '".addslashes($user)."'";
$result = mysql_query($query,$db);
$bbsuserinfo = mysql_fetch_array($result);
if($bbsuserinfo){
if($bbsuserinfo['password']==md5(md5($pass).$bbsuserinfo['salt'])){
return $bbsuserinfo;
}
}
}
// by lendy

修改函数 authenticateUser

function authenticateUser( $user, $pass )
{
// by lendy
$bbsuser = getbbsuser($user, $pass);
$bbsusername = $bbsuser['username'];
$bbsuserid = $bbsuser['userid'];
$bbsemail = $bbsuser['email'];
$query = "SELECT * FROM ".$this->getPrefix()."users WHERE user = '".$bbsusername."'";

$result = $this->_db->Execute( $query );

if( $result == false )

return false;

if( $result->RecordCount() == 1 )
return true;
else
if($bbsusername!=''){
$query = "INSERT INTO ".$this->getPrefix()."users(id,user,password,email,about) values($bbsuserid,'" . $bbsusername . "','" . md5('12345678') . "','$bbsemail','')";
$this->_db->Execute( $query );
//$owner_id = $this->_db->_insertid();
$owner_id = $bbsuserid;
$query = "INSERT INTO ".$this->getPrefix()."blogs(id,blog,owner_id,about,settings) values($bbsuserid,'" . $bbsusername . "'s WeBlogs',$owner_id,'',
'xxxxxxxxxxxxxx'
)";
$this->_db->Execute( $query );
$query = "INSERT INTO ".$this->getPrefix()."users_permissions(id,user_id,blog_id,permission_id) values($bbsuserid,$bbsuserid,$bbsuserid,1)";
$this->_db->Execute( $query );
$query = "INSERT INTO ".$this->getPrefix()."bayesian_filter_info(blog_id,total_spam,total_nonspam) values($bbsuserid,0,0)";
$this->_db->Execute( $query );
return true;
}
return false;
// by lendy
}

修改函数 getUserInfo

function getUserInfo( $user, $pass )
{
// by lendy
$bbsuser = getbbsuser($user, $pass);
$bbsusername = $bbsuser['username'];
$query = "SELECT * FROM ".$this->getPrefix()."users WHERE user = '".$bbsusername."'";
// by lendy
$userInfo = $this->_getUserInfoFromQuery( $query );

return $userInfo;
}

禁用注册
修改 register.php
在文件头增加 exit();

summary.php页面乱码修正

summary.php中的中文乱码问题出在模版的smarty變數修飾子(Variable Modifier--escape)
在plog安装根目录的templates/summary目录下,修改如下:
index.template及bloglist.template两个文件中删除掉|escape:"htmlall"紅色部份的代码即可。

完毕!


Turck MMCache 2.4.6 for PHP 4.3.10

Turck MMCache 2.4.6 for PHP 4.3.10

在 FreeBSD php4.3.10 上安装 turck-mmcache-2.4.6(适合目前php4.x任何版本的安装)

http://turck-mmcache.sourceforge.net/

http://sourceforge.net/project/showfiles.php?group_id=69426

我的安装笔记(FreeBSD4.9)

参考文章:http://blog.gmane.org/gmane.comp.web.midgard.user/month=20040101/page=2

1)tar zxvf turck-mmcache-2.4.6.tar.gz
2)cd turck-mmcache-2.4.6
3)/usr/local/bin/phpizecd
4)./configure --enable-mmcache=shared --with-php-config=/usr/local/bin/php-config
出错,提示 "Try `ltconfig --help' for more information." 原信息记不清了。
5)ee configure
Added "lt_target=$ac_cv_build" inbetween

*) lt_target="$target" ;;
esac

and

# Check for any special flags to pass to ltconfig.
libtool_flags="--cache-file=$cache_file"
test "$enable_shared" = no && libtool_flags="$libtool_flags
--disable-shared"

重新 configure
5)./configure --enable-mmcache=shared --with-php-config=/usr/local/bin/php-config
6)make
7)make install


给篱笆打工日记

拖着疲惫的身躯回到了家。

进篱笆公司半年来,最近几个星期,真是一天比一天累了。

做的事情越来越杂。 人象操作系统一样,同时在几个事情里切换。 我最讨厌这样的工作状态, 结果往往是什么事情都做不好。

公司发展规模越来越大了, 应该是好事情, 但我总有感觉,公司将逐步开始机构扩大的同时,以后运作效率会逐步降低,并逐步诞生官僚作风了。 虽然我也说不出个具体道理来。 但总觉得和半年前刚进公司那时候相比,发展变化真的太大了。

也许我是我不懂管理的原因,反正我看不明白有些变化。 呵呵。 为什么公司发展到一定规模后,都不可避免的要弄很多在我看来很官僚很形式上的东西。 结果往往是一件事情办事人员可能才1个,发调头的人可能有3-4个。

还是去睡觉了...