CentOS 5.3 通过yum升级php到5.2.9版本的方法

转自:开源ISPCP社区 http://www.ispcpcn.com/article/13/
CentOS5.3的php版本默认为5.1.6,然后在5.2.9版本之前的的php都存在一个漏洞,但是目前网上很多地方都无法使用yum update php*升级到5.2.9,比较常见的是升级到5.2.6版本的,经过搜索国外资料,现在终于找到一种升级CentOS的php到5.2.9的方法。
注意,此方法只能在官方的php版本上升级,如果你使用网上的升级到5.2.6版本的升级方法已经升级了,将无法使用本方法升级php。
运行下面命令:

wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/5/remi/i386/remi-release-5-7.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

然后编辑/etc/yum.repos.d/remi.repo
#vi /etc/yum.repos.d/remi.repo
在这个文件的最后增加一行:
priority=1

保存退出。

/etc/yum.repos.d/epel.repo和/etc/yum.repos.d/epel-testing.repo这两个文件也按照上面的方法进行编辑!

使用下面的命令进行升级,但是经过测试,如果单独升级php将提示失败,只有联通mysql一起升级才可以,所以我们必须执行以下命令才能升级php到5.2.9版本:
yum –-enablerepo=remi update php* mysql*

yum安装vsftpd

1. yum -y install vsftpd (yum 自动安装);
2. 修改vsftpd的配置:
在/etc/vsftpd/vsftpd.conf 文件,修改默认配置,包括监听地址和端口,是否打开 tcp、psav模式等等

3.启动vsftpd服务:
运行service vsftpd start即可,或者运行/etc/init.d/vsftpd start
说明:
创建匿名用户根目录: anon_root=/var/ftp/
匿名用户上传文件:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后创建供匿名用户上传文件的目录,并设定权限:
# mkdir /var/ftp/incoming
# chmod o+w /var/ftp/incoming
file_open_mode=0777 ##如果希望上传的文件可以执行,设此值为0777。默认值为0666。
限制用户在自家目录
1、限制所有的本地用户在自家目录
chroot_local_user=YES
2、限制部分本地用户在自家目录
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
在/etc/vsftpd.chroot_list文件中加入要限制的本地用户名。注意一个用户名一行。
日志设置:
xferlog_enable=YES|NO
xferlog_file=
这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。
用setup 可以把它选择为开机自动运行
关于windows用户访问服务器时候出现乱码的问题
windows访问vsftp出现乱码因为windows默认编码是GB2312,linux用的是UTF-8编码,所以上传文件会有乱 码,这时可以更改修改 /etc/sysconfig/i18n文件,将第二行改成这样:LANG = "zh_CN.GB2312"就可以了
vsFTP(二)让虚拟账户使用不同的主目录,并且又完全权限
(转自http://blog.chinaunix.net/u1/42928/showart_334305.html)
virtual_user的主目录: /home/ftp
vsftpd.conf中加入
guest_username=virtual_user
user_config_dir=/etc/vsftpd_user_config
user_sub_token=$USER
/etc/vsftpd_user_config目录下为每个用户建一个配置文件,文件名与用户名相同,内容中必须有
local_root=/home/ftp/$USER
让虚拟账户使用不同的主目录,并且又完全权限, 在vsftpd.conf中输入下面代码:anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd
userlist_enable=YES
one_process_model=NO
anon_world_readable_only=NO
guest_enable=YES
guest_username=nihao
listen=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd_user_config
user_sub_token=$USER
=====================================
创建数据库文件
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
且设置权限
chmod 600 /etc/vsftpd/vsftpd_login.db
创建数据库的PAM文件
vi vsftpd.pam 内容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
并复制到/etc/pam.d下
cp vsftpd.pam /etc/pam.d
设置虚拟用户的根目录
useradd -d /home/ftp vftp
限制个人用户目录:
user_config_dir=/etc/vsftpd/vsftpd_user_conf
在该目录下建立与特定虚拟用户同名的文件
在用户文件里加入:
local_root=/home/test
就可设置用户的目录
并按实际需要开启相关的权限
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_umask=
匿名用户新增文件的umask 数值。默认值为077。
vi vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_umask=022
anon_umask=022
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vftp
listen=YES
pam_service_name=vsftpd.pam
user_config_dir=/www/servers/vsftpdv/user
pasv_enable=YES
pasv_min_port=10240
pasv_max_port=10250
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser

CentOS 5.4 服务器配置 yum安装Apache+php+Mysql

1. 更新系统内核到最新.
[root@linuxfei ~]#yum -y update
系统更新后,如果yum安装时提示错误信息,请执行以下命令修复.
[root@linuxfei ~]#rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*
2. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件
y[root@linuxfei ~]#um -y install httpd php mysql mysql-server php-mysql
//安装mysql扩展
[root@linuxfei ~]#yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
//安装php的扩展
[root@linuxfei ~]# yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
//安装apache扩展
[root@linuxfei ~]#yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
一次性粘贴安装:
[root@linuxfei ~]# yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql

3. 启动服务配置
[root@linuxfei ~]# /sbin/chkconfig httpd on [设置apache为自启动]
[root@linuxfei ~]# /sbin/chkconfig –-add mysqld [mysql服务]
[root@linuxfei ~]# /sbin/chkconfig mysqld on [mysqld服务]
[root@linuxfei ~]# /sbin/service httpd start [自启动 httpd 服务]
[root@linuxfei ~]# /sbin/service mysqld start [自启动mysqld服务]

4.设置mysql数据库root帐号密码。
[root@linuxfei ~]# mysqladmin -u root password 'linuxfei' [引号内填密码]

css - 网页上兼容各浏览器的鼠标光标

之前有这类广告效果,直接写

 

body {cursor:url("http://hitn.bdimg.com/cade007/tnfile/item/a333bffd6c56d51608244d7c.cur")}

发现只有ie下可用,其他浏览器不兼容。今天无意中发现一个网站上的鼠标光标在其他浏览器也可以兼容,看了下样式,原来要加个default就可以了。

如下:

body {cursor:url("http://hitn.bdimg.com/cade007/tnfile/item/a333bffd6c56d51608244d7c.cur"), default;}

 

备忘 - CentOs 5 安装Zend Optimizer

一,下载

 

cd /usr/local/src
wget http://downloads.zend.com/optimizer/3.3.3/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
tar -xzvf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
./ZendOptimizer-3.3.3-linux-glibc23-i386/install.sh

执行这个脚本后会自动图形界面下提示安装。

php.ini配置文件目录是:/etc

代码 - 解决ie6浮动层随页面滚动而闪动的问题

随页面滚动而滚动的浮层,在ie6下会出现闪动的情况,只要body上加入下面的样式,就可以解决这个问题。

body{background-image:url(http://www1.pconline.com.cn/product09/v3/images/nothing.png);background-attachment: fixed;  }

参考例子:闪动  不闪动

心得 - 关于document.referrer的一点发现

由于想对女性网SNS的站内广告入口做一些来源统计,就需要用到document.referrer来获取点击来源,有些入口有可能是flash 的,不知道flash里的链接来源不知道能否获得,所以做了个例子测试了一下。

 flash广告入口

flash里面的链接代码为:

 

on(release)
{getURL("[http://www1.pclady.com.cn/test/20100226/flashtest.html","_blank");}

 

点击广告可跳转到这个页面,这个页面是把document.referrer输出,代码如下

 

<script>
document.write('referrer:'+document.referrer);
</script>

 

测试结果

ie6:referrer为空。

firefox3.6:referrer:http://www1.pclady.com.cn/test/20100226/previewAd.html 正确的输出了flash所在页面的url

chrome:referrer:http://imgad1.3conline.com/ivy/image/20102/26/1267166875222.swf;得到的结果是flash文件的路径。

flash学习笔记:stage root this sprite MovieClip shape 概念详解

工作中有一部分是处理公司的富媒体广告,客户提供的flash素材也是五花八门,为了能处理得更好,也为了能研究更多的富媒体广告形式,所以也不得不对flash要进行更深入的了解。

最近在研究as3的过程中,对stage root shape sprite MovieClip这些概念理解不透,找了些资料并整理了一下。

root stage this

stage :显示对象的舞台,是上图中最顶层的显示对象。

类继承关系是:Stage -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object

无法以全局方式访问 Stage 对象。 而是需要利用 DisplayObject 实例的 stage 属性进行访问。

 

Flash 应用程序只有一个 Stage 对象。 例如,您可以创建多个显示对象并加载到显示列表中,每个显示对象的 stage 属性是指相同的 Stage 对象(即使显示对象属于已加载的 SWF 文件)。

如果显示对象未添加到显示列表,则其 stage 属性会设置为 null

 

root :根,在上面的图示上的第二层。

root是DisplayObject类的一个实例。

类继承关系是:DisplayObject -> EventDispatcher -> Object

通过DisplayObject 的root属性进行访问。

对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。 对于代表已加载图像文件的位图对象,root 属性就是位图对象本身。 对于第一个加载的 SWF 文件的主类的实例,root 属性就是显示对象本身。 Stage 对象的 root 属性是 Stage 对象本身。 对于任何未添加到显示列表的显示对象,root 属性设置为 null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载 SWF 文件中顶级显示对象的子级。 

例如,如果您通过调用 Sprite() 构造函数方法创建新的 Sprite 对象,则其 root 属性将为 null,除非您将其添加到显示列表中(或添加到不在显示列表中但属于 SWF 文件中顶级显示对象的子级的显示对象容器中)。

对于加载的 SWF 文件,即使用于加载文件的 Loader 对象未在显示列表中,SWF 文件中的顶级显示对象也会为其本身设置 root 属性。 在 Loader 对象添加为对其设置 root 属性的显示对象的子级前,它不会设置自己的 root 属性。

this和其他OOP语言一样,是指向当前引用的对象,例如在主时间轴上的this,就是root。

Sprite  MovieClip  Shape :Sprite个3.0中我们打交道最多的容器了。一句话,它是去掉了时间轴的MovieClip(即阉割版MovieClip)。如我开头例子所说,倘若我们只是为了创建一个容器,那么Sprite是首选。甚至可以说,我们这些写代码的开发人员,90%以上的情况都只需要和Sprite打交道。含有时间轴的MovieClip一般是Flash工具创建出来的,往往只需要加载就可以了。准确的说,Sprite比ActionScript 2中的MovieClip不止少一个TimeLine,如装载。Sprite中也含有Graphic对象,这意味着,它也可以直接在其中代码绘图。

 

但我们始终要记住,Sprite不同于Shape,区别就在于Sprite是容器,而Shape不是。

从代码角度说,就是,Sprite可以addChild(),但Shape不可以。

继承关系:

Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object

MovieClip -> Sprite -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object

Shape -> DisplayObject -> EventDispatcher -> Object

 

 

参考资料:

flash api

http://nwhy.org/as3-stage-root-this.html

http://www.cnblogs.com/jiahuafu/archive/2009/06/30/1514154.html

 

key/value nosql数据库资料

最近nosql的消息挺多的,相应的框架也层出不穷。
找了点资料学习学习,记录一下。


js实现页面滚动到相应位置才加载

看到淘宝很多地方会在页面滚动到相应位置才去加载内容,其实在我们网站上也是有适用的地方,比如评论、论坛等接口的调用,通常是在页面相对后的位置,对于很多用户来说可能根本就没有关注。

为了研究这个问题,写了个滚动到相应位置才进行加载的代理程序。

这个代码还只是初级版本,还要进一步优化和改善。

 

/*
id:函数将根据这个id所对应的对象来计算该对象的位置,这个id必须是可见元素的id,像script标签的id貌似不行。
fn:当滚动到页面的相应位置的时候,执行的内容。
*/

function scrollLazy(id,fn){
var isLoaded = false;//判断接口是否已调用,以免重复调用
if(typeof document.getElementById(id) != 'object' || typeof fn != 'function') return;

if (p().sTop + p().cHeight + 100 >= t(id)) {//如果对象位置在首屏,则直接执行函数,无需绑定scroll事件。
fn(); return;
};

if (/MSIE/.test(navigator.appVersion)) window.attachEvent("onscroll",loadFn);
else window.addEventListener('scroll',loadFn, false);

function loadFn(){
if(p().sTop+p().cHeight+100>=t(id) && !isLoaded){
fn();
isLoaded = true;
}
}

function p(){//页面高度和滚动位置
return {cHeight:(/CSS1Compat/.test(document.compatMode)?document.documentElement.clientHeight:document.body.clientHeight),
sTop:(/CSS1Compat/.test(document.compatMode)&&(document.documentElement.scrollTop==0)?document.body.scrollTop:document.documentElement.scrollTop)};
}

function t(id){//判断元素距离页面顶端的距离
var o = document.getElementById(id);
var p = 0;
while(o){
p += o.offsetTop;
o = o.offsetParent;
}
return p;
}
}

demo1
demo2