CentOS 下 Apache + Subversion 实现版本控制(转载)

2010年1月17日 没有评论

本文测试环境是centos5.1 apache版本:httpd-2.2.9 subversion版本:subversion-1.5.2

步骤:
一.安装apr跟apr-util
二.安装apache服务器
三. 安装subversion
四. 配置subversion
五. 配置apache的httpd.conf
六. 验证安装
七.导入数据到资料库
八.版本库服务器的同步(新加入的)
附:安装过程中遇到的问题

一.安装apr、apr-util跟zlib
1.下载apr跟apr-util
apr-1.3.3.tar.gz apr-util-1.3.4.tar.gz zlib-1.2.3.tar.gz
2.解压
  tar zvxf apr-1.3.3.tar.gz
  tar zvxf apr-util-1.3.4.tar.gz
  tar zvxf zlib-1.2.3.tar.gz
3.安装
  cd apr-1.3.3
  ./configure –prefix=/usr/local/apr
  make && make install

  cd apr-util-1.3.4
  ./configure  –with-apr=/usr/local/apr
  Make && make install

  cd zlib-1.2.3
  ./configure  –prefix=/usr/local/zlib
  Make && make install

二.安装apache服务器:
1. 下载最新的apache 2.2.9
httpd-2.2.9.tar.gz
2.解压
tar zvxf htt-2.2.9.tar.gz
3. 安装
  ./configure \
“–prefix=/usr/local/apache2” \
“ –enable-so” \
“–enable-dav” \
“–with-apr=/usr/local/apr/bin/apr-1-config” \
“–with-apr-util=/usr/local/apr/bin/apu-1-config”
  make
  make install

注意:–prefix指定安装目录,注意一定要加–enable-so是核心能够装载DSO和–enable-dav是安装mod_dav_svn.so跟mod_authz_svn.so这两个模块
4.测试
  打开浏览器输入http://服务器ip  如果出现
It Works!
  Apache安装成功

三. 安装subversion
1. 下载最新的subversion-1.5.2
subversion-1.5.2.tar.gz
2. 安装
  ./configure \
“–prefix=/usr/local/subversion” \
“ –with-apxs=/usr/local/apache2/bin/apxs” \
“–with-apr=/usr/local/apr/bin/apr-1-config” \
“–with-apr-util=/usr/local/apr/bin/apu-1-config” \
“–with-ssl” \
“–with-zlib=/usr/local/zlib” \
“–enable-maintainer-mode”
make
make install

3. 为了方便使用subversion的命令,将subversion安装目录下的bin目录加入到Path中
vi /etc/profile
最后加入:
  SVN_HOME=/usr/local/subversion
PATH=$PATH:$SVN_HOME/bin:
export SUSBVERSION PATH

四. 配置subversion
1. 创建账号密码文件
htpasswd –c /data/svn/passwd.conf apache
输入密码,两次确认
注意:第一次设置用户密码要加入 –c 这个参数,以后就可以不用了
有的人可能会遇到:command not found ,没关系你可以到Apache的安装目录下面去找,apache/bin/htpasswd
2. 创建资料库
首先要创建一个资料库(我使用单资料库的方式),使用svnadmin增加资料库
cd /usr/local/subversion/bin
   ./svnadmin create /data/svn/svnroot/www
到www下看是不是多了文件,多了就是说明创建成功
3.创建权限文件
  Touch –p /data/svn/authz.conf
  vi authz.conf
[groups]  #组
Admin = apache #admin组成员
[ggg:/] #版本库ggg的权限
@Admin = rw #admin组有读写的权限
test1 = rw #test1有读写的权限
[www:/]
@Admin = rw
test2 = rw
  [/]
     * = r #svn父目录所有人都与读的权限
注意:最后的[/]这个要设置好了,这里面的权限设置可以让你对ggg和www的版本库有相同的权限,一般不要也行,个人建议不要

五. 配置apache的httpd.conf
打开apache的conf/httpd.conf,安装subversion后,apache的conf/httpd.conf文件会自动增加了模块
LoadModule dav_svn_module    modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

相应的so文件也自动copy到了apache/modules。这些工作就不用自己动手了。

需要自己动手修改apache下的httpd.conf最后增加以下内容

【参数说明见下面的图】


单个版本库:
<Location /svn>
DAV svn
SVNPath /data/svn/svnroot/www
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/passwd.conf  
AuthzSVNAccessFile /data/svn/authz.cong

Require valid-user
</Location>

多个版本库:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /data/svn/svnroot
AuthType Basic
AuthName " Subversion repository "
AuthUserFile /data/svn/passwd.conf
AuthzSVNAccessFile /data/svn/authz.conf
Require valid-user
</Location>

注意:
(1) 单个版本库就是SVNPath /data/svn/svnroot/www跟./svnadmin create /data/svn/svnroot/www目录要一样,要不忙死你……【这个是对单个版本库】,多个版本库知道svn的主目录,我这就是 SVNParentPath /data/svn/svnroot
(2) AuthzSVNAccessFile是权限控制文件,单个版本库不需要,多个版本库要设置不同版本库的权限
(3) 目录svnroot目录的权限设置成755

注:下面的六、七是单个版本库测试的效果,多个版本库类似!

六. 验证安装
打开浏览器,输入地址为http://服务器ip/svn
出现登陆窗口,输入用户名跟密码,


如果可以正常打开如上页面则说明安装配置正常,可以正常使用了,在页面上可以看到由于目前资料库中没有内容,因此看到的内容为空。

七.导入数据到资料库
Cd /usr/local/subversion/bin
./svn import /要导入的目录 file:///data/svn/svnroot -m “说明文字”
重新打开浏览器,输入地址http://服务器ip/svn,输入用户名密码,出现


好了,成功!

八.版本库服务器的同步

  1.单版本库跟服务器目录的同步:
进入到版本库下的hooks下去
svn checkout file:///版本库的目录 /本地要取出的目录
  Cd /data/svn/svnroot/www/hookd
  Vi post-commit

#!/bin/sh
SVN=/usr/local/subversion/bin/svn
WEB=/data/www #web目录要更新同步的目录
$SVN update –username apache –passwd 123456 $WEB   #这里面的username跟password一定要有读写的权限

  Chmod 757 post-commit #给它可执行的权利
  2.多版本更服务器目录的同步
  进入到版本库下的hooks下去
svn checkout file:///版本库的目录 /本地要取出的目录
Cd /data/svn/svnroot/www/hookd
  Vi post-commit

#!/bin/sh
SVN=/usr/local/subversion/bin/svn
$SVN update –username apache –passwd 123456 /home   #里面的username跟password一定要有读写的权限

  Chmod 757 post-commit #给它可执行的权利

注意:(红色字体一定要注意)
1.svn checkout file:///版本库的目录 /本地要取出的目录 ——>这步一定要做要不会同步修改的
2.目录位置一定要对应好了,要不出现问题累死……


附:安装过程中遇到的问题

1.编译subversion时出现少expat库
解决:下载expat-2.0.0.tar.gz安装皆可
2.安装subversion时,编译到最后会出现一段
configure: WARNING: we have configured without BDB filesystem support
大概是不能创建db格式的版本库
解决:这个没什么关系,一般不会有多大影响
3.安装subversion时,make没问题,make install时出现
/usr/local/src/subversion-1.5.2/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file or directory
意思是找不到libexpat.so.1这个文件
运行 whereis libexpat.so.1
libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1
解决:vi  /etc/ld.so.conf
加入libexpat.so.1的目录 /usr/local/lib/ 保存退出
运行ldconfig
4.【这个问题是我创建单个版本库时遇到的】安装好了后,浏览器打开http://服务器ip/svn,登陆出现不了页面,出现:
<D:error> <C:error/> <m:human-readable errcode="2"> Could not open the requested SVN filesystem </m:human-readable> </D:error>
解决:这是httpd.conf里的<Locate svn>中的SVNPath指向错误没指到创建的资料库
   第四步的最后我强调的东西
5.这是开始安装时会出现的错误,安装subversion时会出现找不到arp的问题
解决:在编译subversion时加入
   –with-apr=/usr/local/apr/bin/apr-1-config
–with-apr-util=/usr/local/apr/bin/apu-1-config
6.插张访问方式跟服务器安装方式关系的介绍图:

分类: Linux 标签:

CentOS 下 Apache + Subversion 实现版本控制(转载)

2010年1月17日 没有评论

本文测试环境是centos5.1 apache版本:httpd-2.2.9 subversion版本:subversion-1.5.2

步骤:
一.安装apr跟apr-util
二.安装apache服务器
三. 安装subversion
四. 配置subversion
五. 配置apache的httpd.conf
六. 验证安装
七.导入数据到资料库
八.版本库服务器的同步(新加入的)
附:安装过程中遇到的问题

一.安装apr、apr-util跟zlib
1.下载apr跟apr-util
apr-1.3.3.tar.gz apr-util-1.3.4.tar.gz zlib-1.2.3.tar.gz
2.解压
  tar zvxf apr-1.3.3.tar.gz
  tar zvxf apr-util-1.3.4.tar.gz
  tar zvxf zlib-1.2.3.tar.gz
3.安装
  cd apr-1.3.3
  ./configure –prefix=/usr/local/apr
  make && make install

  cd apr-util-1.3.4
  ./configure  –with-apr=/usr/local/apr
  Make && make install

  cd zlib-1.2.3
  ./configure  –prefix=/usr/local/zlib
  Make && make install

二.安装apache服务器:
1. 下载最新的apache 2.2.9
httpd-2.2.9.tar.gz
2.解压
tar zvxf htt-2.2.9.tar.gz
3. 安装
  ./configure \
“–prefix=/usr/local/apache2” \
“ –enable-so” \
“–enable-dav” \
“–with-apr=/usr/local/apr/bin/apr-1-config” \
“–with-apr-util=/usr/local/apr/bin/apu-1-config”
  make
  make install

注意:–prefix指定安装目录,注意一定要加–enable-so是核心能够装载DSO和–enable-dav是安装mod_dav_svn.so跟mod_authz_svn.so这两个模块
4.测试
  打开浏览器输入http://服务器ip  如果出现
It Works!
  Apache安装成功

三. 安装subversion
1. 下载最新的subversion-1.5.2
subversion-1.5.2.tar.gz
2. 安装
  ./configure \
“–prefix=/usr/local/subversion” \
“ –with-apxs=/usr/local/apache2/bin/apxs” \
“–with-apr=/usr/local/apr/bin/apr-1-config” \
“–with-apr-util=/usr/local/apr/bin/apu-1-config” \
“–with-ssl” \
“–with-zlib=/usr/local/zlib” \
“–enable-maintainer-mode”
make
make install

3. 为了方便使用subversion的命令,将subversion安装目录下的bin目录加入到Path中
vi /etc/profile
最后加入:
  SVN_HOME=/usr/local/subversion
PATH=$PATH:$SVN_HOME/bin:
export SUSBVERSION PATH

四. 配置subversion
1. 创建账号密码文件
htpasswd –c /data/svn/passwd.conf apache
输入密码,两次确认
注意:第一次设置用户密码要加入 –c 这个参数,以后就可以不用了
有的人可能会遇到:command not found ,没关系你可以到Apache的安装目录下面去找,apache/bin/htpasswd
2. 创建资料库
首先要创建一个资料库(我使用单资料库的方式),使用svnadmin增加资料库
cd /usr/local/subversion/bin
   ./svnadmin create /data/svn/svnroot/www
到www下看是不是多了文件,多了就是说明创建成功
3.创建权限文件
  Touch –p /data/svn/authz.conf
  vi authz.conf
[groups]  #组
Admin = apache #admin组成员
[ggg:/] #版本库ggg的权限
@Admin = rw #admin组有读写的权限
test1 = rw #test1有读写的权限
[www:/]
@Admin = rw
test2 = rw
  [/]
     * = r #svn父目录所有人都与读的权限
注意:最后的[/]这个要设置好了,这里面的权限设置可以让你对ggg和www的版本库有相同的权限,一般不要也行,个人建议不要

五. 配置apache的httpd.conf
打开apache的conf/httpd.conf,安装subversion后,apache的conf/httpd.conf文件会自动增加了模块
LoadModule dav_svn_module    modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

相应的so文件也自动copy到了apache/modules。这些工作就不用自己动手了。

需要自己动手修改apache下的httpd.conf最后增加以下内容

【参数说明见下面的图】


如果可以正常打开如上页面则说明安装配置正常,可以正常使用了,在页面上可以看到由于目前资料库中没有内容,因此看到的内容为空。

七.导入数据到资料库
Cd /usr/local/subversion/bin
./svn import /要导入的目录 file:///data/svn/svnroot -m “说明文字”
重新打开浏览器,输入地址http://服务器ip/svn,输入用户名密码,出现


好了,成功!

八.版本库服务器的同步

  1.单版本库跟服务器目录的同步:
进入到版本库下的hooks下去
svn checkout file:///版本库的目录 /本地要取出的目录
  Cd /data/svn/svnroot/www/hookd
  Vi post-commit

#!/bin/sh
SVN=/usr/local/subversion/bin/svn
WEB=/data/www #web目录要更新同步的目录
$SVN update –username apache –passwd 123456 $WEB   #这里面的username跟password一定要有读写的权限

  Chmod 757 post-commit #给它可执行的权利
  2.多版本更服务器目录的同步
  进入到版本库下的hooks下去
svn checkout file:///版本库的目录 /本地要取出的目录
Cd /data/svn/svnroot/www/hookd
  Vi post-commit

#!/bin/sh
SVN=/usr/local/subversion/bin/svn
$SVN update –username apache –passwd 123456 /home   #里面的username跟password一定要有读写的权限

  Chmod 757 post-commit #给它可执行的权利

注意:(红色字体一定要注意)
1.svn checkout file:///版本库的目录 /本地要取出的目录 ——>这步一定要做要不会同步修改的
2.目录位置一定要对应好了,要不出现问题累死……


附:安装过程中遇到的问题

1.编译subversion时出现少expat库
解决:下载expat-2.0.0.tar.gz安装皆可
2.安装subversion时,编译到最后会出现一段
configure: WARNING: we have configured without BDB filesystem support
大概是不能创建db格式的版本库
解决:这个没什么关系,一般不会有多大影响
3.安装subversion时,make没问题,make install时出现
/usr/local/src/subversion-1.5.2/subversion/svnversion/.libs/lt-svnversion: error while loading shared libraries: libexpat.so.1: cannot open shared object file: No such file or directory
意思是找不到libexpat.so.1这个文件
运行 whereis libexpat.so.1
libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1
解决:vi  /etc/ld.so.conf
加入libexpat.so.1的目录 /usr/local/lib/ 保存退出
运行ldconfig
4.【这个问题是我创建单个版本库时遇到的】安装好了后,浏览器打开http://服务器ip/svn,登陆出现不了页面,出现:
<D:error> <C:error/> <m:human-readable errcode="2"> Could not open the requested SVN filesystem </m:human-readable> </D:error>
解决:这是httpd.conf里的<Locate svn>中的SVNPath指向错误没指到创建的资料库
   第四步的最后我强调的东西
5.这是开始安装时会出现的错误,安装subversion时会出现找不到arp的问题
解决:在编译subversion时加入
   –with-apr=/usr/local/apr/bin/apr-1-config
–with-apr-util=/usr/local/apr/bin/apu-1-config
6.插张访问方式跟服务器安装方式关系的介绍图:


单个版本库:
<Location /svn>
DAV svn
SVNPath /data/svn/svnroot/www
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/passwd.conf  
AuthzSVNAccessFile /data/svn/authz.cong

Require valid-user
</Location>

多个版本库:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /data/svn/svnroot
AuthType Basic
AuthName " Subversion repository "
AuthUserFile /data/svn/passwd.conf
AuthzSVNAccessFile /data/svn/authz.conf
Require valid-user
</Location>

注意:
(1) 单个版本库就是SVNPath /data/svn/svnroot/www跟./svnadmin create /data/svn/svnroot/www目录要一样,要不忙死你……【这个是对单个版本库】,多个版本库知道svn的主目录,我这就是 SVNParentPath /data/svn/svnroot
(2) AuthzSVNAccessFile是权限控制文件,单个版本库不需要,多个版本库要设置不同版本库的权限
(3) 目录svnroot目录的权限设置成755

注:下面的六、七是单个版本库测试的效果,多个版本库类似!

六. 验证安装
打开浏览器,输入地址为http://服务器ip/svn
出现登陆窗口,输入用户名跟密码,

分类: Linux 标签:

CentOS 下 Apache + Subversion 实现版本控制

2010年1月17日 没有评论

       首先要说明一点的是Apache并不是必须安装的,如果你只用在CentOS下本地实现版本控制的话,否则你至少要选择一种服务器与SNV配合使用才能实现远程版本控制,比较推崇使用Apache,好处实在太多了,比如多种身份验证,可配置使用SSI加密等高级功能,当然,Apache也存在一些缺点,比如http本身是无状态连接的,结果是导致连接速度相对要慢一点,不过本人在实际使用过程中感觉,只要你不是发烧极别的灰骨,基本可以忽略,呵呵.

      CentOS官方有资料专门介绍如何配置SVN的,不过官方都是用yum方式安装的,确实YUM有时候确实好用,不过对于初学者还是推荐自编译安装,在这一过程中出现的问题自已试着解决,其实是一件非常有效的学习方法,也是非常有趣的一件事.

       CentOS官方资料: http://wiki.centos.org/HowTos/Subversion?highlight=(subversion)

安装步骤:

1.安装Apache
2.安装subversion
3.创建版本库

Apache安装(原转载的文章感觉这一块讲的不是很好,就加上了这一块.):

1、下载:CentOS Apache
[root@localhost src]# chmod +x httpd-2.2.8.tar.gz
[root@localhost src]# tar -zxvf httpd-2.2.8.tar.gz

2)CentOS Apache设置编译器的编译参数
[root@localhost src]# cd httpd-2.2.8
[root@localhost httpd-2.2.8]# ./configure –prefix=/usr/local/apache2 –enable-module=so

3)CentOS Apache编译和安装:
[root@localhost httpd-2.2.8]# make; make install
#如果没有错误的话,那么Apache就已经安装在/usr/local/apache2目录中了

4、CentOS Apache启动服务:
[root@localhost httpd-2.2.8]# /usr/local/apache2/bin/apachectl start

5、CentOS Apache确定启动状:
[root@localhost apache2]# netstat -utl
tcp 0 0 *:http *:* LISTEN
#看到上面这行就表示你的Apache已经启动。
#用浏览器访问,看到It works!,说明apache已经安装成功了,恭喜您!

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

正文,嘿嘿

一、准备好安装包:

①apr-1.3.6.tar.gz  下载地址:http://apr.apache.org/

②apr-util-1.3.8.tar.gz

③subversion-1.6.3.tar.gz 下载地址: http://subversion.tigris.org/

④subversion-deps-1.6.3.tar.gz

⑤httpd-2.2.9.tar.gz 下载地址:http://httpd.apache.org/

注意:apach的版本 与 subversion版本的兼容问题,官网都有介绍的

二、开始安装:把以上安装包上传至/usr/local目录,cd /usr/local 进入该目录

1、安装apr

     tar zxvf apr-1.3.6.tar.gz #解压包

     cd apr-1.3.6

     ./configure

     make

     make install

2、安装apr-util

     tar zxvf apr-util-1.3.8.tar.gz

     cd apr-util-1.3.8

     ./configure –with-apr=/usr/local/apr

     make

     make install

3、安装 apache

     tar zxvf httpd-2.2.9.tar.gz

     cd httpd-2.2.9

     ./configure –prefix=/usr/local/apache2.2.9 –enable-dav –enable-so –enable-maintainer-mode –with-apr=/usr/local/apr/bin/apr-1-config –with-apr-util=/usr/local/apr/bin/apu-1-config #–prefix表示把apache安装在指定目录

     make

     make install

4、安装subversion

     tar zxvf subversion-1.6.3.tar.gz

     tar zxvf subversion-deps-1.6.3.tar.gz

     cd subversion-1.6.3

     ./configure –prefix=/opt/svn –with-apxs=/usr/local/apache2.2.9/bin/apxs –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr

     make

     make install

     至此,安装基本完毕,再配置下就可以使用了

     注意:因为这些安装包需要gcc编译,所以要确保linux上装有gcc程序,否则是没办法进行安装的

三、在apache中配置SVN

     vi /usr/local/apache2.2.9/conf/httpd.conf

    ① 如果你看到如下两句,说明安装是成功的

     LoadModule dav_svn_module    modules/mod_dav_svn.so
     LoadModule authz_svn_module  modules/mod_authz_svn.so

     如果有下面一句就用#注释掉

     #LoadModule foo_module modules/mod_foo.so

     
    ② 定义apache访问svn配置:
     <Location /svn>
             DAV svn
     #     SVNPath /opt/svndata
             SVNParentPath /opt/svndata
             AuthzSVNAccessFile /opt/svn/conf/authz.conf
             AuthType Basic
             AuthName "Subversion repository"
             AuthUserFile /opt/svn/conf/passwd.conf
             Require valid-user
     </Location>

四、配置svn

     ①建立svn版本库目录

     mkdir -p /opt/svndata/repos #可以多建版本库目录

     ②建立svn版本库

     svnadmin create /opt/svndata/repos

     mkdir -p /opt/svndata/repos #可以多建版本库

     ③建立本地访问控制文件

     /usr/local/apache2.2.9/bin/htpasswd -c /opt/svn/conf/passwd.conf username

     然后输入密码即可,默认是MD5加密的

     /usr/local/apache2.2.9/bin/htpasswd /opt/svn/conf/passwd.conf username1 #追加用户

     ④建立本地项目控制文件

     touch /opt/svn/conf/authz.conf
     

     本例authz.conf内容为:

     

     [groups]
     #<groupname1>=<username1>,<username2>
     admin=username

     #[<versionLib>:projectName/directory]
     #@<groupsname>=<authorities>
     #<username>=<authorities>

     [/]
     @admin = rw     #指定用户组成员可以读写根目录所有应用

     [repos:/abc/aaa]
     username1= rw     #指定用户username1可以读写:/abc/aaa目录的文件

至此,整个安装过程完成了!

五、测试连接

    ① 启动apache

     /usr/local/apache2.2.9/bin/apachectl start

    ② 打开浏览器,输入http://192.168.1.107/svn/repos #本例服务器ip是192.168.1.107

     使用刚才创建的权限用户名与密码登录即可访问

     注意:在你上传文件的时候可能会有如下权限不足的提示

     Permission denied
     svn: Commit failed (details follow):
     svn: Can’t create directory ‘/opt/svndata/repos/db/transactions/0-1.txn’: Permission denied

     这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者

     本例apache属于daemon拥有者,而svn仓库属于svn拥有者

     解决方法:

     chown -R daemon /opt/svndata/repos

     chmod -R 755 /opt/svndata/repos

    

      重启下apache:

      /usr/local/apache2.2.9/bin/apachectl stop

      /usr/local/apache2.2.9/bin/apachectl start

   3. “Could not open the requested SVN filesystem” errorcode=2

      如果出现这个错误你就得看一下Apache的httpd.conf文件里面相关版本库路径是不是正确,请确保使用的是绝对路径.

分类: Linux 标签:

项目工具 Microsoft Office Project 2007

2010年1月4日 没有评论

Microsoft Office Project 2007简体中文专业版:

简介:

   将可用性、功能和灵活性完美地融合在一起,为您提供了一些可靠的项目管理工具,以便可以更加经济有效地管理项目。通过与熟悉的 Microsoft Office system程序、强大的报表、引导的计划以及灵活的工具进行集成,您可以对所有信息了如指掌,控制项目的工时、日程和财务,与项目工作组保持密切合作, 同时提高工作效率。

下载:

下载地址: Office Project 2007简体中文专业版下载[用迅雷下载]

密钥:

W2JJW-4KYDP-2YMKW-FX36H-QYVD8

分类: 其他 标签:

好用的数据库模型设计工具 Microsoft Office Visio 2007

2010年1月4日 没有评论

       Microsoft Office Visio 2007 是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻松地可视化、分析和交流复杂信息。它能够将难以理解的复杂文本和表格转换为一目了然的 Visio 图表。该软件通过创建与数据相关的 Visio 图表(而不使用静态图片)来显示数据,这些图表易于刷新,并能够显著提高生产率。使用 Office Visio 2007 中的各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。

Visio 2010 的十大优点

Visio 2010 的高级制图工具可以帮助您使用动态、数据驱动的可视图表以及在网上共享的新方法来简化您的图表。

使用专业模板和预先画好的新式图形开始构建您的图表。然后,将图表轻松地链接到常用数据源(例如 Excel)。您会看到数据在图表中自动刷新为正确数据,并以形象的方式(例如图标、符号、颜色、条形图)生动地展示。最后,通过几次单击,将链接了数据的图表发布到 SharePoint 中,并向网络上的其他人提供访问权限,即使他们没有 Visio。

合作、简易、数据驱动的图形以及网络共享让 Visio 2010 成为查看和了解重要信息的最有用的方法之一。

Visio 2010 的十大优点

  • 使用适用于 IT、业务和流程管理等的预先画好的不同形状、示例图形和模板可以快速开始制图。无论需要何种制图,Visio 都可以帮助您快速开始。

  • 在同一位置找到所有所需的内容完成制图任务。通过将功能在功能区选项卡中进行逻辑分组,增强的对形状和模板的更容易访问的形状窗口,以及帮助您在图表中和图表间更有效移动的状态栏,创建图表的每一步都更加直观。
  • 使用 Quick Shapes Mini Toolbar、enhanced dynamic grid、automatic layout adjustment 和 page Auto Size 等方便准确地添加和对齐形状。
  • 使用 Subprocesses 和 Containers 简化大而复杂的图表以形象逻辑地分组图像。Subprocesses 将图形中的复杂流程划分为多个更易管理的小流程,Containers 帮助您组织不同的形状集以及分清他们如何在图表中相互关联。
  • 使用新式图形和形象内容,丰富的主题库以及实时预览使您的图表在几秒内即更吸引人,更专业。

  • 根据业务规则和逻辑检查图表以确保图表的准确性和一致性。仅单击一次,您即可验证图表的逻辑性和正确性。
  • 有了新增强的包含 SharePoint 工作流规则和逻辑的模板,已经能够在 Microsoft SharePoint Designer 2010 和 Visio 2010 之间导出和导入工作流的功能,创建和监控 SharePoint 工作流比以前更容易。

  • 获取与您的业务相关的清晰和完整信息常常要求高级透视和详细数据。只需几次单击,Visio 2010 可以通过以图形方式在一个最新图表中显示有意义的数据和信息帮助您查看整个图片。
  • 使用 Data Selector 和 Automatic Link 向导将您的图表轻松连接至一个或多个数据源,包括 Microsoft Excel、Microsoft Access、Microsoft SQL Server、 SharePoint Services 或任意 OLEDB(对象链接和嵌入数据库)或 ODBC(开源数据连接)数据源。
  • 使用有意义的图形(例如颜色、图标、符号和数据栏),根据您定义的条件在图表的图形中显示实时数据。然后,添加一个图例以说明链接了数据的图形的意义。
  • 使用 Automatic Refresh 不费吹灰之力保持图表中链接的数据最新。您可以在特定时间间隔自动刷新数据,或随时通过一次按钮单击手动刷新。

  • 使用图形数据或外部数据窗口向下追溯到具体的图形和图表数据。

通过网络浏览器与其他人共享互动的、可刷新的、链接了数据的图表

  • 使用 Visio 2010,与其他人分享动态、已链接了数据的图表比以前更容易。通过确保人们可以一直查看图表及其链接的数据的最新版本可以确保每个人都在同一页面上。
  • 将图表轻松地连接到一个或多个数据源(例如 Excel),然后单击几次,将图表发布到 SharePoint Server。在线用户可以通过他们的浏览器看到图表中的高级别正确的实时信息,或者查看详细信息,即使他们没有 Visio。他们可以根据图形中的链接,在图表中平移和缩放或刷新数据。
  • 创建包含互动 Visio 图表和其他应用程序服务的形象的引人注目的仪表盘。Visio Services 和 SharePoint Server 集成支持活动数据和图表的可视混搭,以丰富查看信息体验。

  • 通过与 SharePoint 2010 Process Repository 集成的 Visio 2010 存储、共享和重用业务流程图表和子流程。

Microsoft Office Visio 2007简体中文专业版:

简介:

   便于 IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流。使用具有专业外观的 Office Visio 2007图表,可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策。

下载:

下载地址1: Office Visio 2007简体中文专业版下载[用迅雷下载]
下载地址2: Office Visio 2007简体中文专业版下载[用迅雷下载]

密钥:

W2JJW-4KYDP-2YMKW-FX36H-QYVD8

Microsoft Office Project 2007简体中文专业版:

简介:

   将可用性、功能和灵活性完美地融合在一起,为您提供了一些可靠的项目管理工具,以便可以更加经济有效地管理项目。通过与熟悉的 Microsoft Office system程序、强大的报表、引导的计划以及灵活的工具进行集成,您可以对所有信息了如指掌,控制项目的工时、日程和财务,与项目工作组保持密切合作, 同时提高工作效率。

下载:

下载地址: Office Project 2007简体中文专业版下载[用迅雷下载]

密钥:

W2JJW-4KYDP-2YMKW-FX36H-QYVD8

分类: 其他 标签:

使用iptables后服务器连接速度慢问题

2010年1月3日 没有评论

      前段时间接手的一台服务器,发现用FTP或者SSH连接服务器的时候总会"卡"一段时间,但连接后的速度很正常.因为刚接手项目,再加上问题影响不是很大所以没有在意.                               武汉百度公司

      公司新招了一"帅哥",呵呵,项目人手暂时缓了一下,听说那哥们挺"牛X"的,会搞Ruby,据说JAVA和PHP也能搞定…扯远了.最近在研究网站架构,做了一些实验,前些日子一直在用公司的测试服务器在做,搞的接连一个多月的没周末,一有时间就往公司跑…刚好元旦放了三天假,把自已的那台"老爷机"整了一下,试了一下,没想到还不错,勉强可以上两台虚拟机,凑合着做一些分布式的网站架构实验,在配服务器环境的时候发现一个奇怪的问题,一开iptables网络连接就出现"卡机"现象,头了防火墙就一切正常(以前做环境的时候没怎么注意这个问题,因为做测试都是直接把防火墙关了).但是连接上了以后访问速度一点都不受影响,因为时间"充裕",再者感觉这个问题有必要解决,所以本着打破沙锅问到底的思想,翻遍INTERNET,众里寻他死百度,终于找到一点点线索,他爷爷的,以前怎么没注意到这么一段 -m state –state ESTABLISHED, RELATED, iptables 对连接状态的支持设置.

全部配置语句为:

iptables -I INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

参数说明:

参数 -m state –state
范例 iptables -A INPUT -m state –state RELATED,ESTABLISHED
说明 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。

INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。
ESTABLISHED 表示该封包属于某个已经建立的联机。
NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。

分类: Linux 标签:

Nginx配置语法

2010年1月2日 没有评论

      本文主要介绍如何在Linux 系统上安装高性能的HTTP服务器 —— Nginx,并在不改变原有网站结构的条件下用Nginx来提升网站的访问速度。

Nginx 简介
      Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。 Igor 将源代码以类 BSD 许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
根据最新一期(08 年 6 月份)的 NetCraft 调查报告显示,已经有超过两百万的主机使用了 Nginx,这个数字超过了另外一个轻量级的 HTTP 服务器 lighttpd, 排名第四,并且发展迅速。下面是这份报告的前几名的报表:
产品 网站数
Apache 84,309,103
IIS 60,987,087
Google GFE 10,465,178
Unknown 4,903,174
nginx 2,125,160
Oversee 1,953,848
lighttpd 1,532,952

使用 Nginx 前必须了解的事项
目前官方 Nginx 并不支持 Windows,您只能在包括 Linux、UNIX、BSD 系统下安装和使用;
      Nginx 本身只是一个 HTTP 和反向代理服务器,它无法像 Apache 一样通过安装各种模块来支持不同的页面脚本,例如 PHP、CGI 等;
Nginx 支持简单的负载均衡和容错;
支持作为基本 HTTP 服务器的功能,例如日志、压缩、Byte ranges、Chunked responses、SSL、虚拟主机等等,应有尽有。
在 Linux 下安装 Nginx
为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。您可以到 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:
# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz
# tar zxvf pcre-7.7.tar.gz
# cd pcre-7.7
# ./configure
# make
# make install
接下来安装 Nginx,Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /opt/nginx 目录下的详细步骤:
# wget http://sysoev.ru/nginx/nginx-0.6.31.tar.gz
# tar zxvf nginx-0.6.31.tar.gz
# cd nginx-0.6.31
# ./configure –with-http_stub_status_module –prefix=/opt/nginx
# make
# make install

     其中参数 –with-http_stub_status_module 是为了启用 nginx 的 NginxStatus 功能,用来监控 Nginx 的当前状态。

        安装成功后 /opt/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。其中 Nginx 的配置文件存放于 conf/nginx.conf,Nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

常用的 Nginx 参数和控制
      程序运行参数Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个:
-c <path_to_config>:使用指定的配置文件而不是 conf 目录下的 nginx.conf 。
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
-v:显示 nginx 版本号。
-V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。

例如我们要测试某个配置文件是否书写正确,我们可以使用以下命令
sbin/nginx – t – c conf/nginx2.conf
通过信号对 Nginx 进行控制
Nginx 支持下表中的信号:
信号名 作用描述
TERM, INT 快速关闭程序,中止当前正在处理的请求
QUIT 处理完当前请求后,关闭程序
HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求
USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程
       有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX <pid> 来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。

配置 Nginx
先来看一个实际的配置文件:

user nobody;# 工作进程的属主
worker_processes 4;# 工作进程数,一般与 CPU 核数等同
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid       logs/nginx.pid;
events {
   use epoll;              #Linux 下性能最好的 event 模式
   worker_connections 2048;# 每个工作进程允许最大的同时连接数
}
http {
   include      mime.types;
   default_type application/octet-stream;

   #log_format main ‘$remote_addr – $remote_user [$time_local] $request ‘
   #                 ‘"$status" $body_bytes_sent "$http_referer" ‘
   #                 ‘"$http_user_agent" "$http_x_forwarded_for"’;

   #access_log off;
   access_log logs/access.log;# 日志文件名

   sendfile       on;
   #tcp_nopush    on;
   tcp_nodelay    on;

   keepalive_timeout 65;

   include gzip.conf;
   
   # 集群中的所有后台服务器的配置信息
   upstream tomcats {
server 192.168.0.11:8080 weight=10;
server 192.168.0.11:8081 weight=10;
server 192.168.0.12:8080 weight=10;
server 192.168.0.12:8081 weight=10;
server 192.168.0.13:8080 weight=10;
server 192.168.0.13:8081 weight=10;
   }

   server {
       listen      80;#HTTP 的端口
       server_name localhost;

       charset utf-8;

       #access_log logs/host.access.log main;

location ~ ^/NginxStatus/ {
    stub_status on; #Nginx 状态监控配置
    access_log off;
}

location ~ ^/(WEB-INF)/ {
    deny all;
}

location ~ \.(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|
zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
            root /opt/webapp;
    expires 24h;
       }

       location / {
    proxy_pass http://tomcats;# 反向代理
    include proxy.conf;
       }

       error_page 404 /html/404.html;

       # redirect server error pages to the static page /50x.html
       #
error_page 502 503 /html/502.html;
       error_page 500 504 /50x.html;
       location = /50x.html {
           root  html;
       }
   }
}

Nginx 监控
       上面是一个实际网站的配置实例,其中灰色文字为配置说明。上述配置中,首先我们定义了一个 location ~ ^/NginxStatus/,这样通过 http://localhost/NginxStatus/ 就可以监控到 Nginx 的运行信息,显示的内容如下:
Active connections: 70
server accepts handled requests
14553819 14553819 19239266
Reading: 0 Writing: 3 Waiting: 67
NginxStatus 显示的内容意思如下:
active connections – 当前 Nginx 正处理的活动连接数。
server accepts handled requests — 总共处理了 14553819 个连接 , 成功创建 14553819 次握手 ( 证明中间没有失败的 ), 总共处理了 19239266 个请求 ( 平均每次握手处理了 1.3 个数据请求 )。
reading — nginx 读取到客户端的 Header 信息数。
writing — nginx 返回给客户端的 Header 信息数。
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。

静态文件处理
通过正则表达式,我们可让 Nginx 识别出各种静态文件,例如 images 路径下的所有请求可以写为:
location ~ ^/images/ {
   root /opt/webapp/images;
}
而下面的配置则定义了几种文件类型的请求处理方式。
location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {
   root /opt/webapp;
   expires 24h;
}
       对于例如图片、静态 HTML 文件、js 脚本文件和 css 样式文件等,我们希望 Nginx 直接处理并返回给浏览器,这样可以大大的加快网页浏览时的速度。因此对于这类文件我们需要通过 root 指令来指定文件的存放路径,同时因为这类文件并不常修改,通过 expires 指令来控制其在浏览器的缓存,以减少不必要的请求。 expires 指令可以控制 HTTP 应答中的“ Expires ”和“ Cache-Control ”的头标(起到控制页面缓存的作用)。您可以使用例如以下的格式来书写 Expires:
expires 1 January, 1970, 00:00:01 GMT;
expires 60s;
expires 30m;
expires 24h;
expires 1d;
expires max;
expires off;

动态页面请求处理
        Nginx 本身并不支持现在流行的 JSP、ASP、PHP、PERL 等动态页面,但是它可以通过反向代理将请求发送到后端的服务器,例如 Tomcat、Apache、IIS 等来完成动态页面的请求处理。前面的配置示例中,我们首先定义了由 Nginx 直接处理的一些静态文件请求后,其他所有的请求通过 proxy_pass 指令传送给后端的服务器(在上述例子中是 Tomcat)。最简单的 proxy_pass 用法如下:
location / {
   proxy_pass       http://localhost:8080;
   proxy_set_header X-Real-IP $remote_addr;
}
   
这里我们没有使用到集群,而是将请求直接送到运行在 8080 端口的 Tomcat 服务上来完成类似 JSP 和 Servlet 的请求处理。
当页面的访问量非常大的时候,往往需要多个应用服务器来共同承担动态页面的执行操作,这时我们就需要使用集群的架构。 Nginx 通过 upstream 指令来定义一个服务器的集群,最前面那个完整的例子中我们定义了一个名为 tomcats 的集群,这个集群中包括了三台服务器共 6 个Tomcat 服务。而 proxy_pass 指令的写法变成了:
location / {
   proxy_pass       http://tomcats;
   proxy_set_header X-Real-IP $remote_addr;
}
  
在 Nginx 的集群配置中,Nginx 使用最简单的平均分配规则给集群中的每个节点分配请求。一旦某个节点失效时或者重新起效时,Nginx 都会非常及时的处理状态的变化,以保证不会影响到用户的访问。

总结
尽管整个程序包只有五百多K,但麻雀虽小、五脏俱全。 Nginx 官方提供的各种功能模块应有尽有,结合这些模块可以完整各种各样的配置要求,例如:压缩、防盗链、集群、FastCGI、流媒体服务器、Memcached 支持、URL 重写等等,更关键的是 Nginx 拥有 Apache 和其他 HTTP 服务器无法比拟的高性能。您甚至可以在不改变原有网站的架构上,通过在前端引入 Nginx 来提升网站的访问速度。
如果您的网站是运行在 Linux 下,如果您并没有使用一些非常复杂的而且确定 Nginx 无法完成的功能,那您应该试试 Nginx

分类: 架构 标签:

MYSQL主从不同步的低级错误,寻找到的解决办法

2009年12月28日 没有评论

昨晚升级MYSQL5.4,一切正常,感觉确实速度比以前快。

但没有想到的快结束时,出现了两个意外

1、一台MYSQL停止不了服务,那时可能还有程序在写入,我就先SLAVE STOP后,杀死MYSQL进程

结果,这台MYSQL无法恢复,导致innodb大量回滚,不断自动重新启动MYSQL

2、当把上面问题解决后,结果两台MYSQL无法主从同步了,显示如下状态

  Slave_IO_Running: NO
  Slave_SQL_Running: Yes

查看日志如下:

090915 11:20:33 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)
090915 11:20:33 [ERROR] Got fatal error 1236: ‘Could not find first log file name in binary log index file’ from master when reading data from binary log

其实这个问题是一个老生常谈的问题,解决办法也简单

一是权限问题,二是重新定位一下MASTER位置

可是一直解决不了…

最后,发现是由于logfile多写了一空格,如下:

change master to master_host=’192.168.X.XXX’, master_user=’rep’, master_password=’password’,master_log_file=’binlog.000001 ‘,master_log_pos=8843;

实际应该是

change master to master_host=’192.168.X.XXX’, master_user=’rep’, master_password=’password’,master_log_file=’binlog.000001′,master_log_pos=8843;

3、第二步问题解决了,结果出现了

  Slave_IO_Running: YES
Slave_SQL_Running: NO

并报出,有重复记录,无法插入的提示信息

解决这个问题,也有两个办法,一是在my.cnf里加

slave-skip-errors=1062

二是,直接执行

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

跳过一步,不作同步,根据情况可以设置多步。

分类: MySQL 标签:

使用MySQL Proxy解决MySQL主从同步延迟

2009年12月28日 没有评论

      MySQL的主从同步机制非常方便的解决了高并发读的应用需求,给Web方 面开发带来了极大的便利。但这种方式有个比较大的缺陷在于MySQL的同步机制是依赖Slave主动向Master发请求来获取数据的,而且由于服务器负 载、网络拥堵等方面的原因,Master与Slave之间的数据同步延迟是完全没有保证的。短在1秒内,长则几秒、几十秒甚至更长都有可能。

       由于数据延迟问题的存在,当应用程序在Master上进行数据更新,然后又立刻需要从数据库中读取数据时,这时候如果应用程序从Slave上取数据(这也是当前Web开发的常规做法),就可能出现读取不到期望的数据,造成程序运行异常。

      解决这个问题有多种方式,比如最简单的在所有的insert和update之后,强制sleep几秒钟。这是非常粗鲁的方式,对于更新操作不是很高的中小型系统,此方式基本能解决问题。

      另外一种方式是应用程序把被更新的数据保存在本机的内存(或者集中式缓存)中,如果在写入数据完成后需要直接读取数据,则从本机内存中读取。这种方式的缺点是极大的增加了应用程序的复杂度,而且可靠性并不能完全得到保障。

      使用MySQL Proxy可以很方便的解决这个问题。MySQL Proxy是基于MySQL Client 和 MySQL Server之间的代理程序,能够完成对Client所发请求的监控、修改。从Client角度看,通过Proxy访问Server和直接访问Server没有任何区别。对于既有的程序而言,只要把直接被访问的Server的IP地址和端口号换成Proxy的IP地址和端口号就可以。

      MySQL Proxy的工作原理也较简单。在Proxy启动时可以指定Proxy所需要使用的lua脚本,在lua脚本中预先实现6个方法:

  • connect_server()    // 接收到Client的连接请求时调用
  • read_handshake()  //
  • read_auth()              // 读取Client的认证信息时调用
  • read_auth_result() // 读取认证结果时调用
  • read_query()           // 读取Client的query请求时调用
  • read_query_result()  //读取query结果时调用

      当Proxy接收到Client请求时,在请求的不同的阶段会调用上面的不同方法。这样Proxy使用者就可以根据自己的业务需求,自由的实现这6个方法达到目的。

      通过在read_query()中加入代码,我们可以截取出当前的请求是insert、update还是select,然后把insert和update请求发送到Master中,把select请求发送到Slave中,这样就解决了读写分离的问题。

在解决了读写分离后,如何解决同步延迟呢?

        方法是在Master上增加一个自增表,这个表仅含有1个的字段。当Master接收到任何数据更新的请求时,均会触发这个触发器,该触发器更新自增表中的记录。如下图所示:

mysql_proxy_write

      由于Count_table也参与Mysq的主从同步,因此在Master上作的Update更新也会同步到Slave上。当Client通过Proxy进行数据读取时,Proxy可以先向Master和Slave的Count_table表发送查询请求,当二者的数据相同时,Proxy可以认定Master和Slave的数据状态是一致的,然后把select请求发送到Slave服务器上,否则就发送到Master上。如下图所示:

mysql_proxy_read

      通过这种方式,就可以比较完美的结果MySQL的同步延迟不可控问题。之所以所“比较完美”,是因为这种方案double了查询请求,对Master和 Slave构成了额外的压力。不过由于Proxy与真实的Mysql Server采用连接池的方式连接,因此额外的压力还是可以接受的。

分类: 架构 标签:

Linux下的Memcache安装

2009年12月23日 没有评论

Linux下Memcache服务器端的安装
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。
下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)
官网:http://www.monkey.org/~provos/libevent/
下载:http://www.monkey.org/~provos/libevent-1.3.tar.gz

用wget指令直接下载这两个东西.下载回源文件后。
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:

1.分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp
# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz

2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure –prefix=/usr
# make
# make install

3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。

4.安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp
# tar zxvf memcached-1.2.0.tar.gz
# cd memcached-1.2.0
# ./configure –with-libevent=/usr
# make
# make install
如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。
安装完成后会把memcached放到 /usr/local/bin/memcached ,

5.测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug

安装Memcache的PHP扩展
1.在http://pecl.php.net/package/memcache 选择相应想要下载的memcache版本。
2.安装PHP的memcache扩展

tar vxzf memcache-2.2.1.tgz
cd memcache-2.2.1
/usr/local/php/bin/phpize
./configure –enable-memcache –with-php-config=/usr/local/php/bin/php-config –with-zlib-dir
make
make install

3.上述安装完后会有类似这样的提示:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/

4.把php.ini中的extension_dir = “./”修改为

extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-2007xxxx/”

5.添加一行来载入memcache扩展:extension=memcache.so

memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid

-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,

2.如果要结束Memcache进程,执行:

# kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

3.重启apache,service httpd restart

Memcache环境测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
< ?php
$mem = new Memcache;
$mem->connect(”127.0.0.1″, 11211);
$mem->set(’key’, ‘This is a test!’, 0, 60);
$val = $mem->get(’key’);
echo $val;
?>

参考资料:
对Memcached有疑问的朋友可以参考下列文章:
Linux下的Memcache安装:http://www.ccvita.com/257.html
Windows下的Memcache安装:http://www.ccvita.com/258.html
Memcache基础教程:http://www.ccvita.com/259.html
Discuz!的Memcache缓存实现:http://www.ccvita.com/261.html
Memcache协议中文版:http://www.ccvita.com/306.html
Memcache分布式部署方案:http://www.ccvita.com/395.html

分类: Linux 标签: