lighttpd+PHP(FAST-CGI)+PDO_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://pkgs.fedoraproject.org/repo/pkgs/lighttpd/lighttpd-1.4.8.tar.gz/7d7790ef95ff5755f73bfcda4f13696d/lighttpd-1.4.8.tar.gz
# 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 /usr/local/lighttpd/conf/lighttpd.conf

如果出现:sbin/lighttpd: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决:

ln -s /usr/local/lib/libpcre.so.1 /lib64

 

最后可以在程序目录下建个test.php,检查一下是否正常!

重启lighttpd:

killall lighttpd

FastDFS不是通用的文件系统,只能通过专用的API来访问,目前提供了C JAVA PHP的API,下面我们来安装php扩展。

让Fastdfs支持php,在FastDFS的源码包解压后里面有个php_client目录,进入此目录,参照README进行安装:

phpize
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config
make
make install

    安装完成后会自动把modules/fastdfs_client.so 拷贝到/usr/lib/php5/20090626目录下,只需要把fastdfs_client.ini copy到/etc/php5/conf.d目录下,执行php fastdfs_test.php 进行测试,php5 -m也会看到fastdfs_client模块,在README中还有相关的php函数解释,可以进行测试。

 

在FreeBSD下的nginx服务器,需要借助FastCGI来解析PHP。更改php.ini配置文件,则需要重新启动FastCGI。操作如下 :

检查 FastCGI 是否启动

# sockstat -5 | grep 9000

www      php-cgi    1125  0  tcp4   127.0.0.1:9000        *:*

启动 PHP FastCGI:

/usr/local/lighttpd/bin/spawn-fcgi  127.0.0.1 -p 9000 -u lighttpd -g lighttpd -f /usr/local/php-fcgi/bin/php-cgi

# /usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www -g www -f /usr/local/bin/php-cgi

 -p 9000: PHP FastCGI 指定端口 

 -u www : PHP FastCGI 用户名

 -g www : PHP FastCGI 用户组

 -f /usr/local/bin/php-cgi : 指向 PHP5 fastcgi

关闭FastCGI:

#pkill -9  php-cgi

重启lighttpd+php-cgi:

 killall lighttpd
 pkill -9  php-cgi

 /usr/local/lighttpd/bin/spawn-fcgi  127.0.0.1 -p 9000 -u lighttpd -g lighttpd -f /usr/local/php-fcgi/bin/php-cgi

  /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/conf/lighttpd.conf

测试:

    创建一个test-file文件,内容:I'm test file,然后使用fdfs_upload_file命令上传,结果如下:

编写test.php测试界面:

<?php
$file_info=fastdfs_get_file_info1('group1/M00/00/00/CgEGflArNZmlRB8kAAAADvvpdFc8638629');
var_dump($file_info);

测试结果如下:

 

安装PDO_MYSQL

PDO_MYSQL源码包URL:http://pecl.php.net/package/PDO_MYSQL

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

①解压源码  tar -xzvf  PDO_MYSQL-1.0.2.tgz  (我下的是1.0.2的版本),

[root@cms-test software]# tar zxvf PDO_MYSQL-1.0.2.tgz 
package2.xml
PDO_MYSQL-1.0.2/config.m4
PDO_MYSQL-1.0.2/CREDITS
PDO_MYSQL-1.0.2/mysql_driver.c
PDO_MYSQL-1.0.2/mysql_statement.c
PDO_MYSQL-1.0.2/pdo_mysql.c
PDO_MYSQL-1.0.2/php_pdo_mysql.h
PDO_MYSQL-1.0.2/php_pdo_mysql_int.h
PDO_MYSQL-1.0.2/php_pdo_mysql_sqlstate.h

②进入源码包 cd PDO_MYSQL-1.0.2

[root@cms-test PDO_MYSQL-1.0.2]# ls
config.m4 CREDITS mysql_driver.c mysql_statement.c pdo_mysql.c php_pdo_mysql.h php_pdo_mysql_int.h 

执行以下操作 :

#/usr/local/php/bin/phpize (/usr/local/php/ 是php的安装目录)
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

#./configure --with-php-config=/usr/local/php/bin/php-config

在这里遇到来一个问题如下:
A  error: Cannot find MySQL header files under 
这是因为没找到mysql的安装目录,解决办法为执行以下命令:
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql(/usr/local/mysql为mysql的安装目录)   #我的MySQL数据库默认安装在/usr/share/mysql
#在配置的时候还出现not find  libmysqlclient.so

#解决方案是,在/usr/lib/中找到libmysqlclient.so文件并且拷到相应的缺少该文件目录下面

B 执行时报错如下;
configure: warning: You will need re2c 0.12.0 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking for MySQL support for PDO... yes, shared
checking for mysql_config... not found
configure: error: Cannot find MySQL header files under 
解决办法:
cp /usr/local/mysql/bin/mysql_config /usr/bin

③再执行以下命令

[root@cms-test PDO_MYSQL-1.0.2]#make

执行时报错如下:
/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:25:19: error: mysql.h: No such file or directory
In file included from /software/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:36: error: expected specifier-qualifier-list before 'MYSQL'
/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:48: error: expected specifier-qualifier-list before 'MYSQL_FIELD'
/software/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:53: error: expected specifier-qualifier-list before 'MYSQL_RES'
make: *** [pdo_mysql.lo] Error 1
解决办法:
yum install mysql-devel

还不行就查找

find / -name mysql.h

找到路径如下/usr/include/mysql/mysql.h

ln -s /usr/include/mysql/* /usr/local/include/

#make install

 

三,修改php.ini; 

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "pdo_mysql.so"

重启apache,到此安装完成,可以查看phpinfo.php里找到对应的pdo_mysql。

 

如果需要添加新扩展:

cp /usr/local/php-fcgi /usr/local/php-fcgi_bak



./configure \

--prefix=/usr/local/php-fcgi \

--without-iconv \

--enable-mbstring \

--with-mysql \

--with-pdo-mysql



make clean

make && make install



cp php.ini-pro /usr/local/php-fcgi/lib/php.ini

mkdir /usr/local/php-fcgi/lib/php/extensions

mkdir /usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20100525

cp /usr/local/php-fcgi_bak/lib/php/extensions/no-debug-non-zts-20100525/* /usr/local/php-fcgi/lib/php/extensions/no-debug-non-zts-20100525/

[php.ini]

;末尾添加如下:

extension = imagick.so



extension = fastdfs_client.so



; the base path

fastdfs_client.base_path = /tmp



; connect timeout in seconds

; default value is 30s

fastdfs_client.connect_timeout = 2



; network timeout in seconds

; default value is 30s

fastdfs_client.network_timeout = 60



; standard log level as syslog, case insensitive, value list:

;;; emerg for emergency

;;; alert

;;; crit for critical

;;; error

;;; warn for warning

;;; notice

;;; info

;;; debug

fastdfs_client.log_level = info



; set the log filename, such as /usr/local/fastdfs/logs/fastdfs_client.log

; empty for output to stderr

fastdfs_client.log_filename =



; secret key to generate anti-steal token

; this parameter must be set when http.anti_steal.check_token set to true

; the length of the secret key should not exceed 128 bytes

fastdfs_client.http.anti_steal_secret_key =



; FastDFS cluster count, default value is 1

fastdfs_client.tracker_group_count = 1



; config file of FastDFS cluster ;, based 0

; must include absolute path, such as fastdfs_client.tracker_group0

; the config file is same as conf/client.conf

fastdfs_client.tracker_group0 = /etc/fdfs/client.conf



; if use connection pool

; default value is false

; since V4.05

fastdfs_client.use_connection_pool = false



; connections whose the idle time exceeds this time will be closed

; unit: second

; default value is 3600

; since V4.05

fastdfs_client.connection_pool_max_idle_time = 3600

 

posted @ 2017-08-15 16:44  Jared卓  阅读(363)  评论(0)    收藏  举报