FastDFS安装部署

tech2025-01-14  5

文章目录

FastDFS安装部署1.1 安装libfastcommon1.2安装FastDFS1.3安装tracker1.3.1创建tracker工作目录1.3.2配置tracker1.3.3启动tracker最后我们需要给tracker加入开机启动 1.4 安装storage1.4.1 为storage配置工作目录1.4.2 修改storage配置文件1.4.3 启动storage1.4.4 校验整合 1.5 测试文件上传1.5.1 配置客户端1.5.2 模拟上传 1.6 FastDFS的nginx模块安装1.6.1安装nginx准备1.6.2 安装nginx并添加fastdfs-nginx-module1.6.3 配置storage nginx1.6.4 配置tracker nginx1.6.5 HTTP测试

FastDFS安装部署

1.1 安装libfastcommon

由于我的centOS7是最小化安装,我里面没有安装zip解压。 先安装 :

yum -y install unzip zip

用yum安装gcc:

yum -y install gcc-c++

安装成功后解压libfastcommon-master.zip

unzip libfastcommon-master.zip

进入我们刚刚解压的目录:

cd libfastcommon-master

编译libfastcommon

./make.sh

安装编译好的库

./make.sh install

libfastcommon默认会被安装到/usr/lib64/libfastcommon.so,但是FastDFS的主程序却在/usr/local/lib目录下 这个时候我们就要建立一个软链接了,实际上也相当于windows上的快捷方式。

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

1.2安装FastDFS

解压FastDFS安装包

unzip fastdfs-5.11.zip

进到刚解压的目录

cd fastdfs-5.11

安装perl类库

yum install perl -y

编译FastDFs

./make.sh

安装编译好的类库

./make.sh install

如果没有报错那么就成功了。安装log中会提示FastDFS安装到了/etc/fdfs目录下。

成功后查看安装目录:

cd /etc/fdfs/

我们需要把这三个示例文件复制一份,去掉.sample

cp client.conf.sample client.conf cp storage.conf.sample storage.conf cp tracker.conf.sample tracker.conf

FastDFS安装结束。

1.3安装tracker

1.3.1创建tracker工作目录

这个目录可以自定义,用来保存tracker的data和log 根据个人习惯,我创建了下面的目录:

mkdir -p /usr/local/fdfs/tracker

1.3.2配置tracker

cd /etc/fdfs vi tracker.conf

打开后重点关注下面4个配置: 1.disabled=false #默认开启 2.port=22122 #默认端口号 3.base_path=/usr/local/fdfs/tracker #我刚刚创建的目录 4.http.server_port=6666 #默认端口是8080

1.3.3启动tracker

保存配置后启动tracker,命令如下:

service fdfs_trackerd start

如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_trackerd

成功后应该可以看到:

[root@localhost fdfs]# service fdfs_trackerd start Starting fdfs_trackerd (via systemctl): [ OK ]

进行刚刚创建的tracker目录,发现目录中多了data和log两个目录

最后我们需要给tracker加入开机启动

1、查看开启启动文件权限:

ll /etc/rc.d/rc.local -rw-r--r-- 1 root root 501 Jun 16 21:34 /etc/rc.d/rc.local

发现并没有执行权限,需要加一下:

chmod +x /etc/rc.d/rc.local

修改rc.local

vi /etc/rc.d/rc.local

在最后增加:

service fdfs_trackerd start

查看一下tracker的端口监听情况(需要先安装net-tools网络工具包:yum install net-tools -y)

netstat -antp|grep fdfs tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2231/fdfs_trackerd

端口22122成功监听。

1.4 安装storage

storage的安装与tracker很类似。

1.4.1 为storage配置工作目录

与tracker不现的是,由于storage还需要一个目录用来存储数据,所以我另外多建了一个storage_data

mkdir -p /usr/local/fdfs/storage mkdir -p /usr/local/fdfs/storage_data

下面是我的目录结构: 主目录: /usr/local/fdfs/storage 存储数据目录: /usr/local/fdfs/storage_data

1.4.2 修改storage配置文件

修改storage.conf

vi /etc/fdfs/storage.conf

1.disabled=false 2.group_name=group1 #组名,根据实际情况修改 3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 4.base_path=/usr/local/fdfs/storage #设置storage数据文件和日志目录 5.store_path_count=1 #存储路径个数,需要和store_path个数匹配 6.store_path0=/usr/local/fdfs/storage_data #实际文件存储路径 7.tracker_server=192.168.188.138:22122 #我CentOS7的ip地址 8.http.server_port=8888 #设置 http 端口号

修改保存后创建软引用

ln -s /usr/bin/fdfs_storaged /usr/local/bin/

1.4.3 启动storage

service fdfs_storaged start

如果不能启动,或提示用systemctl可改用命令:

systemctl start fdfs_storaged

成功后应该可以看到:

Starting fdfs_storaged (via systemctl): [ OK ]

同样的,设置开机启动: 修改rc.local

vi /etc/rc.d/rc.local

在最后增加:

service fdfs_storaged start

查看一下服务是否启动

netstat -antp|grep fdfs tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2323/fdfs_storaged

服务已正常启动。

1.4.4 校验整合

到这里,fastdfs的东西都已安装完成,最后我们还要确定一下,storage是否注册到了tracker中去。 查看命令:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

成功后可以看到:

[2018-06-05 19:56:26] DEBUG - base_path=/usr/local/fdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 server_count=1, server_index=0 tracker server is 192.168.188.138:22122 group count: 1 Group 1: group name = group1 disk total space = 17394 MB disk free space = 13880 MB trunk free space = 0 MB storage server count = 1 active server count = 1 storage server port = 23000 storage HTTP port = 8888 store path count = 1 subdir count per path = 256 current write server index = 0 current trunk file id = 0 Storage 1: id = 192.168.188.138 ip_addr = 192.168.188.138 (bogon) ACTIVE http domain = version = 5.11 join time = 2018-06-03 18:34:42 up time = 2018-06-05 19:31:05 total storage = 17394 MB free storage = 13880 MB upload priority = 10 store_path_count = 1 subdir_count_per_path = 256 storage_port = 23000 storage_http_port = 8888 current_write_path = 0 source storage id = if_trunk_server = 0 connection.alloc_count = 256 connection.current_count = 0 connection.max_count = 0 total_upload_count = 5 success_upload_count = 5 total_append_count = 0 success_append_count = 0 total_modify_count = 0 success_modify_count = 0 total_truncate_count = 0 success_truncate_count = 0 total_set_meta_count = 0 success_set_meta_count = 0 total_delete_count = 0 success_delete_count = 0 total_download_count = 0 success_download_count = 0 total_get_meta_count = 0 success_get_meta_count = 0 total_create_link_count = 0 success_create_link_count = 0 total_delete_link_count = 0 success_delete_link_count = 0 total_upload_bytes = 492292 success_upload_bytes = 492292 total_append_bytes = 0 success_append_bytes = 0 total_modify_bytes = 0 success_modify_bytes = 0 stotal_download_bytes = 0 success_download_bytes = 0 total_sync_in_bytes = 0 success_sync_in_bytes = 0 total_sync_out_bytes = 0 success_sync_out_bytes = 0 total_file_open_count = 5 success_file_open_count = 5 total_file_read_count = 0 success_file_read_count = 0 total_file_write_count = 5 success_file_write_count = 5 last_heart_beat_time = 2018-06-05 19:56:07 last_source_update = 2018-06-03 22:36:03 last_sync_update = 1970-01-01 08:00:00 last_synced_timestamp = 1970-01-01 08:00:00

1.5 测试文件上传

1.5.1 配置客户端

需要修改客户端的配置文件:

vi /etc/fdfs/client.conf base_path=/usr/local/fdfs/tracker #tracker服务器文件路径 tracker_server=192.168.188.146:22122 #tracker服务器IP地址和端口号 http.tracker_server_port=6666 # tracker 服务器的http端口号,必须和tracker的设置对应起来

1.5.2 模拟上传

通过ssh客户端上传一张本地图片到root目录

确定图片位置后,我们输入上传图片命令把图片上传到FastDFS服务器: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/1.jpg #这后面放的是图片的位置

成功后会返回图片的路径:group1/M00/00/00/wKi8ilsWfg2AI2fRAADg3sO_IT8991.jpg 组名:group1 磁盘:M00 目录:00/00 文件名称:wKi8ilsWfg2AI2fRAADg3sO_IT8991.jpg

我们上传的图片会被上传到我们创建的storage_data目录下,让我们去看看:

cd /usr/local/fdfs/storage_data/data ls 00 0A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0 AA B4 BE C8 D2 DC E6 F0 FA 01 0B 15 1F 29 33 3D 47 51 5B 65 6F 79 83 8D 97 A1 AB B5 BF C9 D3 DD E7 F1 FB 02 0C 16 20 2A 34 3E 48 52 5C 66 70 7A 84 8E 98 A2 AC B6 C0 CA D4 DE E8 F2 FC 03 0D 17 21 2B 35 3F 49 53 5D 67 71 7B 85 8F 99 A3 AD B7 C1 CB D5 DF E9 F3 FD 04 0E 18 22 2C 36 40 4A 54 5E 68 72 7C 86 90 9A A4 AE B8 C2 CC D6 E0 EA F4 FE 05 0F 19 23 2D 37 41 4B 55 5F 69 73 7D 87 91 9B A5 AF B9 C3 CD D7 E1 EB F5 FF 06 10 1A 24 2E 38 42 4C 56 60 6A 74 7E 88 92 9C A6 B0 BA C4 CE D8 E2 EC F6 07 11 1B 25 2F 39 43 4D 57 61 6B 75 7F 89 93 9D A7 B1 BB C5 CF D9 E3 ED F7 08 12 1C 26 30 3A 44 4E 58 62 6C 76 80 8A 94 9E A8 B2 BC C6 D0 DA E4 EE F8 09 13 1D 27 31 3B 45 4F 59 63 6D 77 81 8B 95 9F A9 B3 BD C7 D1 DB E5 EF F9 cd 00/00 ll

果然通过刚刚返回的路径,我们成功找到了图片。

我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

1.6 FastDFS的nginx模块安装

1.6.1安装nginx准备

在安装nginx之前要安装nginx所需的依赖lib:

yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel

1.6.2 安装nginx并添加fastdfs-nginx-module

解压nginx,和fastdfs-nginx-module:

tar -zxvf nginx-1.12.0.tar.gz unzip fastdfs-nginx-module-master.zip

解压后进入nginx目录编译安装nginx,并添加fastdfs-nginx-module:

cd /root/nginx-1.12.0 ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module-master/src

#第一个目录是nginx安装目录,第二个目录是fastdfs-nginx-module源码目录

如果配置不报错的话, 开始编译:

make

编译安装:

make install

nginx的默认目录是/usr/local/nginx,安装成功后查看:

cd /usr/local/nginx ll drwx------. 2 nobody root 6 Jun 3 19:53 client_body_temp drwxr-xr-x. 2 root root 4096 Jun 3 20:36 conf drwx------. 2 nobody root 6 Jun 3 19:53 fastcgi_temp drwxr-xr-x. 2 root root 40 Jun 3 19:36 html drwxr-xr-x. 2 root root 58 Jun 5 19:31 logs drwx------. 2 nobody root 6 Jun 3 19:53 proxy_temp drwxr-xr-x. 2 root root 19 Jun 3 19:36 sbin drwx------. 2 nobody root 6 Jun 3 19:53 scgi_temp drwx------. 2 nobody root 6 Jun 3 19:53 uwsgi_temp

1.6.3 配置storage nginx

修改nginx.conf:

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

修改监听端口 listen 9999, 新增location

server { listen 9999; server_name localhost; location / { root html; index index.html index.htm; } location ~/group1/M00 { root /usr/local/fdfs/storage_data/data; ngx_fastdfs_module; } location = /50x.html { root html; } }

然后进入FastDFS安装时的解压过的目录,将http.conf和mime.types拷贝到/etc/fdfs目录下:

cd /root/fastdfs-5.11/conf cp http.conf /etc/fdfs/ cp mime.types /etc/fdfs/

另外还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:

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

对刚刚拷贝的mod_fastdfs.conf文件进行修改:

vi /etc/fdfs/mod_fastdfs.conf

base_path=/usr/local/fdfs/storage #保存日志目录 tracker_server=192.168.188.146:22122 #tracker服务器的IP地址以及端口号 storage_server_port=23000 #storage服务器的端口号 url_have_group_name = true #文件 url 中是否有 group 名 store_path0=/usr/local/fdfs/storage_data #存储路径 group_count = 1 #设置组的个数,事实上这次只使用了group1

在文件的最后,设置group

[group1] group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/usr/local/fdfs/storage_data

…多组的继续设置group2、group3

创建M00至storage存储目录的符号连接:

ln -s /usr/local/fdfs/storage_data/data/ /usr/local/fdfs/storage_data/data/M00

启动nginx:

/usr/local/nginx/sbin/nginx

成功启动:ngx_http_fastdfs_set pid=8142

设置开机自动启动nginx:

修改rc.local vi /etc/rc.d/rc.local 在最后增加:/usr/local/nginx/sbin/nginx

浏览器访问http://192.168.188.138:9999

storage的nginx已配置成功。接下来,我们还要继续配置tracker的nginx。

1.6.4 配置tracker nginx

再解压一个nginx: 我在我自己的工作下再建了一个nginx2,把原来的nginx-1.12.0.tar.gz又解压了一份到里面

cd ~ mkdir nginx2 tar -xvf nginx-1.12.0.tar.gz -C /root/nginx2

进入到nginx2目录,设置编译配置

cd /root/nginx2/nginx-1.12.0 ./configure --prefix=/usr/local/nginx2 --add-module=/root/fastdfs-nginx-module-master/src

如果配置不报错的话, 开始编译:

make

编译安装:

make install

nginx的安装目录是/usr/local/nginx2

接下来,一样的还是修改nginx.conf,端口号可以不改,用80的。需将upstream指向tracker的nginx地址。

vi /usr/local/nginx2/conf/nginx.conf upstream fdfs_group1 { server 127.0.0.1:9999; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /group1/M00 { proxy_pass http://fdfs_group1; } #location / { # root html; # index index.html index.htm; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

启动nginx:

/usr/local/nginx2/sbin/nginx

设置开机自动启动nginx: 修改rc.local

vi /etc/rc.d/rc.local

在最后增加:/usr/local/nginx2/sbin/nginx

浏览器访问 http://192.168.188.138

1.6.5 HTTP测试

现在我们再去访问一下,原来我们上传过的文件:

http://192.168.188.146/group1/M00/00/00/wKi8ilsWiS2AbyWrAADg3sO_IT8536.jpg

最新回复(0)