linux搭建FastDFS文件服务器
本文主要介绍在linux服务器如何搭建FastDFS文件服务器。
首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统,用C语言编写。适应与中小企业,对文件不分块。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。主要有Tracker(管理) 和Storage (储存)。
返回路径= 组名 /虚拟盘符{M00/00/02} /文件名
1.软件包
下面是安装FastDFS
的安装包,也可以下载到:FastDFS,密码为:ideg
软件包 | 版本 |
---|---|
FastDFS | v5.05 |
libfastcommon | v1.0.7 |
fastdfs-nginx-module | v1.16 |
nginx | v1.12.1 |
2.安装gcc
检查系统是否有安装GCC
gcc –version
安装GCC
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake
yum -y install wget httpd-tools vim
就把gcc当成c语言编译器, g++当成c++语言编译器用就是了.(知乎)
3.安装libfastcommon
进入libfastcommon压缩包目录解压,编译,安装
tar -zxvf libfastcommonV1.0.7.tar.gz
进入解压的libfastcommon-1.0.7目录,编译
./make.sh
安装
./make.sh install
最后,libfastcommon.so文件到usr/lib下 ,请按照自己的实际文件路径修改被复制路径
cp /data/fastDFS/software/libfastcommon-1.0.7/src/libfastcommon.so /usr/lib
4.安装FastDFS
解压FastDFS_v5.05.tar.gz
,然后编译安装FastDFS
tar -zxvf FastDFS_v5.05.tar.gz
./make.sh
./make.sh install
安装成功后将目录conf
内的文件拷贝到/etc/fdfs
目录下:
cp /data/fastDFS/software/FastDFS/conf/* /etc/fdfs/
5.安装tracker
进入/etc/fdfs
目录,修改tracker.conf
文件。如果不存在,就拷贝tracker.conf.sample
文件为tracker.conf
,然后再修改:
base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/fastdfs (注解:日志文件) http.server_port=8080 >>> http.server_port=80 (注解:端口,80是方便默认,这里没有改)
store_group=group1 (注解:组名)
其中,/home/
logs
/fastdfs
目录如果不存在,就创建一个。
之后,就启动tracker
,并查看是启动成功(出现如下提示,表示启动成功):restart重启
fdfs_trackerd /etc/fdfs/tracker.conf start
netstat -unltp | grep tracker
6.安装storage
由于storage和tracker运行的都是fastDFS程序,每一台服务器都部署一台fasfDFS,一台服务器是tracker,一台是storage。
修改storage.conf
文件。如果不存在,就拷贝storage.conf.sample
文件为storage.conf
,然后再修改:
base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/storage (日志路径)
store_path0=/home/yuqing/fastdfs >>> store_path0=/home/data/storage (实际储存文件路径,可以配置多个)
tracker_server=192.168.209.121:22122 >>> tracker_server=192.168.2.231:22122 (连接tracker服务器地址)
group_name=group1 (必须和tracker的组名相同
)
其中,如果/home/logs/storage,
/home/data/storage
不存在,就创建该目录
然后,就启动storage
,并查看是否成功(出现如下提示,表示启动成功):
fdfs_storaged /etc/fdfs/storage.conf start
netstat -unltp | grep storage
最后,查看tracker
和storage
是不是在通信:
fdfs_monitor /etc/fdfs/storage.conf
如下提示,出现ACTIVE
,表示二者均正常启动,至此就可以进行上传文件测试了。
7.测试图片上传
Tracker和storage都已经安装完成,使用命令测试文件上传:
FastDFS提供一个文件上传命令:usr/bin/fdfs_test 测试文件上传。测试上传需要连接tracker服务器,连接storage服务器。因此需要指定一个配置文件:client.conf配置文件,通过Client.conf连接tracker服务器。
修改/etc/fdfs下client.conf
base_path=/home/logs/client (日志目录)
tracker_server=192.168.2.231
:22122 (tracker端口)
测试命令
/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg
如下图返回地址则成功
8.安装fastdfs-nginx-module
首先解压fastdfs-nginx-module_v1.16.tar.gz
,修改/fastdfs-nginx-module/src/config文件。去掉红色部分的local
拷贝mod_fastdfs.conf到etc/fdfs
cp /data/fastDFS/software/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改etc/fdfs下mod_fastdfs.conf
base_path=/home/data/business(此处必须是存储路径,这里对应store的path0 )
tracker_server=192.168.2.231:22122
(连接tracker地址)
group_name=group1 (和前面配置组名保持一致 )
store_path0=/home/fastdfs/storage_path (store路径)
url_have_group_name = true (允许使用组名 )
7.整合fastdfs-nginx-module 和 Nginx
首先到/usr/local/src/fastdfs-nginx-module-master/src/
目录下,拷贝mod_fastdfs.conf
文件到/etc/fdfs
目录下,然后进行如下配置:
base_path=/home/kelvin/data/fastdfs tracker_server=192.168.2.231:22122 url_have_group_name = true store_path0=/home/kelvin/data/fastdfs/storage
然后配置Nginx
,添加如下内容:
server {
listen 80; server_name localhost; ... # 配置fastdfs的访问路径 location /group1/M00 { ngx_fastdfs_module; } ... }
之后启动nginx
:
$ sudo /usr/local/nginx/sbin/nginx ngx_http_fastdfs_set pid=23238
上传测试
在进行测试之前,我们还需要先配置一下client.conf
文件,该文件在/etc/fdfs
目录下,配置如下:
$ sudo vi /etc/fdfs/cli
...
base_path=/home/kelvin/data/fastdfs
tracker_server=192.168.2.231:22122
...
然后,创建一个test.txt
文件,随便输入一些内容,再进行上传:
$ echo HelloWorld > ~/test.txt
$ fdfs_test /etc/fdfs/client.conf upload ~/test.txt ... [2017-09-23 20:12:00] DEBUG - base_path=/home/kelvin/data/fastdfs, 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 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.2.231, port=23000 group_name=group1, ip_addr=192.168.2.231, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt source ip address: 192.168.2.231 file timestamp=2017-09-23 20:12:00 file size=11 file crc32=2458625787 example file url: http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt ...
最后,在浏览器里输入http://192.168.2.231/group1/M00/00/00/wKgC51nHIoCACtpSAAAAC5KLpvs082.txt
,即可访问到test.txt的文件内容:
