FastDFS安装部署

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值