安装FastDFS,有三个子模块,如下所示。
fastdfs v6.06
libfastcommon v1.0.43
fastdfs-nginx-module v 1.22
安装C/C++编译环境
sudo apt install g++
sudo apt install make
一、FastDFS的安装
1、下载安装libfastcommon
下载,命令:
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
解压libfastcommon,命令:
tar -zxvf V1.0.43.tar.gz
编译,进入libfastcommon-1.0.43目录,命令:
cd libfastcommon-1.0.43
./make.sh
安装,命令:
./make.sh install
设置软连接,命令:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
2、下载安装FastDFS
下载,命令:
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
解压FastDFS,命令:
tar -zxvf V6.06.tar.gz
编译,进入fastfds-6.06目录,命令:
cd fastdfs-6.06
./make.sh
安装,命令:
./make.sh install
显示如上图,FastDFS安装成功。
FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下。
建立 /usr/bin 到 /usr/local/bin 的软链接。
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
二、配置Tracker与Storage
FastDFS安装成功后,会在/etc目录下会有个fdfs目录,进入fdfs,会发现三个.sample后缀的示例文件。
1、配置FastDFS跟踪器(Tracker)
① 进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf。
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim tracker.conf
② 在/etc/fdfs目录下,修改tracker.conf,命令:
cp tracker.conf.sample tracker.conf
vim tracker.conf
打开tracker.conf,修改如下处:
# the base path to store data and log files
base_path=/data/fastdfs/tracker
③ 创建/data/fastdfs/tracker目录,命令:
mkdir -p /data/fastdfs/tracker
④ 防火墙中打开跟踪端口(默认的22122)
#查看防火墙状态
sudo ufw status
#添加开放SSH端口(22122)
sudo ufw allow 22122 //开放22122端口
#开启完成,需要重启防火墙生效
sudo ufw reload //重启ufw防火墙
⑤ 启动tracker服务,
初次成功启动,会在 /data/fastdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录。
命令:
fdfs_trackerd /etc/fdfs/tracker.conf start
# 可以用这种方式启动
/etc/init.d/fdfs_trackerd start
# 也可以用这种方式启动,前提是上面创建了软链接,后面都用这种方式
service fdfs_trackerd start
类似的命令,关闭tracker服务:
fdfs_trackerd /etc/fdfs/tracker.conf stop
启动tracker服务后,查看监听,
查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功。
命令:
netstat -unltp|grep fdfs
至此tracker跟踪器安装成功。
2、配置 FastDFS 存储 (Storage)
① 进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf。
命令:
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim storage.conf
② 编辑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.7.73:22122
③ 创建/data/fastdfs/storage目录,命令:
mkdir -p /data/fastdfs/storage
④ 防火墙中打开存储器端口(默认的 23000)
# 查看防火墙状态
sudo ufw status
# 添加开放SSH端口(23000)
sudo ufw allow 23000 //开放23000端口
# 开启完成,需要重启防火墙生效
sudo ufw reload //重启ufw防火墙
⑤ 启动 Storage
启动Storage前确保Tracker是启动的。初次启动成功,会在 /data/fastdfs/storage 目录下创建 data、 logs 两个目录。
fdfs_storaged /etc/fdfs/storage.conf start
# 可以用这种方式启动
/etc/init.d/fdfs_storaged start
# 也可以用这种方式,后面都用这种
service fdfs_storaged start
启动有错误,可以通过/data/fastdfs/storage/logs查看
查看/data/fastdfs/storage下文件内容,生成logs、data两个目录
查看下端口监听,命令:
netstat -unltp|grep fdfs
storage默认端口23000
至此Storage存储节点安装成功。
所有存储节点都启动之后,可以在任一存储节点上使用如下命令查看集群的状态信息:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
通过上两图可以看到,storage为Active,配置成功。
三、测试上传文件
① 同样进入/etc/fdfs目录,编译client.conf,命令如下:
cd /etc/fdfs
cp client.conf.sample client.conf
vim client.conf
修改如下:
# 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.7.73:22122
② 创建/data/fastdfs/client目录,命令:
mkdir -p /data/fastdfs/client
③ 上传测试
在linux内部执行如下命令上传 V6.06.tar.gz 文件
fdfs_test /etc/fdfs/client.conf upload /opt/14.jpg
四、安装nginx
上面将文件上传成功了,但我们无法下载。因此安装Nginx作为服务器以支持Http方式访问文件。同时,后面安装FastDFS的Nginx模块也需要Nginx环境。
Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。我这里由于是单机,TrackerServer和StorageServer在一台服务器上。
1、安装nginx所需环境
① 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
2、安装配置Nginx模块
① 下载、安装;
命令:
# 下载
wget http://nginx.org/download/nginx-1.16.1.tar.gz
# 解压
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.12.1
② 编译配置,命令:
注意最后一行,配置fastdfs-nginx模块的路径(这个路径根据自己实际情况而定)
# 注意最后一行,配置fastdfs-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/fastdfs/fastdfs-nginx-module-1.22/src
③ 编译安装,命令:
# 编译、安装
make
make install
④ 启动nginx
cd /usr/local/nginx/sbin/
./nginx
# 其它命令
./nginx -s stop
./nginx -s quit
./nginx -s reload
我这里启动报错,找不到那个目录,于是手动创建,再启动
mkdir -p /var/temp/nginx/client
nginx默认端口80,查看命令:
netstat -anp|grep 80
3、访问文件
① 修改nginx.conf
vim /usr/local/nginx/conf/nginx.conf
# 添加如下行,将 /group1/M00 映射到 /ljzsg/fastdfs/file/data
location /group1/M00 {
alias /usr/local/fastdfs/storage/data;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type;
}
# 重启nginx
/usr/local/nginx/sbin/nginx -s reload
注意事项:
8888 端口值是要与/etc/fdfs/storage.conf 中的http.server_port=8888 相对应,因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
② 在浏览器访问之前上传的图片、成功。
五、FastDFS 配置 Nginx 模块
1、 安装配置fastdfs-nginx-module模块
① fastdfs-nginx-module介绍
FastDFS 通过 Tracker 服务器,将文件放在 Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假如Tracker 服务器将文件上传到192.168.7.149,上传成功后文件ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.7.44,在文件还没有复制完成的情况下,客户端如果用这个文件 ID192.168.7.44
上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
② 下载fastdfs-nginx-module,本文下载在/home/fastdfs文件夹中,命令:
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
③ 解压,命令:
tar -zxvf V1.22.tar.gz
④ 配置nginx
在nginx中添加模块
# 先停掉nginx服务
/usr/local/nginx/sbin/nginx -s stop
# 进入解压包目录
cd /softpackages/nginx-1.12.1/
# 添加模块
./configure --add-module=../fastdfs-nginx-module-master/src
# 重新编译、安装
make && make install
查看Nginx的模块
/usr/local/nginx/sbin/nginx -V
有下面这个就说明添加模块成功
⑤ 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改,命令:
进入fastdfs-nginx-module/src目录下,复制mod_fastdfs.conf文件到 /etc/fdfs目录,进入/etc/fdfs目录,修改mod_fastdfs.conf配置文件
cd /home/fastdfs/fastdfs-nginx-module-1.22/src
cp mod_fastdfs.conf /etc/fdfs
cd /etc/fdfs
vim mod_fastdfs.conf
修改如下配置,其它默认
# 连接超时时间 connect_timeout=10 # Tracker Server tracker_server=file.ljzsg.com:22122 # StorageServer 默认端口 storage_server_port=23000 # 如果文件ID的uri中包含/group**,则要设置为true url_have_group_name = true # Storage 配置的store_path0路径,必须和storage.conf中的一致 store_path0=/ljzsg/fastdfs/file
⑥ 复制 FastDFS 的部分配置文件到/etc/fdfs 目录
cd /softpackages/fastdfs-6.06/conf/
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
⑦ 配置nginx,修改nginx.conf
vim /usr/local/nginx/conf/nginx.conf
修改配置,其它的默认
在80端口下添加fastdfs-nginx模块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:
listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80了)相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。
location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group。
⑧ 在/ljzsg/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略。
# ln -s /ljzsg/fastdfs/file/data/ /ljzsg/fastdfs/file/data/M00
⑨ 启动nginx
# /usr/local/nginx/sbin/nginx
打印处如下就算配置成功
⑩ 在地址栏访问。
能下载文件就算安装成功。注意和第三点中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。
http://172.16.111.152:8888/group1/M00/00/00/rBBvmGYMr66AKhNWAALjzIJjzck53.jpeg