eAccelerator 0.9.5.2 安装 (Linux/Unix)
发布于 2008-01-24 18:53 阅读:46,074 评论:0 标签: eAccelerator Linux 安装

    有关eAccelerator的资料请看本站我翻译的:PHP加速器eAccelerator文档翻译

    一:eAccelerator把编译好的PHP程序存储在共享内存里面,并直接在这里面执行程序。不适合放入共享内存的文件将被缓存到硬盘上。所以先建立eAccelera缓存目录:

以下是引用片段:

[shengting@login sso]$ pwd
/data1/apache/sso
[shengting@login sso]$ mkdir cache-eaccelerator
[shengting@login sso]$ chmod 777 cache-eaccelerator/
[root@login sso]# chown nobody:nobody cache-eaccelerator/

    二:下载文件:

以下是引用片段:

[shengting@login sso_front_soft]$ cd /home/sso_front_soft/
[shengting@login sso_front_soft]$ pwd
/home/sso_front_soft
[shengting@login sso_front_soft]$ su
Password:
[root@login sso_front_soft]# wget "http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2"
--10:31:00--  http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
     => `eaccelerator-0.9.5.2.tar.bz2'
 Resolving bart.eaccelerator.net... 193.190.253.234
 Connecting to bart.eaccelerator.net[193.190.253.234]:80... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 121,935 [application/x-tar]

 100%[===================================================================>] 121,935       55.29K/s            

 10:31:03 (55.23 KB/s) - `eaccelerator-0.9.5.2.tar.bz2' saved [121,935/121,935]

    三:解压并进入文件

以下是引用片段:

[root@login sso_front_soft]# tar -jxvf eaccelerator-0.9.5.2.tar.bz2
[root@login sso_front_soft]# cd eaccelerator-0.9.5.2
[root@login eaccelerator-0.9.5.2]# pwd
/home/sso_front_soft/eaccelerator-0.9.5.2

    四:which一下phpize得到phpize地址:/usr/local/bin/phpize
phpize 命令是用来准备 PHP 扩展库的编译环境的,成功的安装将创建 extname.so 并放置于 PHP 的扩展库目录中。需要调整 php.ini,加入 extension=extname.so 这一行之后才能使用此扩展库。

    而eaccelerator的编译需要使用这个命令:

以下是引用片段:

[root@login eaccelerator-0.9.5.2]# /usr/local/bin/phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20050922
Zend Extension Api No:   220051025

    五:编译eaccelerator

以下是引用片段:

[root@login eaccelerator-0.9.5.2]# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config
[root@login eaccelerator-0.9.5.2]# make
[root@login eaccelerator-0.9.5.2]# make install
Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20050922/

    注意上面的“Installing shared extensions”的地址,这是phpize告诉我们的扩展库的地址。如下:

以下是引用片段:

[root@login eaccelerator-0.9.5.2]# ls -l  /usr/local/lib/php/extensions/no-debug-non-zts-20050922/
total 768
-rwxr-xr-x  1 root root 425775 Oct 26 11:28 eaccelerator.so
-rwxr-xr-x  1 root root  78031 Jan 22  2007 memcache.so
-rwxr-xr-x  1 root root  26273 Oct 10 11:55 String2Int.so

    六:以下安装为PHP扩展

以下是引用片段:

[root@login eaccelerator-0.9.5.2]# find / -name php.ini
/usr/local/lib/php.ini

    修改php.ini文件,加入:(注意extension的地址)

以下是引用片段:

[eaccelerator]
extension="/usr/local/lib/php/extensions/no-debug-non-zts-20050922/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/data1/apache/sso/cache-eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="0"
eaccelerator.compress_level="9"

    七:重启apache

以下是引用片段:

[root@login eaccelerator-0.9.5.2]# /data1/apache/bin/apachectl stop
/data1/apache/bin/apachectl stop: httpd stopped
[root@login eaccelerator-0.9.5.2]# /data1/apache/bin/apachectl startssl
/data1/apache/bin/apachectl start: httpd started

    注意:
    1 : 使用ssl 443端口,启动时:/data1/apache/bin/apachectl startssl
    2 : 定期清理cache-eaccelerator,如果是把cache-eaccelerator下的目录也删除,则需要重启apache,否则会出现异常。(具体什么异常需要测试)

展开全文  
收起全文  
cut命令学习 (Linux/Unix)
发布于 2008-01-23 10:35 阅读:88,864 评论:0 标签: cut linux

    链接:http://www.ifpubs.com/books/aix52/cut.htm

    cut命令用途:从文件的每个行中写出选定的字节、字符或字段。

    语法:

以下是引用片段:
cut {  -b List [  -n ] |  -c List |  -f List [  -s ] [  -d Character ] } [ File ... ]

    必须指定 -b、-c 或 -f 标志之一。List 参数为一个以逗号分隔、以空格分隔或连字符分隔的整数的列表(顺序递增)。连字符分隔符表示范围。以下条目是 List 参数的一些示例,它可以用来指代字节、字符或字段:

以下是引用片段:
1,4,7
1-3,8
-5,10
3-

    其中 -5 为从第一个到第五个的简写形式,3- 为从第三个到最后一个的简写形式。

    参数:

以下是引用片段:

-b List 指定字节位置。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c List 指定字符位置。例如,如果您指定 -c 1-72,cut 命令将写出文件每一行的头 72 个字符。
-d Character 使用 Character 变量指定的字符作为指定 -f 标志时的字段定界符。您必须在对 shell 有特殊意义的字符(比如空格字符)上加上引号。
-f List 指定文件中设想被定界符(缺省情况下为制表符)隔开的字段的列表。例如,如果您指定 -f 1,7,cut 命令将仅写出每个行的第一和第七个字段。如果行中不包含字段定界符,cut 命令将通过它们而不对其进行任何操作(对表格的副标题有用),除非指定了 -s 标志。
-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
-s 取消不包含定界符的行。仅和 -f 标志一起使用。

    该命令返回以下退出值:

以下是引用片段:
0 所有输入文件被成功输出。
>0 发生一个错误。

    遇到的例子:找出服务器的ip地址。

    在FreeBSD中:

以下是引用片段:
/sbin/ifconfig | grep "inet 172" | cut -d " " -f2

    其中的"inet 172"为显示ip那一行的一个标志,目的是取出这一行。

    在CentOS中:

以下是引用片段:
/sbin/ifconfig | grep "inet addr:10.55" | cut -d ":" -f 2 | cut -d " " -f 1

    同上,"inet addr:10.55"目的是取出这一行。这个使用两次cut,因为偶使用一次时死活取不出来,晕死。

    可能根据自己的情况,上面的数字需要自己确定。

    注:使用“-d”参数时,需要注意只能是单个字符。否则会报错:

以下是引用片段:
cut: the delimiter must be a single character

展开全文  
收起全文  
linux和freebsd下的路由操作的区别 (Linux/Unix)
发布于 2008-01-16 15:31 1 阅读:105,127 评论:1 标签: FreeBSD Linux 路由

    添加路由时如果想服务器重启时也能有效,则同时将命令写到/etc/rc.local中。但路由操作在linux和freebsd中是不一样的,区别如下:

    linux:

以下是代码片段:

查看路由:
 /sbin/route
增加路由:
 /sbin/route add -host 172.16.78.226 gw 10.55.40.1
 /sbin/route add -net 172.16.20.0/24 gw 10.55.40.1
删除路由
 /sbin/route del -host 172.16.78.226 gw 10.55.40.1
 /sbin/route del -net 172.16.20.0/24 gw 10.55.40.1

    freebsd:

以下是代码片段:

查看路由:
 netstat -nr
增加路由
 /sbin/route add -host 172.16.78.226 10.55.40.1
 /sbin/route add -net 172.16.20.0/24 10.55.40.1
删除路由
 /sbin/route delete -host 172.16.78.226 10.55.40.1
 /sbin/route delete -net 172.16.20.0/24 10.55.40.1

展开全文  
收起全文  
修改符号链接的属主的方法 (Linux/Unix)
发布于 2008-01-15 18:49 阅读:141,302 评论:0 标签: Linux 方法 链接

    如下,检查为FreeBSD 4.8p-STABLE

以下是引用片段:
autoinstall# uname -a
FreeBSD autoinstall 4.8p-STABLE FreeBSD 4.8p-STABLE #0: Sun Nov  9 04:39:25 GMT 2003     root@dell1550.sina.com.cn:/usr/obj/usr/src/sys/SINA  i386

    我当前为root

以下是引用片段:
autoinstall# whoami
root

    建立一个文件

以下是引用片段:
autoinstall# touch a

autoinstall# ls -l
-rw-r--r--  1 root       wheel    0 Jan 15 17:38 a

    建立一个软连接:

以下是引用片段:
autoinstall# ln -s a b
autoinstall#
autoinstall# ls -l
-rw-r--r--  1 root       wheel    0 Jan 15 17:38 a
lrwxr-xr-x  1 root       wheel    1 Jan 15 17:38 b -> a

    现在我想修改b的属主:

以下是引用片段:
autoinstall# chown yayu b
autoinstall#
autoinstall# ls -l
-rw-r--r--  1 root       wheel    0 Jan 15 17:38 a
lrwxr-xr-x  1 root       wheel    1 Jan 15 17:38 b -> a

    很遗憾,失败了!确定yayu这个用户是存在的。于是上chinaunix问了一下,嗯,感谢ports 的回答。教训:学会man的好习惯!

    解决如下:加个“-h”参数

    在linux下man结果为:

以下是引用片段:
       -h, --no-dereference
              affect  each  symbolic  link  instead  of any referenced file (useful only on systems that can change the ownership of a symlink)

    在freebsd下man为:

以下是引用片段:
     -h      If the file is a symbolic link, change the user ID and/or the
             group ID of the link itself.


展开全文  
收起全文  
libeven、memcached、libmemcache安装 (Linux/Unix)
发布于 2007-12-21 19:31 1 阅读:96,644 评论:1 标签: libeven libmemcache Linux memcached 安装

    前端时间玩了一下memcached,由于工作关系得过一段时间在玩它。哎,工作就是这样,老变!

    libeven

    memcached的使用需要libeven的支持,我们得先装上libeven。
    官方网站:http://www.monkey.org/~provos/libevent/
    下载地址:http://www.monkey.org/~provos/libevent-1.4.0-beta.tar.gz
    libevent安装方式比较简单:

以下是代码片段:
./configure && make
make install
    这样就好

    检查如下:

以下是引用片段:
[root@localhost memcached-1.2.2]# ls -l /usr/local/lib/ | grep even
lrwxrwxrwx   1 root root      21 Nov 26 11:32 libevent-1.4.so.2 -> libevent-1.4.so.2.0.0
-rwxr-xr-x   1 root root  267334 Nov 26 11:32 libevent-1.4.so.2.0.0
-rw-r--r--   1 root root  351694 Nov 26 11:32 libevent.a
lrwxrwxrwx   1 root root      26 Nov 26 11:32 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.0.0
-rwxr-xr-x   1 root root  101485 Nov 26 11:32 libevent_core-1.4.so.2.0.0
-rw-r--r--   1 root root  139080 Nov 26 11:32 libevent_core.a
-rwxr-xr-x   1 root root     866 Nov 26 11:32 libevent_core.la
lrwxrwxrwx   1 root root      26 Nov 26 11:32 libevent_core.so -> libevent_core-1.4.so.2.0.0
lrwxrwxrwx   1 root root      27 Nov 26 11:32 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.0.0
-rwxr-xr-x   1 root root  214596 Nov 26 11:32 libevent_extra-1.4.so.2.0.0
-rw-r--r--   1 root root  273270 Nov 26 11:32 libevent_extra.a
-rwxr-xr-x   1 root root     873 Nov 26 11:32 libevent_extra.la
lrwxrwxrwx   1 root root      27 Nov 26 11:32 libevent_extra.so -> libevent_extra-1.4.so.2.0.0
-rwxr-xr-x   1 root root     831 Nov 26 11:32 libevent.la
lrwxrwxrwx   1 root root      21 Nov 26 11:32 libevent.so -> libevent-1.4.so.2.0.0

    看见有很多libevent,就可以放心了。

    memcached

    官方网站:http://www.danga.com/memcached/download.bml
    下载地址:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz

    memcached安装需要些参数:

以下是代码片段:
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
make
make install

   我们来运行看看:
   运行:

以下是代码片段:
/usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root

    结果:
以下是引用片段:
[root@localhost memcached-1.2.2]# /usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

    查找原因,解决方案如下:

以下是代码片段:
LD_DEBUG=libs /usr/local/memcached/bin/memcached -v

    有如下显示:

以下是引用片段:
[root@localhost memcached-1.2.2]# LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
     18999:     find library=libevent-1.4.so.2 [0]; searching
     18999:      search cache=/etc/ld.so.cache
     18999:      search path=/lib/tls/i686/sse2:/lib/tls/i686:/lib/tls/sse2:/lib/tls:/lib/i686/sse2:/lib/i686:/lib/sse2:/lib:/usr/lib/tls/i686/sse2:/usr/lib/tls/i686:/usr/lib/tls/sse2:/usr/lib/tls:/usr/lib/i686/sse2:/usr/lib/i686:/usr/lib/sse2:/usr/lib          (system search path)
     18999:       trying file=/lib/tls/i686/sse2/libevent-1.4.so.2
     18999:       trying file=/lib/tls/i686/libevent-1.4.so.2
     18999:       trying file=/lib/tls/sse2/libevent-1.4.so.2
     18999:       trying file=/lib/tls/libevent-1.4.so.2
     18999:       trying file=/lib/i686/sse2/libevent-1.4.so.2
     18999:       trying file=/lib/i686/libevent-1.4.so.2
     18999:       trying file=/lib/sse2/libevent-1.4.so.2
     18999:       trying file=/lib/libevent-1.4.so.2
     18999:       trying file=/usr/lib/tls/i686/sse2/libevent-1.4.so.2
     18999:       trying file=/usr/lib/tls/i686/libevent-1.4.so.2
     18999:       trying file=/usr/lib/tls/sse2/libevent-1.4.so.2
     18999:       trying file=/usr/lib/tls/libevent-1.4.so.2
     18999:       trying file=/usr/lib/i686/sse2/libevent-1.4.so.2
     18999:       trying file=/usr/lib/i686/libevent-1.4.so.2
     18999:       trying file=/usr/lib/sse2/libevent-1.4.so.2
     18999:       trying file=/usr/lib/libevent-1.4.so.2
     18999:
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory

    主要是看最后一行提示的错误,那么我们:

以下是代码片段:
ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

    OK!再次运行:

以下是代码片段:
/usr/local/memcached/bin/memcached -d -m 10 -p 11211 -u root
    成功!

    貌似用“ldconfig”也可以解决这个问题

     libmemcache   

    libmemcache是memcached C的客户端之一。我准备使用这个玩意。
    官网:http://people.freebsd.org/~seanc/libmemcache/
    下载:http://people.freebsd.org/~seanc/libmemcache/libmemcache-1.4.0.rc2.tar.bz2
    编译:

以下是代码片段:
./configure
make
make install

     写一个有libmemcache函数的程序
     然后    

以下是代码片段:
gcc a.c -o a.cgi -L/usr/local/include -lmemcache


    运行

以下是代码片段:
./a.cgi

    提示类似上面的“error while loading shared libraries”的错误,查了一下可用"ldconfig"解决这个问题,那上面的可否用这个命令解决呢?

    上面的gcc编译的时候,带有参数“-lmemcache”。
    -l参数后面跟的库名有规则的,库的命名方式有libxxxx.so或libxxxx.a,编译时要用-lxxxx就可以了。
    而“-l”的意思就是代表是个“lib”了。

    所以在你自己编写动态库或者静态库时,命名还是得按照 libxxxx.so的形式来。

    不得不认为libmemcache有点糟糕,编译它自带的一个程序编译竟然有问题,很无语!

以下是引用片段:
[root@login benchmark]# gcc benchmark.c -L/usr/local/include -lmemcache
benchmark.c: In function `main':
benchmark.c:100: warning: passing arg 2 of `mc_set' discards qualifiers from pointer target type
benchmark.c:108: warning: passing arg 2 of `mc_set' discards qualifiers from pointer target type
benchmark.c:121: warning: passing arg 2 of `mc_req_add' discards qualifiers from pointer target type
benchmark.c:145: warning: passing arg 2 of `mc_delete' discards qualifiers from pointer target type
benchmark.c:153: warning: passing arg 2 of `mc_add' discards qualifiers from pointer target type
benchmark.c:167: warning: passing arg 2 of `mc_delete' discards qualifiers from pointer target type

    解决方法:

    找到passing arg 2这个参数的定义:

以下是引用片段:
const char *key;

    把const去了:
以下是引用片段:
char *key;

    这样就好了!

    然后:

以下是代码片段:
[root@login memcache-test]# ./a.out

    执行时可能报以下的错误:

以下是引用片段:
./a.out: error while loading shared libraries: libmemcache.so.0: cannot open shared object file: No such file or directory

    解决方法:

    执行ldconfig命令即可!


    附:

    http://kapoc.blogdriver.com/kapoc/1200549.html
    ldconfig命令 - - 动态链接库管理命令

    为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig.此执行程序存放在/sbin目录下.

    ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.

    ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

展开全文  
收起全文  
apache进程关闭方案 (Linux/Unix)
发布于 2007-05-23 18:19 1 阅读:11,712 评论:1 标签: apache 进程

当在重装apache前没有关闭现有的apache服务的时候,apache/bin/httpd将关闭不了。

状况如下:启动的时候能提示正常启动,关闭的时候说你就没有启动,提示找不到apache/logs/httpd.pid 文件,重新启动也没问题。kill进程时死一个活一个,犹如野草一般春风吹又生。

解决方案:建立apache/logs/httpd.pid 文件,输入首个httpd进程的id号,然后再停止,OK!就可以了

展开全文  
收起全文