FastDFS架构简介
0.参考
本文是在学习淘淘商城项目时记录的。主要是参考了淘淘商城视频及《Java
程序员眼中的 Linux》
https://github.com/judasn/Linux-Tutorial
FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。FastDFS 是包括一组 Tracker Server 和 Storage Server 的。Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。 Storage Server 是分成多个 Group,每个 Group 中的Storage 都是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、100GB、100GB,那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备份的意思。进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin(轮训)、load balanced(负载均衡)或指定 Group 的方式。另一点相对于MS(Master-Slave)模式的优势,就是 Tracker Server 与 Master 是决然不同的,不仅 master 有上面可能提到的单点故障问题,而且 client 与 master 之间可能会出现瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据最终是与一个 available 的 Storage Server 进行传输的。
1.什么是FastDFS
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
上传流程
我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的基本架构。首先客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server上。
1.png
总结
2.文件上传流程
简单总结一下,FastDFS的特点包括(1)高可靠性:无单点故障;(2)高吞吐量:只要 Group 足够多,数据流量是足够分散的。
2.png
FastDFS部署:
3.文件下载流程
1、机器分布
Tracker 192.168.100.106:22122 CentOS
3.png
Group1-Storage1 192.168.100.106:23001 CentOS
4.上传文件的文件名
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
Group1-Storage1 192.168.100.125:23001 CentOS
clipboard.png
2、需要到的软件和版本(软件存放位置:/root/soft)
组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
5.FastDFS搭建
说明:nginx主要实现负载均衡、缓存等功能
clipboard2.png
3、创建相关文件夹
可以使用一台虚拟机来模拟,只有一个Tracker、一个Storage服务。配置nginx访问图片。
5.1 搭建步骤(单机安装部署CentOS 6.7 环境)
配置tracker所需的base_path: /opt/fastdfs_tracker
软件准备
FastDFS_v5.05.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-1.0.7.tar.gz
配置storage所需的日志目录:fastdfs_storage_info。备注:存储storage之间同步文件等日志的
安装依赖包:yum install -y libevent
进入安装路径:cd /usr/local
创建fastFDS文件夹:mkdir fastFDS
进入fastFDS文件夹:cd fastFDS
安装 libfastcommon-1.0.7.tar.gz
下载:wget
https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
修改名字:mv V1.0.7 libfastcommon-1.0.7.tar.gz
解压:tar zxvf libfastcommon-1.0.7.tar.gz
进入解压后目录:cd libfastcommon-1.0.7/
编译:./make.sh
安装:./make.sh install
设置几个软链接:ln -s /usr/lib64/libfastcommon.so
/usr/local/lib/libfastcommon.so
设置几个软链接:ln -s /usr/lib64/libfastcommon.so
/usr/lib/libfastcommon.so
设置几个软链接:ln -s /usr/lib64/libfdfsclient.so
/usr/local/lib/libfdfsclient.so
设置几个软链接:ln -s /usr/lib64/libfdfsclient.so
/usr/lib/libfdfsclient.so
配置storage所需的存储文件目录: /opt/fastdfs_storage_data。备注: 这个目录是用来存储文件的
安装 tracker (跟踪器)服务 FastDFS_v5.05.tar.gz
下载:wget
https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
修改名字:mv V5.05 FastDFS_v5.05.tar.gz
解压:tar zxvf FastDFS_v5.05.tar.gz
进入解压后目录:cd fastdfs-5.05/
编译:./make.sh
安装:./make.sh install
安装结果:
/usr/bin 存放有编译出来的文件/etc/fdfs 存放有配置文件
配置 tracker 服务
复制一份配置文件:cp /etc/fdfs/tracker.conf.sample
/etc/fdfs/tracker.conf
编辑:vim /etc/fdfs/tracker.conf,编辑内容看下面中文注释
<pre>
disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
以上三个文件将在后续的tracker.conf和storage.conf、mod_fastdfs.conf中用到
base_path=/opt/fastdfs/tracker/data-and-log
max_connections=256
accept_threads=1
work_threads=4
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html
</pre>
启动 tracker 服务:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重启 tracker 服务:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
restart
查看是否有 tracker 进程:ps aux | grep tracker
storage (存储节点)服务部署
一般 storage
服务我们会单独装一台机子,但是这里为了方便我们安装在同一台。
如果 storage
单独安装的话,那上面安装的所有步骤都要在走一遍,只是到了编辑配置文件的时候,编辑的是
storage.conf 而已
复制一份配置文件:cp /etc/fdfs/storage.conf.sample
/etc/fdfs/storage.conf
编辑:vim /etc/fdfs/storage.conf,编辑内容看下面中文注释
<pre>
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
4、安装libfastcommon-1.0.7.zip (注意:先检查是否安装unzip、zip、gcc、perl等)
unzip libfastcommon-1.0.7.zip
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
cd libfastcommon-1.0.7
sh make.sh && sh make.sh install
perl安装:
wget
subdir_count_per_path=256
tar zxvf perl-5.20.2.tar.gz
tracker_server=192.168.1.114:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name =
http.server_port=8888
</pre>
启动 storage 服务:/usr/bin/fdfs_storaged
/etc/fdfs/storage.conf,首次启动会很慢,因为它在创建预设存储文件的目录
重启 storage 服务:/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
restart
查看是否有 storage 进程:ps aux | grep storage
测试是否部署成功
用自带的 client 进行测试
复制一份配置文件:cp /etc/fdfs/client.conf.sample
/etc/fdfs/client.conf
编辑:vim /etc/fdfs/client.conf,编辑内容看下面中文注释
<pre>
connect_timeout=30
network_timeout=60
mkdir /usr/local/perl
./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly
base_path=/opt/fastdfs/client/data-and-log
make
tracker_server=192.168.1.114:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=80
</pre>
从网上下载一张图片到 /opt下:
cd /opt
wget
http://www.rettc.org/staticImage/news/20160419/1460995882635.jpg
在终端中通过 shell 上传 opt 目录下的一张图片:/usr/bin/fdfs_test
/etc/fdfs/client.conf upload /opt/1460995882635.jpg
结果如下:
即使我们现在知道图片的访问地址我们也访问不了,因为我们还没装 FastDFS 的 Nginx 模块
安装Nginx和其插件
如果Nginx已经安装过,则仅需要fastdfs-nginx-module_v1.16.tar.gz。安装
Nginx 第三方模块相当于这个 Nginx 都是要重新安装一遍的
进入usr/local:cd /usr/local
下载Nginx:wget
http://nginx.org/download/nginx-1.11.8.tar.gz
下载Nginx插件:wget
http://jaist.dl.sourceforge.NET/project/fastdfs/FastDFS Nginx Module Source Code/fastdfs-nginx-module_v1.16.tar.gz
解压 Nginx 模块:tar zxvf
fastdfs-nginx-module_v1.16.tar.gz,放到目录地址:/opt/setups/FastDFS/fastdfs-nginx-module
编辑 Nginx 模块的配置文件:vim
/opt/setups/FastDFS/fastdfs-nginx-module/src/config
找到下面一行包含有 local 字眼去掉,因为这三个路径根本不是在 local
目录下的
<pre>
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
</pre>
改为如下:
<pre>
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
</pre>
复制文件:cp /usr/local/fastDFS/fastdfs-5.05/conf/http.conf /etc/fdfs
复制文件:cp /usr/local/fastDFS/fastdfs-5.05/conf/mime.types /etc/fdfs
安装 Nginx 依赖包:yum install -y gcc gcc-c pcre pcre-devel zlib
zlib-devel openssl openssl-devel
预设几个文件夹,方便等下安装的时候有些文件可以进行存放:mkdir -p
/usr/local/nginx /var/log/nginx /var/temp/nginx /var/lock/nginx
解压 Nginx:tar zxvf /opt/setups/nginx-1.8.1.tar.gz
进入解压后目录:cd /opt/setups/nginx-1.8.1/
编译配置:(注意最后一行)
<pre>
./configure
--prefix=/usr/local/nginx
--pid-path=/var/local/nginx/nginx.pid
--lock-path=/var/lock/nginx/nginx.lock
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--with-http_gzip_static_module
--http-client-body-temp-path=/var/temp/nginx/client
--http-proxy-temp-path=/var/temp/nginx/proxy
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi
--http-scgi-temp-path=/var/temp/nginx/scgi
--add-module=/opt/setups/FastDFS/fastdfs-nginx-module/src
</pre>
编译:make
安装:make install
复制 Nginx 模块的配置文件:cp
/opt/setups/FastDFS/fastdfs-nginx-module/src/mod_fastdfs.conf
/etc/fdfs
编辑 Nginx 模块的配置文件:vim
/etc/fdfs/mod_fastdfs.conf,编辑内容看下面中文注释
如果在已经启动 Nginx 的情况下修改下面内容记得要重启 Nginx。
<pre>
connect_timeout=2
network_timeout=30
make install
perl -version
base_path=/opt/fastdfs/fastdfs-nginx-module/data-and-log
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=192.168.1.114:22122
storage_server_port=23000
group_name=group1
注意:上述安装路径在/usr/lib64/,FastDFS主程序设置lib目录是/usr/local/lib,创建软连接如下:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
url_have_group_name = truestore_path_count=1
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
5、安装fastdfs-5.05.tar.gz:
store_path0=/opt/fastdfs/storage/images-data
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0
</pre>
编辑 Nginx 配置文件
<pre>
tar -zxvf fastdfs-5.05.tar.gz
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
# 访问本机
server_name 192.168.1.114;
# 拦截包含 /group1/M00 请求,使用 fastdfs 这个 Nginx 模块进行转发
location /group1/M00 {
ngx_fastdfs_module;
}
}
}
</pre>
启动 Nginx
停掉防火墙:service iptables stop
启动:/usr/local/nginx/sbin/nginx,启动完成 shell 是不会有输出的
访问:192.168.1.114,如果能看到:Welcome to nginx!,即可表示安装成功
检查 时候有 Nginx 进程:ps aux | grep nginx,正常是显示 3 个结果出来
刷新 Nginx 配置后重启:/usr/local/nginx/sbin/nginx -s reload
停止 Nginx:/usr/local/nginx/sbin/nginx -s stop
如果访问不了,或是出现其他信息看下错误立即:vim
/var/log/nginx/error.log本文主要参考
cd fastdfs-5.05
./make.sh && ./make.sh install
进入/etc/fdfs这个目录,如果有配置文件存在,则安装成功
以上步骤在tracker和storage机器上都需要执行
6、配置tracker (192.168.100.106)
进入/etc/fdfs文件夹,执行命令: cp tracker.conf.sample tracker.conf。
编辑tracker.conf,执行命令: vi tracker.conf ,配置成如下:
disabled=false #false代表开启配置文件
bind_addr= #空代表所有host,也可以指定host
port=22122 #tracker默认开启的端口号
connect_timeout=30 #连接超时时间
network_timeout=60 #网络超时时间
base_path=/opt/fastdfs_tracker #存放store的数据和日志文件
max_connections=256 #允许最大连接数
accept_threads=1 #允许的线程数
work_threads=4 #工作线程数,必须小于等于max_connections
store_lookup=2 #选择上传文件方式0:轮询,1:指定组,2:负载均衡
store_group=group1 #上传到组group1
store_server=0 #上传到storage,0:轮询,1:IP顺序,2:服务器顺序
store_path=0 #上传文件到哪个路径0:轮询,2:负载均衡
download_server=0 #指定下载服务器0:轮询,1:使用源服务器
reserved_storage_space = 10% #保留的存储空间
log_level=info #日志等级
run_by_group= #选择用户组,空代表当前用户组
run_by_user= #选择用户,空代表当前用户
allow_hosts=* #允许访问的IP,*代表全部
sync_log_buff_interval = 10 #同步日志buff到磁盘的间隔时间
check_active_interval = 120 #检查storage状态间隔时间
thread_stack_size = 64KB #线程的堆栈大小,必须大于等于64KB
storage_ip_changed_auto_adjust = true #storageIP改变是自动调整
storage_sync_file_max_delay = 86400 #同步文件的最大延迟
storage_sync_file_max_time = 300 #同步文件的最大时间
use_trunk_file = false #是否使用中继文件存储小文件
slot_min_size = 256 #存储文件的最小单位,必须大于等于4KB
slot_max_size = 16MB #存储文件的最大单位,必须大于slot_min_size
trunk_file_size = 64MB #中继文件的大小,必须大于等于4MB
trunk_create_file_advance = false #是否允许创建中继文件超前
trunk_create_file_time_base = 02:00 #创建trunk文件的时间基准
trunk_create_file_interval = 86400 #创建trunk文件的时间间隔
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.htm
配置文件详细注解参考:
启动tracker: /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf start (startstoprestart)
检测是否启动成功:netstat -lntup|grep fdfs_trackerd
设置开机启动:
echo "/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start" >> /etc/rc.d/rc.local
7、配置storage (192.168.100.106192.168.100.125)
进入/etc/fdfs文件夹,执行命令: cp storage.conf.sample storage.conf
编辑storage.conf,执行命令: vi storage.conf ,配置成如下:
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23001
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/opt/fastdfs_storage_info
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/opt/fastdfs_storage_data
subdir_count_per_path=256
tracker_server=192.168.100.106:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888
配置文件详细注解参考:
启动storage: /usr/local/bin/fdfs_storage /etc/fdfs/storage.conf start
检测是否启动成功:netstat -lntup|grep fdfs_storaged
检测启动状态:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
查看192.168.100.106:23001 是ACTIVE状态即可
设置开机自动启动:
echo "/usr/bin/fdfs_trackerd /etc/fdfs/storage.conf start" >> /etc/rc.d/rc.local
8、安装nginx
storage中安装nginx,主要是为了为提供http的访问服务,同时解决group中storage服务器的同步延迟问题。而tracker中安装nginx,主要是为了提供http访问的反向代理、负载均衡以及缓存服务
yum install -y gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel
a、在storage中安装nginx (192.168.100.106192.168.100.125)
tar -zxvf nginx1.7.8.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd /root/soft/fastdfs-nginx-module/src
编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cd nginx1.7.8
--prefix=/opt/nginx --add-module=/root/soft/fastdfs-nginx-module/src
make && make install
编辑nginx.conf文件如下:
将http.conf和mime.types拷贝到/etc/fdfs/下,如果不执行这一步,启动nginx时会报错。
cp /root/soft/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp /root/soft/fastdfs-5.05/conf/mime.conf /etc/fdfs/
将mod_fastdfs.conf这个文件拷贝到 /etc/fdfs 目录下
cp /root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
编辑mod_fastdfs.conf 文件如下:
connect_timeout=2
network_timeout=30
base_path=/opt/fastdfs_storage_info
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=192.168.100.106:22122
storage_server_port=23001
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/opt/fastdfs_storage_data
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 1
[group1]
group_name=group1
storage_server_port=23001
store_path_count=1
store_path0=/opt/fastdfs_storage_data
store_path1=/opt/fastdfs_storage_data
配置文件详细注解参考:
建立软连接:
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
启动nginx: /opt/nginx/sbin/nginx
b、在tracker中安装nginx
tar -zxvf nginx1.7.8.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd /root/soft/fastdfs-nginx-module/src
编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cd nginx1.7.8
--prefix=/opt/nginx --add-module=/root/soft/fastdfs-nginx-module/src --add-module=/root/soft/ngx_cache_purge-2.1 --with-http_ssl_module --with-pcre=/root/soft/pcre-8.40 --with-zlib=/root/soft/zlib-1.2.11
make && make install
编辑nginx.conf文件如下:
启动nginx:/opt/nginx/sbin/nginx
9、测试并上传文件
编辑client.conf 文件,编辑内容如下:
测试上传文件:
echo "this is a test file -- hello world" >> test.txt
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt #上传
生成如下url,并复制到浏览器访问
以上测试说明成功,并且两台stroage同步成功了
测试负载均衡办法:停掉192.168.100.125或者192.168.100.106的storage再进行上传测试
/usr/local/bin/fdfs_storage /etc/fdfs/storage.conf stop
10、PHP安装FasfDFS扩展模块
cd /root/soft/fastdfs-5.05/client
make && make install
cd /root/soft/fastdfs-5.05/php_client
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
cd /etc/fdfs
vi client.conf
tracker_server=192.168.100.106:22122 //根据环境填写IP地址及端口号
在php.ini配置文件中加载fastdfs
cat fastdfs_client.ini >> /usr/local/php/etc/php.ini
新增nginx配置如下:
server {
listen 8080;
server_name localhost;
access_log /data/wwwlogs/access_nginx_cms.log combined;
root /opt/nginx/html;
index index.html index.htm index.php forum.php;
location /nginx_status {
access_log off;
allow 127.0.0.1;
deny all;
}
error_page 404 /404.html;
location ~ [^/].php(/|$) {
fastcgi_pass 192.168.100.106:9000;
fastcgi_index index.php;
include /usr/local/nginx/conf/fastcgi_params;
include fastcgi.conf;
}
location (gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location (js|css)?$ {
expires 7d;
access_log off;
}
}
重启nginx和php
/opt/nginx/sbin/nginx -s reload
或者
pkill -9 nginx
/opt/nginx/sbin/nginx
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
或者
pkill -9 php
/usr/local/php/sbin/php-fpm
测试:在浏览器中输入:
如果出现类似于以下截图则表示成功
本文由星彩网app下载发布于星彩网app下载,转载请注明出处:5境况搭建布满式存款和储蓄法斯特DFS,安装和配