FastDFS不是通用的文件系统,只能通过专用的API来访问,目前提供了C JAVA PHP的API,下面我们来安装php扩展。
让Fastdfs支持php,在FastDFS的源码包解压后里面有个php_client目录,进入此目录,参照README进行安装:
1 | phpize |
2 | ./configure |
3 | make |
4 | 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函数解释,可以进行测试。
测试:
创建一个test-file文件,内容:I'm test file,然后使用fdfs_upload_file命令上传,结果如下:
编写test.php测试界面:
1 | <?php |
2 | $file_info =fastdfs_get_file_info1( 'group1/M00/00/00/CgEGflArNZmlRB8kAAAADvvpdFc8638629' ); |
3 | var_dump( $file_info ); |
4 | ?> |
测试结果如下:
安装apache2扩展:
在每台storage server上部署web server,直接对外提供HTTP服务,tracker server上不需要部署web server,如果请求文件在当前storage上不存在,通过文件ID反解出源storage,直接请求源storage,FastDFS扩展模块不依赖于FastDFS server,可以独立存在!
在storage上安装apache2
1 | apt-get install apache2 apache2.2-common apache2.2-bin apache2-utils apache2-mpm-prefork libapache2-mod-php5 apache2-prefork-dev |
下载扩展包
1 | wget http://fastdfs.googlecode.com/files/fastdfs-apache-module_v1.10. tar .gz |
由于默认的包的配置都是centos下的配置,所以在安装前需要修改一下Makefile文件
1 | tar zxvf fastdfs-apache-module_v1.10. tar .gz |
2 | cd fastdfs-apache-module/src |
3 | vi Makefile |
4 | #相对应的变量改成以下值,只针对debian6下apt方式安装的apache2 |
5 | APACHE_BASE_PATH=/usr/share/apache2/ |
6 | APXS=/usr/bin/apxs2 |
7 | APACHECTL=/usr/bin/apachectl |
安装
1 | make |
2 | make install |
修改apache2配置
1 | #创建mod_fastdfs.load文件 |
2 | vi /etc/apache2/mods-available/mod_fastdfs.load |
3 | LoadModule fastdfs_module /usr/lib/apache2/modules/mod_fastdfs.so |
4 | <Location /M00> |
5 | sethandler fastdfs |
6 | </Location> |
1 | #加载mod_fastdfs.so模块 |
2 | a2enmod mod_fastdfs |
1 | #修改虚拟主机配置,修改相关变量值,增加alias行配置 |
2 | vi /etc/apache2/sites-enabled/000-default |
3 | DocumentRoot /opt/fdfs/data/ |
4 | <Directory /opt/fdfs/data/> |
5 |
6 | alias /group1/M00 /opt/fdfs/data |
修改mod_fastdfs.conf配置
1 | vi /etc/fdfs/mod_fastdfs.conf |
2 | base_path=/opt/fdfs |
3 | tracker_server=x.x.x.x:22122 |
4 | store_path0=/opt/fdfs |
配置生效
1 | /etc/init.d/apache2 restart |
测试先上传一个图片:
1 | fdfs_upload_file /etc/fdfs/client.conf 2.jpg |
返回文件ID:group1/M00/00/00/CgEGflArRqG5Nsu_AACLn3wEca8908.jpg
在浏览器中测试如下:
添加nginx扩展:
下载扩展包:
1 | wget http://fastdfs-nginx-module.googlecode.com/files/fastdfs-nginx-module_v1.10. tar .gz |
由于nginx的模块都为静态加载,所以需要编译安装nginx,过程如下:
1 | ./configure --prefix=/etc/nginx2/ --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module |
2 | --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module |
3 | --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with- file -aio --with-ipv6 |
4 | --add-module=/root/fastdfs-nginx-module/src |
5 |
6 | make && make install |
修改nginx.conf,添加如下内容:
1 | vi /etc/nginx2/conf/nginx.conf |
2 | #在server字段下添加以下内容 |
3 | location /M00 { |
4 | root /opt/fdfs/data; |
5 | ngx_fastdfs_module; |
6 | } |
/etc/fdfs/mod_fastdfs.conf配置文件的修改和apache2一致,经过测试可以正常工作