[转]lighttpd+PHP(FAST-CGI)+mysql的学习笔记
| November 10, 2008 19:23 | root | Via 本站原创
早就听说lighttpd加PHP的FAST-CGI方式性能不错,抽时间装了下.只是完成了环境的安装,还没具体看性能什么的!
以下是我装lighttpd+PHP(FAST-CGI)+mysql的,如有问题,请给我评论.
一、先安装mysql
安装mysql,你可以安装源码包,也可以用编译好的!直接解压拷贝也行.我用的是直接拷贝编译好的!
1.编译源码包
./configure --prefix=/data2/ali --enable-assembler --enable-thread-safe-client --without-debug
make
make install
2.用编译好的压缩包!直接解压拷贝
tar zxf mysql-standard-5.0.27-linux-i686-glibc23.tar.gz
cd mysql-standard-5.0.27-linux-i686-glibc23
cp -rf mysql-standard-5.0.27-linux-i686-glibc23 /usr/local/mysql
//以下是为了启动多个端口
mkdir -p /data2/ali/mysql3308
mkdir -p /data2/ali/mysql3309
./scripts/mysql_install_db --ldata=/data2/ali/mysql3308
cp support-files/my-medium.cnf /data2/ali/mysql3308/my.cnf
vi /data2/ali/mysql3308/my.cnf
修改内容如下:
#
[mysqld]
datadir = /data2/ali/mysql3308/
port = 3308
socket = /tmp/mysql-3308.sock
#
cp /data2/ali/mysql3308/ /data2/ali/mysql3309/
vi /data2/ali/mysql3309/my.cnf
修改内容如下:
#
[mysqld]
datadir = /data2/ali/mysql3309/
port = 3309
socket = /tmp/mysql-3309.sock
#
启动mysql
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root &
检查mysql是否启动成功。
ps -ax|grep mysql
20835 pts/3 S 0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root
20862 pts/3 Sl 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3308/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3308/ --user=root --pid-file=/data2/ali/mysql3308//XD_Blog_Web_132_42.pid --skip-external-locking --port=3308 --socket=/tmp/mysql-3308.sock
20872 pts/3 S 0:00 /bin/sh ./mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root
20903 pts/3 Sl 0:00 /usr/local/mysql/bin/mysqld --defaults-file=/data2/ali/mysql3309/my.cnf --basedir=/usr/local/mysql --datadir=/data2/ali/mysql3309/ --user=root --pid-file=/data2/ali/mysql3309//XD_Blog_Web_132_42.pid --skip-external-locking --port=3309 --socket=/tmp/mysql-3309.sock
连接mysql
mysql -S /tmp/mysql-3108.sock
二、接着安装php
tar zxf php-5.2.4.tar.gz
cd php-5.2.4
./configure \
--prefix=/usr/local/php-fcgi \
--enable-fastcgi \
--enable-force-cgi-redirect \
--without-iconv \
--enable-mbstring \
--with-mysql=/usr/local/mysql
make
make install
复制参数文件到目标目录:
cp php.ini-dist /usr/local/php-fcgi/lib/php.ini
检查fast-cgi是否安装成功可以运行如下命令
/usr/local/php-fcgi/bin/php-cgi -v
显示如下信息,内容里包含“PHP 5.2.4 (cgi-fcgi)"表示支持fast-cgi了
PHP 5.2.4 (cgi-fcgi) (built: Oct 28 2007 20:08:41)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
三、最后安装lighttpd
1.安装配置lighttpd
1.1 首先创建运行lighttpd的用户和组
# groupadd lighttpd
# useradd -g lighttpd -s /sbin/nologin -d /dev/null lighttpd
1.2 开始安装lighttpd
# wget http://www.lighttpd.net/do...
# tar -zxvf lighttpd-1.4.8.tar.gz
# cd lighttpd-1.4.8
# ./configure --prefix=/usr/local/lighttpd
# make
# make install
# mkdir /usr/local/lighttpd/conf
# mkdir /usr/local/lighttpd/log
# mv ./doc/lighttpd.conf /usr/local/lighttpd/conf/
# cp ./doc/rc.lighttpd.redhat /etc/init.d/lighttpd
vi conf/lighttpd.conf
将 #”mod_fastcgi”, 的#去掉
server.modules = (
"mod_rewrite",
"mod_redirect",
# "mod_alias",
"mod_access",
# "mod_cml",
# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
# "mod_setenv",
"mod_fastcgi",
找到fastcgi的定义
#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/var/run/lighttpd/php-fastcgi.socket",
"bin-path" => "/usr/local/php-fcgi/bin/php-cgi"
)
)
)
一开始我把配置写"bin-path" => "/usr/local/php-fcgi/bin/php"这样,发现报错,后来改了下以上的配置,发现OK了!
启动lighttpd命令是这样的:
/usr/local/lighttpd/sbin/lighttpd -f conf/lighttpd.conf
最后可以在程序目录下建个test.php,检查一下是否正常!
[转]memcache安装
| November 10, 2008 19:14 | root | Via 本站原创
我在测试机上装了libevent和memcached,在启动memcached时会报找到不到libevent,建了个软链接"ln -s /usr/local/lib/libevent-1.2a.so.1 /usr/lib/"就OK了!
libevent-1.2a.tar.gz
memcached-1.1.13.tar.gz
ln -s /usr/local/lib/libevent-1.2a.so.1 /usr/lib/
装完后测试时命令行连接的方式是:
所有命令分为3种类型
存储命令(有3项:’set’、’add’、’repalce’)指示服务器储存一些由键值标识的数据。客户端发送一行命令,后面跟着数据区块;然后,客户端等待接收服务器回传的命令行,指示成功与否。
取回命令(只有一项:’get’)指示服务器返回与所给键值相符合的数据(一个请求中右一个或多个键值)。客户端发送一行命令,包括所有请求的键值;服务器每找到一项内容,都会发送回客户端一行关于这项内容的信息,紧跟着是对应的数据区块;直到服务器以一行“END”回应命令结束。
状态 命令"stats" 被用于查询服务器的运行状态和其他内部数据。有两种格式。不带参数的:
例子:
telnet 127.0.0.1 11211
Trying 127.0.0.1...
set kk 0 0 3
122
STORED
以下是我安装时看的文章
Linux下缓存服务器的应用
作者:tonyvicky
来自:LinuxSir.Org
摘要:由于数据库存储的数据量越来越大,查询速度也就变的越来越慢,因此就有了缓存服务器应用的必要,本文是介绍Memcached的安装以及简单的使用。
本文只介绍memcached的PHP的API,想查看其他关于Memcached的API文档案,请访问 http://www.danga.com/memca...
目录
一、环境需求
二、下载相关软件
三、安装和配置
1、安装Memcached
2、安装memcache PHP模块
3、测试脚本
四、关于本文
++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++
一、环境需求
安装Memcached需要libevent库的支持,所以请在安装Memcached之前检查有没有安装libevent。测试环境还需要PHP的支持,本文假设PHP已经安装到/usr/local/php目录下,也就是在编译PHP的时候使用perfix参数指定目录(--prefix=/usr /local/php)
二、下载相关软件
Memcached下载地址:http://www.danga.com/memca...
memcache PHP模块下载地址: http://pecl.php.net/packag... 推荐使用1.5版
libevent 下载地址: http://www.monkey.org/~pro...
本文不再讲述如何安装libevent
三、安装和配置
1、安装Memcached
root@tonyvicky:# tar vxzf memcached-1.1.12.tar.gz
root@tonyvicky:# cd memcached-1.1.12
root@tonyvicky:# ./configure --prefix=/usr/local/memcached
root@tonyvicky:# make
root@tonyvicky:# make install
安装完之后要启动服务
root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root
参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行
2、安装memcache PHP模块
root@tonyvicky:# tar vxzf memcache-1.5.tgz
root@tonyvicky:# cd memcache-1.5
root@tonyvicky:# /usr/local/php/bin/phpize
root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
root@tonyvicky:# make
root@tonyvicky:# make install
安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/
把这个记住,然后修改php.ini,把
extension_dir = "./"
修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
并添加一行
extension=memcache.so
3、测试脚本
自己写一个PHP程序测试一下吧
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>
libevent-1.2a.tar.gz
memcached-1.1.13.tar.gz
ln -s /usr/local/lib/libevent-1.2a.so.1 /usr/lib/
装完后测试时命令行连接的方式是:
所有命令分为3种类型
存储命令(有3项:’set’、’add’、’repalce’)指示服务器储存一些由键值标识的数据。客户端发送一行命令,后面跟着数据区块;然后,客户端等待接收服务器回传的命令行,指示成功与否。
取回命令(只有一项:’get’)指示服务器返回与所给键值相符合的数据(一个请求中右一个或多个键值)。客户端发送一行命令,包括所有请求的键值;服务器每找到一项内容,都会发送回客户端一行关于这项内容的信息,紧跟着是对应的数据区块;直到服务器以一行“END”回应命令结束。
状态 命令"stats" 被用于查询服务器的运行状态和其他内部数据。有两种格式。不带参数的:
例子:
telnet 127.0.0.1 11211
Trying 127.0.0.1...
set kk 0 0 3
122
STORED
以下是我安装时看的文章
Linux下缓存服务器的应用
作者:tonyvicky
来自:LinuxSir.Org
摘要:由于数据库存储的数据量越来越大,查询速度也就变的越来越慢,因此就有了缓存服务器应用的必要,本文是介绍Memcached的安装以及简单的使用。
本文只介绍memcached的PHP的API,想查看其他关于Memcached的API文档案,请访问 http://www.danga.com/memca...
目录
一、环境需求
二、下载相关软件
三、安装和配置
1、安装Memcached
2、安装memcache PHP模块
3、测试脚本
四、关于本文
++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++
一、环境需求
安装Memcached需要libevent库的支持,所以请在安装Memcached之前检查有没有安装libevent。测试环境还需要PHP的支持,本文假设PHP已经安装到/usr/local/php目录下,也就是在编译PHP的时候使用perfix参数指定目录(--prefix=/usr /local/php)
二、下载相关软件
Memcached下载地址:http://www.danga.com/memca...
memcache PHP模块下载地址: http://pecl.php.net/packag... 推荐使用1.5版
libevent 下载地址: http://www.monkey.org/~pro...
本文不再讲述如何安装libevent
三、安装和配置
1、安装Memcached
root@tonyvicky:# tar vxzf memcached-1.1.12.tar.gz
root@tonyvicky:# cd memcached-1.1.12
root@tonyvicky:# ./configure --prefix=/usr/local/memcached
root@tonyvicky:# make
root@tonyvicky:# make install
安装完之后要启动服务
root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root
参数说明 -m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行
2、安装memcache PHP模块
root@tonyvicky:# tar vxzf memcache-1.5.tgz
root@tonyvicky:# cd memcache-1.5
root@tonyvicky:# /usr/local/php/bin/phpize
root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
root@tonyvicky:# make
root@tonyvicky:# make install
安装完后会有类似这样的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/
把这个记住,然后修改php.ini,把
extension_dir = "./"
修改为
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
并添加一行
extension=memcache.so
3、测试脚本
自己写一个PHP程序测试一下吧
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>
vmware用NAT方式实现FreeBSD上网
| November 10, 2008 10:40 | root | Via 本站原创
如有不懂请参考:http://blog.csdn.net/crack...
我用的是VMware版本是 5.5.3,host机器运行的是windows Xp professional 。
1、安装VMware workstation
2、安装guest系统,这里我安装的Red Hat Linux9,安装过程中确保网络连接选择的是NAT方式,当然可以在安装完后进行修改。
3、到windows XP 中,查看所有的网络连接,你应该发现除了原有的网卡之外,又多了Vmnet1和Vmnet8。vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。
4、在win主机上用ipconfig查看VMnet8的IP地址,
一般是192.168.X.1/255.255.255.0,
此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里,不设网关。
5、同时在VM网络设置里的NAT项中查看VMnet8,一般是192.168.X.2/255.255.255.0
这个地址就是VMnet8,NAT的网关
6、现在在LINUX下把网卡IP设置成和VMnet8一个网段的IP(192.168.X.Z/255.255.255.0)
7、网关设置成刚才查看的那个IP192.168.X.2即可
8、DNS和你host主机的一样就可以。
9、设置完成后,重新启动linux的网络服务。
10、测试一下,
ping 网关:ping 192.168.X.2
ping DNS:ping 你的DNS。
如果能ping通就ok了
我用的是VMware版本是 5.5.3,host机器运行的是windows Xp professional 。
1、安装VMware workstation
2、安装guest系统,这里我安装的Red Hat Linux9,安装过程中确保网络连接选择的是NAT方式,当然可以在安装完后进行修改。
3、到windows XP 中,查看所有的网络连接,你应该发现除了原有的网卡之外,又多了Vmnet1和Vmnet8。vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。
4、在win主机上用ipconfig查看VMnet8的IP地址,
一般是192.168.X.1/255.255.255.0,
此时VMnet8的设置应该是自动获取IP,现在改成静态IP,并把此IP直接填入VMnet8里,不设网关。
5、同时在VM网络设置里的NAT项中查看VMnet8,一般是192.168.X.2/255.255.255.0
这个地址就是VMnet8,NAT的网关
6、现在在LINUX下把网卡IP设置成和VMnet8一个网段的IP(192.168.X.Z/255.255.255.0)
7、网关设置成刚才查看的那个IP192.168.X.2即可
8、DNS和你host主机的一样就可以。
9、设置完成后,重新启动linux的网络服务。
10、测试一下,
ping 网关:ping 192.168.X.2
ping DNS:ping 你的DNS。
如果能ping通就ok了
在discuz的home center里看到的用法
| November 7, 2008 21:47 | root | Via 本站原创
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>
<?php
class myclass {
function say_hello()
{
echo "Hello!\n";
}
}
$classname = "myclass";
call_user_func(array($classname, 'say_hello'));
?>
[主辅同步]教你在MySQL 5.0以上版本中配置主从库
| November 7, 2008 17:28 | root | Via 本站原创
下面直接记录下配置主从库的操作:(本文用的是mysql5.0以上)
1.在主库建立要同步的数据库,建立主库的帐号和修改主库配置
首先连接上数据库
创建测试同步的数据库,"
然后建立负责同步的用户!
然后修改/data2/ali/mysql3308/my.cnf主库的配置,增加
应该这样写:
否则出现:
The slave I/O thread stops because master and slave have equal MySQL server ids;//server-id = 101需要配置,且和slave机器的server-id=2不同喔,否则出错。。。
2.修改从库配置
然后修改/data2/ali/mysql3309/my.cnf从库的配置,增加
3.重启mysql
先杀死mysql进程,然后再启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root &
4.在主库创建数据表,检查从库是否同步正确
进入主库,创建数据表
然后检查从库是否有该表和表中是否有数据
5.检查主从库常用命令
mysqladmin shutdown: 这样停掉mysql靠谱点,比起用kill -9 好!
6. 测试
在 database: sinatest体验一下
1.在主库建立要同步的数据库,建立主库的帐号和修改主库配置
首先连接上数据库
mysql -S /tmp/mysql-3108.sock
创建测试同步的数据库,"
create database sinatest;
"然后建立负责同步的用户!
grant all on *.* to ali@"%" Identified by "abc111";
然后修改/data2/ali/mysql3308/my.cnf主库的配置,增加
binlog-do-db=sinatest
应该这样写:
server-id = 101
log-bin = bin_log
binlog-do-db=sinatest
log-bin = bin_log
binlog-do-db=sinatest
否则出现:
Error reading packet from server: Binary log is not open ( server_errno=1236)//就是log-bin = bin_log需要配置一下
The slave I/O thread stops because master and slave have equal MySQL server ids;//server-id = 101需要配置,且和slave机器的server-id=2不同喔,否则出错。。。
2.修改从库配置
然后修改/data2/ali/mysql3309/my.cnf从库的配置,增加
master-host=127.0.0.1
master-user=ali
master-password=abc111
master-port=3308
server-id=2
master-connect-retry=60
replicate-do-db=sinatest
log-slave-updates
master-user=ali
master-password=abc111
master-port=3308
server-id=2
master-connect-retry=60
replicate-do-db=sinatest
log-slave-updates
3.重启mysql
先杀死mysql进程,然后再启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf --user=root &
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf --user=root &
4.在主库创建数据表,检查从库是否同步正确
进入主库,创建数据表
mysql -S /tmp/mysql-3108.sock
CREATE TABLE if not exists ali_test_00 (
`id` int(11) unsigned NOT NULL auto_increment,
`my_id` varchar(16) binary NOT NULL default '',
`my_title` varchar(96) binary NOT NULL default '',
`status` int(11) unsigned NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `my_id` (`my_id`)
) TYPE=MyISAM;
CREATE TABLE if not exists ali_test_00 (
`id` int(11) unsigned NOT NULL auto_increment,
`my_id` varchar(16) binary NOT NULL default '',
`my_title` varchar(96) binary NOT NULL default '',
`status` int(11) unsigned NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `my_id` (`my_id`)
) TYPE=MyISAM;
insert into ali_test_00 values (null,32,"aliwwww",1);
insert into ali_test_00 values (null,32,"aliwwww",1);
insert into ali_test_00 values (null,32,"aliwwww",1);
然后检查从库是否有该表和表中是否有数据
5.检查主从库常用命令
SHOW SLAVE STATUS;
SHOW MASTER STATUS;
slave stop;
slave start;
SHOW MASTER STATUS;
slave stop;
slave start;
CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_USER='ali',
MASTER_PASSWORD='abc111',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=0;
MASTER_HOST='127.0.0.1',
MASTER_USER='ali',
MASTER_PASSWORD='abc111',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=0;
load data from master//马上同步的命令
mysqladmin shutdown: 这样停掉mysql靠谱点,比起用kill -9 好!
6. 测试
在 database: sinatest体验一下




