搭建文件服务器


本文目录:

  • 一、前言
  • 二、FastDFS介绍
  • 三、FastDFS下载安装
  • 四、配置tracker与storage
  • 五、测试
  • 六、fastdfs-nginx-module安装配置
  • 七、Storage的nginx安装配置
  • 八、Storage的其他配置
  • 九、Tracker的nginx的配置
  • 十、nginx下测试

一、前言:

本文实现了FastDFS的安装,测试

系统环境:ubantu16.04

FastDFS版本:5.1.2

二、FastDFS介绍

FastDFS是一个由C语言实现的开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储,文件同步,文件访问(文件上传,下载)等;解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务。如相册网站,视频网站等等。

同类的分布式文件还有谷歌的GFS,HDFS(Hadoop),TFS(淘宝)

FastDFS有两个角色:Tracker(跟踪器),Storage(存储节点)

Tracker:主要做调度作用,起到负载均衡的作用;负责管理所有的Storage和Group,每一个Storage再启动后会连接Tracker,告知自己所属的Group,并保持周期心跳

Storage:存储节点,主要提供容量和备份服务;以Group为单位,每个Group内可以有多台Storage,数据互相备份。

官方提供的架构图:

https://pic4.zhimg.com/80/v2-245616fed1999f3953ccdccb025c0b1c_hd.jpg

本文架构是一台服务器:Tracker,Storage(为同一Group)

三、FastDFS的安装(每台服务器都要安装,这里只有一台)

1、下载安装libfastcommon

由于fastdfs5.0.5依赖libfastcommon,先安装libfastcommon

下载:github地址:https://github.com/happyfish100/libfastcommon    下载之后,将其压缩为gzip格式的文件

将文件上传到/home/suer/software/ 目录下

解压libfastcommon,命令:tar -zxvf libfastcommon-master.tar.gz 

编译,进入libfastcommon-master目录,命令:cd libfastcommon

sudo  ./make.sh

https://pic4.zhimg.com/80/v2-17e4a76892b1caa7fd61c791e12f7f98_hd.jpg

安装,命令:sudo ./make.sh install

https://pic3.zhimg.com/80/v2-54568a07573f8549631d5244976295b2_hd.jpg

显示如上图,libfastcommon 安装成功

2、下载安装FastDFS

下载,网址: https://github.com/happyfish100/fastdfs

解压FastDFS,命令:

tar -zxvf fastdfs-master.tar.gz

编译,进入fastfds-master目录,命令:

cd fastdfs-master
./make.sh

https://pic3.zhimg.com/80/v2-e78def57794b5f1d23188273b59e5236_hd.jpg

安装,命令:

./make.sh install

https://pic4.zhimg.com/80/v2-e3419ab9132a74a5279d81f133eb77ec_hd.jpg

显示如上图,FastDFS安装成功

四、配置Tracker与Storage

FastDFS安装成功后,会在/etc目录下会有个fdfs目录,进入fdfs,会发现三个.sample后缀的示例文件。

1、配置Tracker服务器(本文使用192.168.64.141)

在/etc/fdfs目录下,修改tracker.conf,命令:

 cp tracker.conf.sample tracker.conf
   vim tracker.conf

https://pic1.zhimg.com/80/v2-df4e10f15ebc7799d24545b8f8805d47_hd.jpg

打开tracker.conf,修改如下处:

# the base path to store data and log files
base_path=/data/fastdfs/tracker

当然前提是,首先要创建/data/fastdfs/tracker目录,命令:

mkdir -p /data/fastdfs/tracker

修改保存, 启动tracker服务,命令:

fdfs_trackerd /etc/fdfs/tracker.conf start

类似的命令,关闭tracker服务:

fdfs_trackerd /etc/fdfs/tracker.conf stop

启动tracker服务后,查看监听,命令:

netstat -unltp|grep fdfs

https://pic4.zhimg.com/80/v2-9af7021b7e963b01e9f06c0609c67830_hd.jpg

tracker默认端口22122

查看/data/fastdfs/tracker目录文件,发现多出两个文件,用来存放数据和日志的

https://pic1.zhimg.com/80/v2-8ae702cc16d116526cc1f681b4af0924_hd.jpg

至此tracker跟踪器安装成功。

2、配置Storage服务器(192.168.64.141)

两台服务器,同样进入/etc/fdfs目录下,命令:

cp storage.conf.sample storage.conf
vim storage.conf

https://pic3.zhimg.com/80/v2-52f1fc6f1015569ee4ff3ef35cb705fa_hd.jpg

打开storage.conf,修改如下处:

# the base path to store data and log files
base_path=/data/fastdfs/storage

# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/data/fastdfs/storage

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
#配置tracker跟踪器ip端口
tracker_server=192.168.64.141:22122

当然前提是,首先要创建/data/fastdfs/storage目录,命令:

mkdir -p /data/fastdfs/storage

修改保存后,启动storage服务,命令:可能会有点慢

fdfs_storaged /etc/fdfs/storage.conf start

启动有错误,可以通过/data/fastdfs/storage/logs查看

查看/data/fastdfs/storage下文件内容,生成logs、data两个目录

https://pic4.zhimg.com/80/v2-37f8050f2893cb114343e3fc11176c4c_hd.jpg

查看下端口监听,命令:

netstat -unltp|grep fdfs

https://pic3.zhimg.com/80/v2-c4c3de86a6b403f5a23c56c46577b3cb_hd.jpg

storage默认端口23000

至此Storage存储节点安装成功。

所有存储节点都启动之后,可以在任一存储节点上使用如下命令查看集群的状态信息:

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


通过上两图可以看到,storage都为Active,配置成功

五、测试上传文件

三台服务器随便选择一台服务器,这里我选择192.168.7.44服务器

同样进入/etc/fdfs目录,编译client.conf,命令如下:

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf

https://pic2.zhimg.com/80/v2-faff255eb5846011bc87b83d182777f8_hd.jpg

修改如下:

# the base path to store log files
base_path=/data/fastdfs/client

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
#配置tracker跟踪器ip端口
tracker_server=192.168.64.141:22122

同样前提是,首先要创建/data/fastdfs/client目录,命令:

mkdir -p /data/fastdfs/client

上传/opt目录的一张图片(名为:14.jpg),命令:

fdfs_test /etc/fdfs/client.conf upload /home/suer/zhsq/20180910173729.jpg

https://pic1.zhimg.com/80/v2-c47aa205923b6d6e2c15a795b47e1544_hd.jpg

如上图,上传成功,分别进入两台storage服务器目录/var/log/fdfs/storage/data/00/00下,都可以发现,文件保存成功

https://pic2.zhimg.com/80/v2-ec7eed3905795683f55074aa7dfd823d_hd.jpg

至此,文件上传测试成功。

六、fastdfs-nginx-module安装配置

a、下载,网址: https://github.com/happyfish100/fastdfs-nginx-module

b、解压fastdfs-nginx-module-master,命令:tar -zxvf fastdfs-nginx-module-master.tar.gz

c、配置config文件,命令:

cd /opt/fastdfs/fastdfs-nginx-module/src
vim config

修改如下:不修改后面编译nginx会报错

找到下面一行包含有 local 字眼去掉

e、复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改,命令:

进入fastdfs-nginx-module/src目录下,复制mod_fastdfs.conf文件到 /etc/fdfs目录,进入/etc/fdfs目录,修改mod_fastdfs.conf配置文件

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

修改如下三处:

tracker_server=192.168.7.73:22122 # tracker服务IP和端口
url_have_group_name=true # 访问链接前缀加上组名
store_path0=/data/fastdfs/storage # 文件存储路径

修改保存。

六、fastdfs-nginx-module安装配置

如果没有nginx,就安装nginx进行下面的配置

a、Nginx安装依赖如下(gcc/pcre/zlib/openssl)插件,先要安装如下插件,命令:

apt-get install openssl libssl-dev
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
apt-get install build-essential

b、下载nginx,命令

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

https://pic4.zhimg.com/80/v2-5c2a29d78f915de7b29840cee15a93b3_hd.png

c、解压,命令:

tar -zxvf nginx-1.10.1.tar.gz

https://pic3.zhimg.com/80/v2-6230d4b4d27598c570aa1000204daa12_hd.png

d、编译配置,命令:

  • 注意最后一行,配置fastdfs-nginx模块的路径(这个路径根据自己实际情况而定)
cd nginx-1.10.1

./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/fastdfs/fastdfs-nginx-module/src

https://pic3.zhimg.com/80/v2-f4d8477f5c9794aae25cbef5ca4d238e_hd.png

e、编译安装,命令:

make && make install  

f、启动,命令:

/usr/local/nginx/sbin/nginx

https://pic3.zhimg.com/80/v2-82f858def6af8497127734095e3eb4a6_hd.png

我这里启动报错,找不到那个目录,于是手动创建,再启动

mkdir -p /var/temp/nginx/client

https://pic1.zhimg.com/80/v2-90018c888c84e97d817936557469cab4_hd.png

nginx默认端口80,查看命令:

netstat -anp|grep 80

https://pic1.zhimg.com/80/v2-4167015e759ba03ea2cb9c1b97476b88_hd.png

如上图,至此nginx安装成功

还有一种情况,就是已经安装了nginx,那么我们应该先去查看nginx的版本,命令是:nginx -V

1536889825249-332.png

如果是apt-get直接安装的,就没有相应的源码包,可以去nginx官网下载相应的版本

完了之后解压,可以重新编译,命令是:

 sudo ./configure --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=/home/suer/software/fastdfs-nginx-module-master/src

注意加粗的地方,这个是加入新的fastdfs-nginx-module-master进行编译。执行这个命令之后,可能会报错

1536890235408-372.png

此时,应该更新一下安装包,命令是:sudo apt-get update

然后执行命令 sudo agt-get install gcc,sudo apt-get install libpcre3 libpcre3-dev,安装这些需要的包

再一次执行 sudo ./configure这个命令,看是否没有问题

我有报错是

1536890632268-725.png

于是,sudo apt-get install libxml2 libxml2-dev libxslt-dev,sudo apt-get install  libgd2-xpm-dev,sudo apt-get install libgeoip-dev

安装了一大批软件包,终于编译没有问题了sudo make,单数后面还是不能make成功

只能卸载原来的nginx

./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=/home/suer/software/fastdfs-nginx-module-master/src

sudo make&&sudo make install

使用sudo /usr/local/nginx/sbin/nginx -t,看是否nginx启动成功。

https://pic3.zhimg.com/80/v2-82f858def6af8497127734095e3eb4a6_hd.png

我这里启动报错,找不到那个目录,于是手动创建,再启动

mkdir -p /var/temp/nginx/client

https://pic1.zhimg.com/80/v2-90018c888c84e97d817936557469cab4_hd.png

nginx默认端口80,查看命令:

netstat -anp|grep 80

https://pic1.zhimg.com/80/v2-4167015e759ba03ea2cb9c1b97476b88_hd.png

如上图,至此nginx安装成功

配置软链接

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

现在就可以不用路径直接输入nginx启动。

八、Storage的其他配置

复制 FastDFS 的部分配置文件到/etc/fdfs 目录,命令:
cd /opt/fastdfs/fastdfs-5.05/conf
cp http.conf mime.types /etc/fdfs

https://pic2.zhimg.com/80/v2-1aff32d8f7124ce04690353dde2f8841_hd.png

配置nginx.conf文件,命令:

vim /usr/local/nginx/conf/nginx.conf

修改端口与/etc/fdfs/storage.conf 中的http.server_port=8888 相对应

在配置文件中加入如下内容:

location /group1/M00 {
     root /data/fastdfs/storage/;
     ngx_fastdfs_module;
}

https://pic3.zhimg.com/80/v2-cf8046f8f8d4d5a6cef7662107e343ba_hd.png

注意事项:
8888 端口值是要与/etc/fdfs/storage.conf 中的http.server_port=8888 相对应,因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。

Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx,对应的 Nginx 配置为:

location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

如查下载时如发现老报 404, 将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。

保存,重启nginx服务

/usr/local/nginx/sbin/nginx -s reload

九、跟踪Tracker(192.168.64.141)服务器配置Ngnix

配置Nginx,设置tracker负载均衡

vim /usr/local/nginx/conf/nginx.conf

设置group负载均衡,设置nginx端口为8000

vim /usr/local/nginx/conf/nginx.conf

设置group负载均衡,设置nginx端口为8000

https://pic3.zhimg.com/80/v2-c21c17790b24f05944d66248f0327076_hd.png

#设置 group1 的服务器
    upstream fdfs_group1 {
         server 192.168.7.149:8888 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.7.44:8888 weight=1 max_fails=2 fail_timeout=30s;
    }

    server {
        listen       8000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #设置 group 的负载均衡参数
        location /group1/M00 {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass http://fdfs_group1;
            expires 30d;
        }

g、启动nginx服务,查看启动

/usr/local/nginx/sbin/nginx
netstat -anp|grep 8000

https://pic4.zhimg.com/80/v2-8064b2a09354f8cebf3cb363017fe883_hd.png

https://pic1.zhimg.com/80/v2-a40621cc658365e88f37b4be7c55ae48_hd.jpg

测试

通过浏览器访问

测试上传后返回的文件ID为 fdfs_test /etc/fdfs/client.conf upload /home/suer/zhsq/20180910173729.jpg

用浏览通过Storage直接访问:http://192.168.64.141/group1/M00/00/00/wKhAjVubY5OAQ9bvAACQ5k9ZMcA905.jpg


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM