FastDFS的php和nginx模块配置
一、FastDFS和php整合1、安装php
# 安装依赖包
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-developenssl openssl-devel openldap openldap-devel nss_ldap openldap_clients
# 安装epel,为了安装libmcrypt等包
yuminstall epel-release
yum install libmcrypt libmcrypt-devel mcrypt mhash -y
#下载并解压php源码包
cd /opt/tools
wget http://cn2.php.net/get/php-5.6.26.tar.gz/from/this/mirror
tar -zxf php-5.6.26.tar.gz
#编译安装
cd php-5.6.26
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc--with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-zlib --enable-pdo --with-pdo-mysql
make && make install 2、生成并配置fastdfs的php模块
# 进入fastdfs源码解压后的目录
cd /opt/tools/fastdfs-5.05/php_client/
/usr/local/php/bin/phpize
# 测试php安装结果
# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
# 编译并安装fastdfs的php模块
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
# ll /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
total 1992
-rwxr-xr-x 1 root root340037 Oct5 17:26 fastdfs_client.so
-rwxr-xr-x 1 root root 1105024 Oct5 17:13 opcache.a
-rwxr-xr-x 1 root root586352 Oct5 17:13 opcache.so 3、编辑php.ini
cp /opt/tools/php-5.6.26/php.ini-production /usr/locni-production /usr/local/php/etc/php.ini
cd /opt/tools/fastdfs-5.05/php_client
# ll fastdfs_client.ini
-rw-rw-r-- 1 root root 1403 Nov 222014 fastdfs_client.ini
cat fastdfs_client.ini >> /usr/local/php/etc/php.ini 4、测试通过php操作fastdfs
/usr/local/php/bin/php fastdfs_test.php
# /usr/local/php/bin/php fastdfs_test.php
5.05
fastdfs_tracker_make_all_connections result: 1
array(1) {
["group1"]=>
array(13) {
["total_space"]=>
int(17944)
["free_space"]=>
int(12476)
["trunk_free_space"]=>
int(0)
["server_count"]=>
int(2)
["active_count"]=>
int(2)
["storage_port"]=>
int(23000)
["storage_http_port"]=>
int(8888)
["store_path_count"]=>
int(1)
["subdir_count_per_path"]=>
int(256)
["current_write_server"]=>
int(0)
["current_trunk_file_id"]=>
int(0)
["192.168.100.181"]=>
array(61) {
["ip_addr"]=>
string(15) "192.168.100.181"
["join_time"]=>
int(1475602195)
["up_time"]=>
int(1475646224)
["http_domain"]=>
string(0) ""
["version"]=>
string(4) "5.05"
["src_storage_id"]=>
string(0) ""
["if_trunk_server"]=>
bool(false)
["upload_priority"]=>
int(10)
["store_path_count"]=>
int(1)
["subdir_count_per_path"]=>
int(256)
["storage_port"]=>
int(23000)
["storage_http_port"]=>
int(8888)
["current_write_path"]=>
int(0)
["status"]=>
int(7)
["total_space"]=>
int(17944)
["free_space"]=>
int(12476)
["connection.alloc_count"]=>
int(256)
["connection.current_count"]=>
int(1)
["connection.max_count"]=>
int(2)
["total_upload_count"]=>
int(1)
["success_upload_count"]=>
int(1)
["total_append_count"]=>
int(0)
["success_append_count"]=>
int(0)
["total_modify_count"]=>
int(0)
["success_modify_count"]=>
int(0)
["total_truncate_count"]=>
int(0)
["success_truncate_count"]=>
int(0)
["total_set_meta_count"]=>
int(0)
["success_set_meta_count"]=>
int(0)
["total_delete_count"]=>
int(1)
["success_delete_count"]=>
int(1)
["total_download_count"]=>
int(2)
["success_download_count"]=>
int(2)
["total_get_meta_count"]=>
int(0)
["success_get_meta_count"]=>
int(0)
["total_create_link_count"]=>
int(0)
["success_create_link_count"]=>
int(0)
["total_delete_link_count"]=>
int(0)
["success_delete_link_count"]=>
int(0)
["total_upload_bytes"]=>
int(13)
["success_upload_bytes"]=>
int(13)
["total_append_bytes"]=>
int(0)
["success_append_bytes"]=>
int(0)
["total_modify_bytes"]=>
int(0)
["success_modify_bytes"]=>
int(0)
["total_download_bytes"]=>
int(26)
["success_download_bytes"]=>
int(26)
["total_sync_in_bytes"]=>
int(12)
["success_sync_in_bytes"]=>
int(12)
["total_sync_out_bytes"]=>
int(0)
["success_sync_out_bytes"]=>
int(0)
["total_file_open_count"]=>
int(5)
["success_file_open_count"]=>
int(5)
["total_file_read_count"]=>
int(2)
["success_file_read_count"]=>
int(2)
["total_file_write_count"]=>
int(3)
["success_file_write_count"]=>
int(3)
["last_heart_beat_time"]=>
int(1475660266)
["last_source_update"]=>
int(1475647676)
["last_sync_update"]=>
int(1475648117)
["last_synced_timestamp"]=>
int(1475648114)
}
["192.168.100.182"]=>
array(61) {
["ip_addr"]=>
string(15) "192.168.100.182"
["join_time"]=>
int(1475602286)
["up_time"]=>
int(1475648692)
["http_domain"]=>
string(0) ""
["version"]=>
string(4) "5.05"
["src_storage_id"]=>
string(15) "192.168.100.181"
["if_trunk_server"]=>
bool(false)
["upload_priority"]=>
int(10)
["store_path_count"]=>
int(1)
["subdir_count_per_path"]=>
int(256)
["storage_port"]=>
int(23000)
["storage_http_port"]=>
int(8888)
["current_write_path"]=>
int(0)
["status"]=>
int(7)
["total_space"]=>
int(18717)
["free_space"]=>
int(15808)
["connection.alloc_count"]=>
int(256)
["connection.current_count"]=>
int(1)
["connection.max_count"]=>
int(1)
["total_upload_count"]=>
int(1)
["success_upload_count"]=>
int(1)
["total_append_count"]=>
int(1)
["success_append_count"]=>
int(1)
["total_modify_count"]=>
int(0)
["success_modify_count"]=>
int(0)
["total_truncate_count"]=>
int(0)
["success_truncate_count"]=>
int(0)
["total_set_meta_count"]=>
int(0)
["success_set_meta_count"]=>
int(0)
["total_delete_count"]=>
int(0)
["success_delete_count"]=>
int(0)
["total_download_count"]=>
int(2)
["success_download_count"]=>
int(2)
["total_get_meta_count"]=>
int(0)
["success_get_meta_count"]=>
int(0)
["total_create_link_count"]=>
int(0)
["success_create_link_count"]=>
int(0)
["total_delete_link_count"]=>
int(0)
["success_delete_link_count"]=>
int(0)
["total_upload_bytes"]=>
int(6)
["success_upload_bytes"]=>
int(6)
["total_append_bytes"]=>
int(6)
["success_append_bytes"]=>
int(6)
["total_modify_bytes"]=>
int(0)
["success_modify_bytes"]=>
int(0)
["total_download_bytes"]=>
int(25)
["success_download_bytes"]=>
int(25)
["total_sync_in_bytes"]=>
int(13)
["success_sync_in_bytes"]=>
int(13)
["total_sync_out_bytes"]=>
int(0)
["success_sync_out_bytes"]=>
int(0)
["total_file_open_count"]=>
int(5)
["success_file_open_count"]=>
int(5)
["total_file_read_count"]=>
int(2)
["success_file_read_count"]=>
int(2)
["total_file_write_count"]=>
int(3)
["success_file_write_count"]=>
int(3)
["last_heart_beat_time"]=>
int(1475660272)
["last_source_update"]=>
int(1475648114)
["last_sync_update"]=>
int(1475647685)
["last_synced_timestamp"]=>
int(0)
}
}
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(22122)
["sock"]=>
int(4)
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(22122)
["sock"]=>
int(5)
}
bool(true)
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(22122)
["sock"]=>
int(-1)
}
array(2) {
=>
array(4) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
["store_path_index"]=>
int(0)
}
=>
array(4) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(23000)
["sock"]=>
int(-1)
["store_path_index"]=>
int(0)
}
}
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(44) "M00/00/00/wKhktVf0yf2AVFhSAAB7UNInADc94328.h"
}
array(5) {
["source_id"]=>
int(0)
["create_timestamp"]=>
int(1475660285)
["file_size"]=>
int(31568)
["source_ip_addr"]=>
string(15) "192.168.100.181"
["crc32"]=>
int(-769195977)
}
file exist: 1
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(50) "M00/00/00/wKhktVf0yf2AVFhSAAB7UNInADc94328.part1.h"
}
delete slave file return: 1
delete file return: 1
string(57) "group1/M00/00/00/wKhktVf0yf2AE52YAAB7UNInADc60554.part2.h"
delete file group1/M00/00/00/wKhktVf0yf2AE52YAAB7UNInADc60554.part2.h return: 1
delete file group1/M00/00/00/wKhktVf0yf2AE52YAAB7UNInADc60554.h return: 1
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(44) "M00/00/00/wKhktlf0yf2AZjIKAAAAD5Ij_SY680.txt"
}
array(5) {
["source_id"]=>
int(0)
["create_timestamp"]=>
int(1475660285)
["file_size"]=>
int(15)
["source_ip_addr"]=>
string(15) "192.168.100.182"
["crc32"]=>
int(-1843135194)
}
file exist: 1
token=984fd906825dec9b3e7cd560a44a97aa
file content: this is a test.(15)
storage_download_file_to_file result: 1
fastdfs_storage_set_metadata result: 1
array(3) {
["color"]=>
string(0) ""
["font"]=>
string(8) "MS Serif"
["size"]=>
string(2) "32"
}
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(50) "M00/00/00/wKhktlf0yf2AZjIKAAAAD5Ij_SY680.part1.txt"
}
delete slave file return: 1
delete file return: 1
file content: thisisatest.(15)
storage_download_file_to_file1 result: 1
fastdfs_storage_set_metadata1 result: 1
array(5) {
["color"]=>
string(6) "yellow"
["font"]=>
string(8) "MS Serif"
["height"]=>
string(3) "768"
["size"]=>
string(10) "1234567890"
["width"]=>
string(4) "1024"
}
string(57) "group1/M00/00/00/wKhktVf0yf6AOjCBAAAAD_4E1BM090.part2.txt"
delete file group1/M00/00/00/wKhktVf0yf6AOjCBAAAAD_4E1BM090.part2.txt return: 1
delete file group1/M00/00/00/wKhktVf0yf6AOjCBAAAAD_4E1BM090.bin return: 1
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(1) {
=>
array(3) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(1) {
=>
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
}
fastdfs_tracker_close_all_connections result: 1
tracker_make_all_connections result: 1
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(22122)
["sock"]=>
int(3)
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(22122)
["sock"]=>
int(8)
}
bool(true)
array(2) {
=>
array(4) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
["store_path_index"]=>
int(0)
}
=>
array(4) {
["ip_addr"]=>
string(15) "192.168.100.182"
["port"]=>
int(23000)
["sock"]=>
int(-1)
["store_path_index"]=>
int(0)
}
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
array(1) {
=>
array(3) {
["ip_addr"]=>
string(15) "192.168.100.181"
["port"]=>
int(23000)
["sock"]=>
int(-1)
}
}
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(44) "M00/00/00/wKhktVf0yf6ADI75AAB7UNInADc29189.h"
}
array(5) {
["source_id"]=>
int(0)
["create_timestamp"]=>
int(1475660286)
["file_size"]=>
int(31568)
["source_ip_addr"]=>
string(15) "192.168.100.181"
["crc32"]=>
int(-769195977)
}
file exist: 1
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(50) "M00/00/00/wKhktVf0yf6ADI75AAB7UNInADc29189.part1.h"
}
delete slave file return: 1
delete file return: 1
string(57) "group1/M00/00/00/wKhktlf0yf6AGc7zAAB7UNInADc71931.part2.c"
delete file group1/M00/00/00/wKhktlf0yf6AGc7zAAB7UNInADc71931.part2.c return: 1
delete file group1/M00/00/00/wKhktlf0yf6AGc7zAAB7UNInADc71931.c return: 1
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(44) "M00/00/00/wKhktVf0yf6AFavJAAAAAAAAAAA794.txt"
}
file content: (0)
storage_download_file_to_file result: 1
storage_set_metadata result: 1
array(2) {
["color"]=>
string(6) "yellow"
["size"]=>
string(2) "32"
}
array(2) {
["group_name"]=>
string(6) "group1"
["filename"]=>
string(50) "M00/00/00/wKhktVf0yf6AFavJAAAAAAAAAAA794.part1.txt"
}
delete slave file return: 1
delete file return: 1
array(5) {
["source_id"]=>
int(0)
["create_timestamp"]=>
int(1475660286)
["file_size"]=>
int(15)
["source_ip_addr"]=>
string(15) "192.168.100.182"
["crc32"]=>
int(-1385915893)
}
file exist: 1
token=1c19dc1cf1702db27bc956dd92827e41
file content: thisisatest.(15)
storage_download_file_to_file1 result: 1
storage_set_metadata1 result: 1
string(57) "group1/M00/00/00/wKhktlf0yf6AKcjvAAAAD61kmgs561.part2.txt"
delete file group1/M00/00/00/wKhktlf0yf6AKcjvAAAAD61kmgs561.part2.txt return: 1
array(3) {
["color"]=>
string(6) "yellow"
["font"]=>
string(4) "Aris"
["size"]=>
string(2) "32"
}
delete file group1/M00/00/00/wKhktlf0yf6AKcjvAAAAD61kmgs561.bin return: 1
bool(true)
tracker_close_all_connections result: 1 二、fastdfs的nginx模块部署和配置
1、下载pcre
cd /opt/tools
wget https://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz/download --no-check-certificate
tar -zxf pcre-8.37.tar.gz 2、下载fastdfs nginx模块
cd /opt/tools/
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
# tree fastdfs-nginx-module/
fastdfs-nginx-module/
├── HISTORY
├── INSTALL
└── src
├── common.c
├── common.h
├── config
├── mod_fastdfs.conf
└── ngx_http_fastdfs_module.c
1 directory, 7 files 3、编译安装nginx
wget http://nginx.org/download/nginx-1.10.1.tar.gz
tar -zxf nginx-1.10.1.tar.gz
cd nginx-1.10.1
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-pcre=/opt/tools/pcre-8.37 --add-module=/opt/tools/fastdfs-nginx-module/src/
make && make install
useradd -s /sbin/nologin -M nginx 4、准备配置文件
cd /opt/tools/fastdfs-nginx-module/src/
cp mod_fastdfs.conf /etc/fdfs/#拷贝fastdfs nginx模块目录下的mod_fastdfs.conf到/etc/fdfs下
cp /opt/tools/fastdfs-5.05/conf/{anti-steal.jpg,http.conf,mime.types} /etc/fdfs/#把fastdfs安装源文件中/conf目录下的这三个文件拷贝到/etc/fdfs下
touch /var/log/mod_fastdfs.log#创建fastdfs nginx模块日志,方便后面排错
chown nginx:nginx /var/log/mod_fastdfs.log 5、修改配置文件
1)修改nginx配置文件
cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak
vi nginx.conf
# diff nginx.conf.baknginx.conf
37c37
< server_namelocalhost;
---
> server_name192.168.100.181;
41a42,45
> location /group1/M00 { #这段内容是新增的,需要放在默认location / 段的前面
> root /data/fdfs_storage/store/;
> ngx_fastdfs_module;
> } 2)修改fastdfs nginx模块的配置文件
cp /etc/fdfs/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf.bak
vi /etc/fdfs/mod_fastdfs.conf
# diff /etc/fdfs/mod_fastdfs.conf.bak /etc/fdfs/mod_fastdfs.conf
40c40,41
< tracker_server=tracker:22122
---
> tracker_server=192.168.100.181:22122 #修改tracker的IP地址
> tracker_server=192.168.100.182:22122
53c54
< url_have_group_name = false
---
> url_have_group_name = true #允许包含组名,这个与nginx的配置对应,因为nginx上的配置没有把路径写全,所以这里要允许包含组名
62c63
< store_path0=/home/yuqing/fastdfs
---
> store_path0=/data/fdfs_storage/store#修改存储路径为实际的文件路径
78c79
< log_filename=
---
> log_filename=/var/log/mod_fastdfs.log#指定fastdfs nginx的日志路径 6、启动nginx
# /usr/local/nginx/sbin/nginx -t
ngx_http_fastdfs_set pid=8782
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=8783
# lsof -i :80
COMMANDPIDUSER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 8784root 6uIPv444777 0t0TCP *:http (LISTEN)
nginx 8785 nginx 6uIPv444777 0t0TCP *:http (LISTEN)
# netstat -lnt|grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
# ps -ef|grep nginx
root 8784 10 23:07 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 8785 87840 23:07 ? 00:00:00 nginx: worker process
root 8791 17930 23:07 pts/0 00:00:00 grep nginx 7、上传文件
# cat /root/a.txt
Hello,world.
# fdfs_upload_file /etc/fdfs/client.conf /root/a.txt
group1/M00/00/00/wKhktVf1GFaATxhVAAAADUwC04E708.txt
# fdfs_upload_file /etc/fdfs/client.conf /root/test.gif
group1/M00/00/00/wKhktlf1GcKALtFFAAAlbU5-NyE685.gif 8、使用浏览器测试
http://s3.运维网.com/wyfs02/M01/88/63/wKioL1f1HvzyDXI3AAC21uvlfNg628.jpg-wh_500x0-wm_3-wmp_4-s_1850075667.jpg
http://s1.运维网.com/wyfs02/M02/88/67/wKiom1f1Hv-yFwBkAAC9K7DBYX4346.jpg-wh_500x0-wm_3-wmp_4-s_1613156272.jpg
页:
[1]