/ 中存储网

CentOS系统中配置fastDFS结合Nginx以及PHP程序中的调用方法

2013-11-08 11:36:01 来源:ITJS.CN

开始吧

————————————————–

环境:

CentOS 6.3 x64      3台

tracker server  IP: 192.168.41.160

storage server IP: 192.168.41.162

storage server IP: 192.168.41.163

PHP客户端 IP: 192.168.41.156

————————————————–

1、安装部署

1.0.1安装依赖包libevent  (所有机器)

tar zxvf  libevent-1.4.14b-stable.tar.gz

cd libevent-1.4.14b-stable

./configure –prefix=/usr/local/libevent

make

make install

 

1.0.2安装fastDFS (tracker、storage、php端都按照此方法) (所有机器)

tar zxvf  FastDFS_v4.04.tar.gz

cd FastDFS

vi make.sh   //  tracker才需要,storage、php不用操作此步骤

//64行左右 删除#号开启WITH_HTTPD和WITH_LINUX_SERVICE

//开启自带的http,据说最新版已经取消自带的http功能

./make.sh C_INCLUDE_PATH=/usr/local/libevent/include LIBRARY_PATH=/usr/local/libevent/lib 

./make.sh install

//到这里安装就完毕了

//可以看到fastDFS的相关配置文件

ls /etc/fdfs/

tracker.conf //负责均衡调度服务器配置文件

client.conf //客户端上传配置文件

http.conf //http服务器配置文件

storage.conf //文件存储服务器配置文件

mime.types //文件类型配置文件

1.0.3启动fastDFS tracker    (192.168.41.160)

//创建目录,用于记录 tracker日志、storage server等信息。

mkdir -m 777 -p /www/fastDFS

//修改tracker.conf

vi /etc/fdfs/tracker.conf

把 22  行 改成  base_path=/www/fastDFS

把 222行 改成 http.server_port=8088   //如果本机没用到8080可以不修改

把 244行 改成 #include http.conf   //注意,改完前面有个#,不要全部去掉

//启动tracker

/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf

//查看端口是否开启,看到22122 和8088就说明启动正常。如果没有,查看/www/fastDFS/logs里的日志

netstat -tnlp

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

1.0.4启动fastDFS storage  (192.168.41.162 192.168.41.163)

//创建目录,用于存储文件。

mkdir -m 777 -p /www/fastDFS

//修改storage.conf

vi /etc/fdfs/storage.conf

把 33  行   改成 base_path=/www/fastDFS

把 100行 改成 store_path0=/www/fastDFS

把 109行 改成 tracker_server=192.168.41.160:22122 //根据自己的IP

把 252行 改成 http.disabled=true     //因为我们要用nginx了,这个就关闭它

把 259行 改成 http.server_port=80

//启动storage

/usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf

//查看端口是否开启,看到23000就说明启动正常。如果没有,查看/www/fastDFS/logs里的日志

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

//这个时候可以看下storage与tracker的连接情况

netstat -tnlpa| grep 22122

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

 2、测试上传

2.0.1  配置客户端上传文件 (192.168.41.160)

vi /etc/fdfs/client.conf

把 10 行 改成 base_path=/www/fastDFS

把 14 行 改成 tracker_server=192.168.41.160:22122 //根据自己的IP

把 29 行 改成  http.tracker_server_port=8088 //这个一定要跟tracker.conf里面配置的一样

把 32 行 改成 #include http.conf       //注意,改完前面有个#,不要全部去掉

//随意上传个文件

echo ‘fastDFS_test’ >/tmp/test.txt

fdfs_test /etc/fdfs/client.conf upload /tmp/test.txt

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

//看到类似上面的返回,说明文件已经成功上传。如果不是,说明配置出错了,查看日志。

//记录下这个URL:http://192.168.41.160:8080/group1/M00/00/00/wKgpolFwG-WANaKzAAAADVt_Kt4300_big.txt

3、nginx配置

3.0.1  nginx拓展模块安装 (192.168.41.162 192.168.41.163)

//nginx的安装比较简单,这里不做解释

//曾经有过疑问,既然文件是直接被保持在storage服务器上,那直接用nginx就可以访问了,为什么还要添加这个模块?

//答:

//使用扩展模块来解决文件同步延迟问题

//如果请求文件在当前storage上不存在,通过文件ID反解出源storage,直接请求源storage

//tracker server上不需要任何web server

//在每台storage server上部署web server,直接对外提供HTTP服务

//目前已提供apache和nginx扩展模块

//推荐使用扩展模块方式

//假设nginx已经在系统被安装过。

tar zxvf fastdfs-nginx-module_v1.13.tar.gz

/usr/local/nginx/sbin/nginx -V

//运行后得到原来的编译参数,如:

// –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-openssl=/root/openssl-1.0.0d

cd nginx-1.0.10

./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-openssl=/root/openssl-1.0.0d –add-module=/root/fastdfs-nginx-module/src      //fastdfs-nginx-module的路径根据自己的环境修改

make

make install

cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

vi /etc/fdfs/mod_fastdfs.conf

把 3  行 改成connect_timeout=20      //默认2秒有点小,可改可不改

把 10行 改成base_path=/www/fastDFS/

把 40行 改成tracker_server=192.168.41.160:22122 ////根据自己的IP

把 62行 改成store_path0=/www/fastDFS

ln -s /www/fastDFS/data    /www/fastDFS/data/M00

//编辑nginx.conf

vi /usr/local/nginx/conf/nginx.conf

//在server段添加如下内容:

location /group1/M00/ { alias /www/fastDFS/data/; ngx_fastdfs_module; }

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s stop

/usr/local/nginx/sbin/nginx

//这里直接用usr/local/nginx/sbin/nginx -s reload 有时候会出现nginx没办法访问。

3.0.2  nginx拓展模块验证 (192.168.41.162 192.168.41.163)

//用浏览器打开我们上面记录的URL:

//http://192.168.41.160:8080/group1/M00/00/00/wKgpolFwG-WANaKzAAAADVt_Kt4300_big.txt

//访问tracker 会被302跳转到一台可用的storage上面去请求

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

//当然,在另一个节点上也是可以访问的,手动更改url:

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

4、PHP客户端配置

4.0.1  php拓展模块安装 (PHP端)

//php的客户端安装也会依赖 FastDFS本身的一些库文件,所以请保证已经安装了FastDFS。

cd /root/FastDFS/php_client/

/usr/local/php/bin/phpize

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

make

make install

cat fastdfs_client.ini >> /usr/local/php/etc/php.ini

//验证模块是否被正常加载

/usr/local/php/bin/php -m |grep fastdfs_client

//如果有返回,就说明成功。

cp ../conf//etc/fdfs/ /etc/fdfs/

vi /etc/fdfs//etc/fdfs/

把 14 行改成  tracker_server=192.168.41.160:22122

把 29 行改成  http.tracker_server_port=8088

//重启加载php

/usr/local/php/sbin/php-fpm  reload

4.0.2  php拓展模块验证 (PHP端)

//随意创建个文件,上传用

echo ‘php_upload_test’  >/tmp/upload.txt

//创建个上传test.php  内容如下:

<?php

var_dump(function_exists('fastdfs_storage_upload_by_filename'));

$ret = fastdfs_storage_upload_by_filename('

/tmp/upload.txt

');

var_dump($ret);

//执行:

/usr/local/php/bin/php test.php

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

//看到上面的返回,应该很熟悉吧,说明成功了。用浏览器访问下:

CentOS fastDFS结合nginx的配置以及php端的调用方法 - 李坤山 - 李坤山VS断悬

关于fastDFS php插件的使用方法和函数调用方法,可以查看/root/FastDFS/php_client/README

OK。