安装libfastcommonnginx
首先第一步是安装libfastcommon,我这里将libfastcommon上传到的/opt目录下,直接解压:c++
yum -y install gcc-c++vim
yum -y install unzip zip浏览器
unzip libfastcommon-master.zip服务器
进入目录tcp
./make.sh工具
./make.sh install测试
至此libfastcommon就已经安装成功了,但注意一下上图中红色框标注的内容,libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,可是FastDFS主程序设置的lib目录是/usr/local/lib,因此此处须要从新设置软连接(相似于Windows的快捷方式):ui
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.sourl
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
设置完毕后就能够开始安装fastdfs了
安装FastDFS
tar -zxvf fastdfs-5.05.tar.gz
进入目录
./make.sh
./make.sh install
没错,正是安装到了/etc/fdfs中,咱们看一下该目录下的文件:
安装成功后就会生成如上的3个.sample文件,咱们再分别拷贝出3个后面用的正式的配置文件
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
以后再查看一下/etc/fdfs的文件目录
至此FastDFS已经安装完毕,接下来的工做就是依次配置Tracker和Storage了。
Tracker
在配置Tracker以前,首先须要建立Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等,我这里选择在/opt目录下建立一个fastdfs_tracker目录用于存放Tracker服务器的相关文件:
mkdir /opt/fastdfs_tracker
接下来就要从新编辑上一步准备好的/etc/fdfs目录下的tracker.conf配置文件,打开文件后依次作如下修改:
disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,一般采用22122这个默认端口
base_path=/opt/fastdfs_tracker #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080
配置完成后就能够启动Tracker服务器了,但首先依然要为启动脚本建立软引用,由于fdfs_trackerd等命令在/usr/local/bin中并无,而是在/usr/bin路径下:
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
最后经过命令启动Tracker服务器:
service fdfs_trackerd start
若是启动命令执行成功,那么同时在刚才建立的tracker文件目录/opt/fastdfs_tracker中就能够看到启动后新生成的data和logs目录,tracker服务的端口也应当被正常监听,最后再经过netstat命令查看一下端口监听状况没有 ifconfig 和netstat -an 的话安装 net-tools package
yum install net-tools
netstat -unltp|grep fdfs
确认tracker正常启动后能够将tracker设置为开机启动,打开/etc/rc.d/rc.local并在其中加入如下配置:
vim /etc/rc.d/rc.local
service fdfs_trackerd start
若是重启后发现未能自动启动则经过命令ll /etc/rc.d/rc.local检查一下rc.local是否具有可执行权限,如果无可执行权限则经过chmod +x /etc/rc.d/rc.local进行受权
chmod +x /etc/rc.d/rc.local
Tracker至此就配置好了,接下来就能够配置FastDFS的另外一核心——Storage。
Storage
同理,步骤基本与配置Tracker一致,首先是建立Storage服务器的文件目录,须要注意的是同Tracker相比我多建了一个目录,由于Storage还须要一个文件存储路径,用于存放接收的文件:
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data
接下来修改/etc/fdfs目录下的storage.conf配置文件,打开文件后依次作如下修改:
disabled=false #启用配置文件(默认启用)
group_name=group1 #组名,根据实际状况修改
port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path_count=1 #存储路径个数,须要和store_path个数匹配
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=192.168.111.11:22122 #tracker 服务器的 IP地址和端口号,若是是单机搭建,IP不要写127.0.0.1,不然启动不成功(此处的ip是个人CentOS虚拟机ip)
http.server_port=8888 #设置 http 端口号
配置完成后一样要为Storage服务器的启动脚本设置软引用:
ln -s /usr/bin/fdfs_storaged /usr/local/bin
接下来就能够启动Storage服务了:
service fdfs_storaged start
同理,若是启动成功,/opt/fastdfs_storage中就能够看到启动后新生成的data和logs目录,端口23000也应被正常监听,还有一点就是文件存储路径下会生成多级存储目录,那么接下来看看是否启动成功了
netstat -unltp|grep fdfs
能够看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有建立好的多级目录呢:
如上图,能够看到/opt/fastdfs_storage/data目录下生成好的pid文件和dat文件,那么再看一下实际文件存储路径下是否有建立好的多级目录呢:
如上图,没有任何问题,data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,而后将文件数据直接做为一个本地文件存储到该目录中。那么最后咱们再看一下storage服务的端口监听状况:
如上图,能够看到此时已经正常监听tracker的22122端口和storage的23000端口,至此storage服务器就已经配置完成,肯定了storage服务器启动成功后,还有一项工做就是看看storage服务器是否已经登记到 tracker服务器(也能够理解为tracker与storage是否整合成功),运行如下命令:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
如上所示,看到192.168.111.11 ACTIVE 字样便可说明storage服务器已经成功登记到了tracker服务器,同理别忘了添加开机启动,打开/etc/rc.d/rc.local并将以下配置追加到文件中:
vim /etc/rc.d/rc.local
service fdfs_storaged start
至此咱们就已经完成了fastdfs的所有配置,此时也就能够用客户端工具进行文件上传下载的测试了。
初步测试
测试时须要设置客户端的配置文件,编辑/etc/fdfs目录下的client.conf 文件,打开文件后依次作如下修改:
base_path=/opt/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.111.11:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http 端口号,必须和tracker的设置对应起来
配置完成后就能够模拟文件上传了,先给/opt目录下放一张图片
而后经过执行客户端上传命令尝试上传:
这就表示咱们的文件已经上传成功了,当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成,以下图:
同时在以前配置的storage服务器的实际文件存储路径中也能够根据返回的路径找到实际文件:
---------------------------------------------------------------------------------------
安装Nginx
上面将文件上传成功了,但咱们没法下载。所以安装Nginx做为服务器以支持Http方式访问文件。同时,后面安装FastDFS的Nginx模块也须要Nginx环境。
Nginx只须要安装到StorageServer所在的服务器便可,用于访问文件。我这里因为是单机,TrackerServer和StorageServer在一台服务器上。
1、安装nginx所需环境
① gcc 安装
# yum install gcc-c++
② PCRE pcre-devel 安装
# yum install -y pcre pcre-devel
③ zlib 安装
# yum install -y zlib zlib-devel
④ OpenSSL 安装
# yum install -y openssl openssl-devel
2、安装Nginx
① 下载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.d/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
# 设置执行权限
# chmod 755 rc.local
⑦ 查看nginx的版本及模块
/usr/local/nginx/sbin/nginx -V
⑧ 防火墙中打开Nginx端口(默认的 80)
添加后就能在本机使用80端口访问了。
# vim /etc/sysconfig/iptables
添加以下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
重启防火墙:
# service iptables restart
3、访问文件
简单的测试访问文件
① 修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
添加以下行,将 /group1/M00 映射到 /ljzsg/fastdfs/file/data
location /group1/M00 {
alias /ljzsg/fastdfs/file/data;
}
# 重启nginx
# /usr/local/nginx/sbin/nginx -s reload
② 在浏览器访问以前上传的图片、成功。
http://172.30.60.19/group1/M00/00/00/rB48E1rf8LGAXL2lAAB0KGv2sTo474.jpg
4、FastDFS 配置 Nginx 模块
1、安装配置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、解压
③ 配置Nginx
在nginx中添加模块
# 先停掉nginx服务
# /usr/local/nginx/sbin/nginx -s stop
进入解压包目录
# cd nginx-1.10.0/
# 添加模块
# ./configure --add-module=/opt/fastdfs-nginx-module-master/src
从新编译、安装
# make && make install
④ 查看Nginx的模块
# /usr/local/nginx/sbin/nginx -V
⑤ 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改
# cd /softpackages/fastdfs-nginx-module-master/src
# cp mod_fastdfs.conf /etc/fdfs/
修改以下配置,其它默认
# 链接超时时间
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-5.05/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.30.60.19/group1/M00/00/00/rB48E1rf9BGAG6W9AACCVif2Dzc224.jpg