搭建自己的文件服务器FastDFS

平时应用的文件存储一般都是需要自己的文件服务器来保存,当然你也可以买阿里云的文件存储,但是我们为了节省成本,并且能更好的控制我们的文件存储管理,所以我们选择了自己搭建文件服务器器,并选择了FastDFS作为搭建工具。

1,安装依赖包
zlib-1.2.11.tar
libfastcommon 

下载并安装libfastcommon

tar -zxvf V1.0.7.tar.gz
[root@ecs-dev-001 libfastcommon-1.0.7]# ./make.sh  && ./make.sh install

下载并安装Zlib

[root@ecs-dev-001 zlib-1.2.11]# ./configure 
[root@ecs-dev-001 zlib-1.2.11]# make && make install

下载FastDFS并安装

[root@ecs-dev-001 soft]# tar zxvf V5.05.tar.gz 
[root@ecs-dev-001 soft]# cd fastdfs-5.05/
[root@ecs-dev-001 fastdfs-5.05]# ./make.sh 
[root@ecs-dev-001 fastdfs-5.05]# ./make.sh install
2, 配置 Tracker 服务

上述步骤成功后,在/etc/目录下会有一个fdfs的目录,进入它。会看到三个.sample后缀的文件,这是示例文件,我们需要把其中的tracker.conf.sample文件改为tracker.conf配置文件并修改它。看命令:

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

在这里插入图片描述
修改一下配置项

# the tracker server port
port=22122
# the base path to store data and log files
base_path=/data/fastdfs
# which group to upload file
# when store_lookup set to 1, must set store_group to the group name
store_group=app
# HTTP port on this tracker server
http.server_port=80

然后启动Tracker服务

创建软连接

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin

启动服务

启动服务:service fdfs_trackerd start
查看监听:netstat -unltp|grep fdfs
3,配置 Storage 服务

配置完Tracker服务后,我们开始配置Storage服务。直接开始配置,依然是进入/etc/fdfs的目录操作,首先进入它。会看到三个.sample后缀的文件,我们需要把其中的storage.conf.sample文件改为storage.conf配置文件并修改它。还看命令:

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

修改以下配置

# the storage server port
port=23000
# 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_server=192.168.1.126:22122

建立软连接

[root@ecs-dev-001 fdfs]# ln -s /usr/bin/fdfs_storaged /usr/local/bin

启动服务(启动服务之前,一定要先建立好目录/data/fastdfs/storage)

service fdfs_storaged start

检查是否启动成功

[root@ecs-dev-001 fdfs]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      20911/fdfs_storaged 
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      20518/fdfs_trackerd 

这就说明Tracker和Storage服务都安装完成,并且已经成功启动了。
这就完成了,还不能,我们需要安装Nginx来对外提供存储和文件下载访问服务。

4,安装 Nginx 和 fastdfs-nginx-module

下载nginx和 fastdfs-nginx-module

 nginx-1.9.9.tar.gz
 fastdfs-nginx-module_v1.16.tar.gz

解压并安装

编译nginx

./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src/ --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock  --user=nginx --group=nginx  --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

编译的时候如果报错:

In file included from ../fastdfs-nginx-module/src//ngx_http_fastdfs_module.c:6:0:
../fastdfs-nginx-module/src//common.c:21:25: fatal error: fdfs_define.h: No such file or directory
 #include "fdfs_define.h"

解决方法:

由于编译nginx时候系统会到/usr/local/include,而编译安装fastdfs-nginx-module时则默认保存在了/usr/include目录

[root@ecs-dev-001 soft]# cd fastdfs-nginx-module/src/
[root@ecs-dev-001 src]# ll
total 76
-rw-rw-r-- 1 500 500 33207 Aug 30  2013 common.c
-rw-rw-r-- 1 500 500  3479 Jan  3  2012 common.h
-rw-rw-r-- 1 500 500   447 Nov  4  2010 config
-rw-rw-r-- 1 500 500  3679 Mar 30  2013 mod_fastdfs.conf
-rw-rw-r-- 1 500 500 28542 May  4  2014 ngx_http_fastdfs_module.c
[root@ecs-dev-001 src]# vi config 
ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

编译完成后,安装

[root@ecs-dev-001 nginx-1.9.9]# make && make install 
5,配置 fastdfs-nginx-module 和 nginx

复制fastdfs-nginx-module目录下的mod-fastdfs.conf,并拷贝到/etc/fdfs文件目录下

[root@ecs-dev-001 nginx-1.9.9]# cd ../fastdfs-nginx-module/src/
[root@ecs-dev-001 src]# ll
total 76
-rw-rw-r-- 1 500 500 33207 Aug 30  2013 common.c
-rw-rw-r-- 1 500 500  3479 Jan  3  2012 common.h
-rw-rw-r-- 1 500 500   429 Dec 24 19:02 config
-rw-rw-r-- 1 500 500  3679 Mar 30  2013 mod_fastdfs.conf
-rw-rw-r-- 1 500 500 28542 May  4  2014 ngx_http_fastdfs_module.c
[root@ecs-dev-001 src]# cp mod_fastdfs.conf /etc/fdfs/

然后修改mod-fastdfs.conf配置文件(其他配置不建议修改)

# the base path to store log files
base_path=/data/fastdfs/storage
# FastDFS tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.1.126:22122
# if the url / uri including the group name
# set to false when uri like /M00/00/00/xxx
# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as storage.conf
store_path0=/data/fastdfs/storage

接着把fastdfs-5.05下面的配置中还没有存在/etc/fdfs中的拷贝进去

[root@ecs-dev-001 fastdfs-5.05]# cd conf/
[root@ecs-dev-001 conf]# ll
-rw-rw-r-- 1 root root 23981 Nov 22  2014 anti-steal.jpg
-rw-rw-r-- 1 root root  1461 Nov 22  2014 client.conf
-rw-rw-r-- 1 root root   858 Nov 22  2014 http.conf
-rw-rw-r-- 1 root root 31172 Nov 22  2014 mime.types
-rw-rw-r-- 1 root root  7829 Nov 22  2014 storage.conf
-rw-rw-r-- 1 root root   105 Nov 22  2014 storage_ids.conf
-rw-rw-r-- 1 root root  7102 Nov 22  2014 tracker.conf
[root@ecs-dev-001 conf]# cp anti-steal.jpg  http.conf mime.types /etc/fdfs/

至此nginx和fastdfs已经搭建完成,下面开始配置nginx

WEB站点转发规则配置
location / {
    proxy_pass  http://192.168.0.11:28085/;  #首先pass到应用服务器
    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}

Nginx文件处理规则

location /app/M00 {
    charset utf-8;
    internal;	(表示这个只做Nginx内部处理)
    expires -1s;
    ngx_fastdfs_module;
    #proxy_pass http://192.168.0.11:38088;
}

具体详细架构可以参考我的另一篇博客:https://blog.csdn.net/u012397222/article/details/84944613

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastDFS 是一个开源高性能分布式文件系统,它主要解决了海量数据存储和负载均衡的问题,适合用于图片、音频、视频等文件的存储和访问。下面是在 Linux 系统上搭建 FastDFS 文件服务器的步骤: 1. 安装依赖库: ``` yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel wget ``` 2. 下载 FastDFS 源码: ``` wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz ``` 3. 解压源码并编译安装: ``` tar zxvf V6.06.tar.gz cd fastdfs-6.06/ ./make.sh ./make.sh install ``` 4. 配置 Tracker 服务器: 在 Tracker 服务器上创建一个 tracker.conf 配置文件,并添加以下内容: ``` # 配置 Tracker 服务器的 IP 和端口号 port=22122 bind_addr=192.168.0.1 # 配置存储服务器的组名和存储服务器的 IP 和端口号 group_name=group1 group_count=1 group0_ip=192.168.0.2 group0_port=23000 # 配置日志文件的路径和级别 log_level=info log_filename=/var/log/fdfs/trackerd.log ``` 5. 启动 Tracker 服务器: ``` /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart ``` 6. 配置 Storage 服务器: 在 Storage 服务器上创建一个 storage.conf 配置文件,并添加以下内容: ``` # 配置 Tracker 服务器的 IP 和端口号 tracker_server=192.168.0.1:22122 # 配置存储服务器的 IP 和端口号 port=23000 bind_addr=192.168.0.2 # 配置存储服务器的组名和容量 group_name=group1 store_path_count=1 store_path0=/data/fastdfs/storage # 配置心跳时间和同步文件的时间 heart_beat_interval=30 sync_wait_msec=600 # 配置日志文件的路径和级别 log_level=info log_filename=/var/log/fdfs/storaged.log ``` 7. 启动 Storage 服务器: ``` /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart ``` 8. 测试上传和下载文件: 在客户端机器上安装 FastDFS 客户端工具: ``` yum install -y libfastcommon wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz tar zxvf V6.06.tar.gz cd fastdfs-6.06/ ./make.sh ./make.sh install ``` 上传文件: ``` /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /path/to/local/file ``` 下载文件: ``` /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1 M00/00/00/xxx /path/to/local/file ``` 以上就是在 Linux 系统上搭建 FastDFS 文件服务器的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值