1、安装gcc、unzip、libevent
#GCC用来对C语言代码进行编译运行,使用yum命令安装:
yum -y install gcc
#后面会用到解压命令(unzip),所以这里可以用yum把unzip 也装一下
yum install -y unzip zip
#FastDFS依赖libevent库,需要安装
yum -y install libevent
2、下载安装libfastcommon
#下载libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
#重命名
mv V1.0.43.tar.gz libfastcommon-1.0.43.tar.gz
# 解压
tar -zxvf libfastcommon-1.0.43.tar.gz
# 进入libfastcommon-1.0.43目录
cd libfastcommon-1.0.43
# 编译
./make.sh
# 安装
./make.sh install
3、下载安装FastDFS
# 下载 也可以手动下载,下载后的文件名为fastdfs-6.06.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
#修改压缩包名称
mv V6.06.tar.gz fastdfs-6.06.tar.gz
# 解压
tar -zxvf fastdfs-6.06.tar.gz
# 进入目录
cd fastdfs-6.06
# 编译
./make.sh
# 安装
./make.sh install
4、如果安装成功,会看到/etc/init.d/下看到提供的脚本文件
ll /etc/init.d/ | grep fdfs
fdfs_trackerd
是tracker启动脚本fdfs_storaged
是storage启动脚本
能够在 /etc/fdfs/ 目录下看到默认的配置文件模板:
ll /etc/fdfs/
tarcker.conf.sample
是tracker的配置文件模板storage.conf.sample
是storage的配置文件模板client.conf.sample
是客户端的配置文件模板
5、配置并启动tracker服务
FastDFS的tracker和storage在刚刚的安装过程中,都已经被安装了,因此我们安装这两种角色的方式是一样的。不同的是,两种需要不同的新建目录配置文件。
我们要启动tracker,就修改刚刚看到的tarcker.conf
,并且启动fdfs_trackerd
脚本即可。
#首先将模板文件复制
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
# 创建/wangfeng/fdfs/tracker目录,为存储日志和数据的根目录
mkdir -p /wangfeng/fdfs/tracker
# 修改复制后的配置文件,将base_path=后的目录改成/wangfeng/fdfs/tracker(自己创建)
vim /etc/fdfs/tracker.conf
# 启动服务(安装过程中,fdfs已被设为系统服务)
service fdfs_trackerd start
# 检查FastDFS Tracker Server是否启动成功
ps -ef | grep fdfs_trackerd
# 设置tracker服务开机启动:
chkconfig fdfs_trackerd on
注意:关闭防火墙:
chkconfig iptables off
启动tracker服务器: /etc/init.d/fdfs_trackerd start
停止tracker服务器: /etc/init.d/fdfs_trackerd stop
6、
storage配置
Storage server 作用是文件存储,客户端上传的文件最终存储在 Storage 服务器上,可以将storage称为存储服务器
# 复制模板文件
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
# 创建/wangfeng/fdfs/storage目录,为存储日志和数据的根目录
mkdir -p /wangfeng/fdfs/storage
# 修改复制后的配置文件,将base_path=后的目录改成/wangfeng/fdfs/storage(自己创建)
vim /etc/fdfs/storage.conf
base_path=/wangfeng/fdfs/storage # 数据和日志文件存储根目录
store_path0=/wangfeng/fdfs/storage # 第一个存储目录
tracker_server=你的IP:22122 # tracker服务器IP和端口
# 启动服务(安装过程中,fdfs已被设为系统服务)
service fdfs_storaged start
# 设置tracker服务开机启动:
chkconfig fdfs_storaged on
启动storage服务器:/etc/init.d/fdfs_storaged start
停止storage服务器:/etc/init.d/fdfs_storaged stop
7、测试文件上传
# 复制模板文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
# 创建目录
mkdir -p /wangfeng/fdfs/client
# 修改配置,bash_path以及tracker_server
vim /etc/fdfs/client.conf
base_path = /wangfeng/fdfs/client
tracker_server = 你的ip:22122
# 测试上传,123.txt可替换为你的文件
#创建123.txt文件
touch 123.txt
#上传
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 123.txt
可以看到返回一个路径 文件名是经过fastdfs
加密的
现在返回的文件路径无法直接在浏览器上访问 必须搭建nginx
8、安装nginx
#下载并安装nginx的环境
#1、 gcc 安装
# yum install gcc-c++
#2、 PCRE pcre-devel 安装
# yum install -y pcre pcre-devel
#3、 zlib 安装
# yum install -y zlib zlib-devel
#4、 OpenSSL 安装
# (也可以一起安装)yum install -y openssl openssl-devel
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
#① 下载nginx
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
#② 解压
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
#③ 使用默认配置
./configure
#④ 编译、安装
make
make install
#⑤ 启动nginx
cd /usr/local/nginx/sbin/
./nginx
#其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
#⑥ 设置开机启动
vim /etc/rc.local
#添加一行:
#/usr/local/nginx/sbin/nginx
# 设置执行权限
chmod 755 rc.local
#⑦ 查看nginx的版本及模块
/usr/local/nginx/sbin/nginx -V
9、配置nginx
#简单的测试访问文件
#① 修改nginx.conf
vim /usr/local/nginx/conf/nginx.conf
添加如下行,将 /group1/M00 映射到 /wangfeng/fdfs/storage/data
location /group1/M00 {
alias /wangfeng/fdfs/storage/data;
}
# 重启nginx
# /usr/local/nginx/sbin/nginx -s reload
在浏览器访问之前上传的图片、成功。
http://xxx.xxx.xxx.xxx/group1/M00/00/00/wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg
10、FastDFS 配置 Nginx 模块
fastdfs-nginx-module 模块说明
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.51.128,上传成功后文件 ID已经返回给客户端。
此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.51.129,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.51.129 上取文件,就会出现文件无法访问的错误。
而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
#下载fastdfs-nginx-module
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
#解压
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
配置Nginx
在nginx中添加模块
# 先停掉nginx服务
/usr/local/nginx/sbin/nginx -s stop
#进入解压包目录
cd /nginx-1.12.1/
# 添加模块
./configure --add-module=../fastdfs-nginx-module-1.22/src
#重新编译、安装
make && make install
查看Nginx的模块
/usr/local/nginx/sbin/nginx -V
有下面这个就说明添加模块成功
复制 fastdfs-nginx-module-1.22 源码中的配置文件到/etc/fdfs 目录, 并修改
cd /fastdfs-nginx-module-1.22/src
cp mod_fastdfs.conf /etc/fdfs/
#修改配置文件
vim /etc/fdfs/mod_fastdfs.conf
修改配置文件如下
# 连接超时时间
connect_timeout=10
# Tracker Server
tracker_server=xxx.xxx.xxx.xxx:22122
# StorageServer 默认端口
storage_server_port=23000
# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name = true
# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/wangfeng/fdfs/storage
复制 FastDFS 的部分配置文件到/etc/fdfs 目录
cd /fastdfs-6.06/conf/
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
配置nginx
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。
启动nginx
/usr/local/nginx/sbin/nginx
打印处如下就算配置成功
在地址栏访问。
能下载文件就算安装成功。注意和第三点中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。
http://xxx.xxx.xxx.xxx/group1/M00/00/00/rBEMeGGOHu6APWTnAAPOErmB2k8794.jpg