根据参考文章:http://www.linuxidc.com/Linux/2016-09/135537.htm实践
精简的实践过程如下。
创建/opt安装目录
mkdir /opt
安装libfastcommon包
在opt目录下执行
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
tar -zxvf V1.0.36.tar.gz
cd libfastcommon-1.0.36
./make.sh
./make.sh install
至此FastDFS所需要的libfastcommon包安装完成。
因为libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接。
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
安装FastDFS
在opt目录下执行
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11
./make.sh
./make.sh install
至此FastDFS安装完成,安装目录为/etc/fdfs。
进入/etc/fdfs,将conf的sample文件拷贝用于后续的FastDFS服务器配置。
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
配置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
- 为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
- 启动Tracker服务器
service fdfs_trackerd start
配置FastDFS的Storage
- 配置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.200.214: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下面生成了实际文件存储路径
确认FastDFS的Tracker与Storage启动完成
netstat -unltp|grep fdfs
可以确定22122,23000端口均被监听。
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
可以确认storage服务器是否已经登记到 tracker服务器(也可以理解为tracker与storage是否整合成功)。
通过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目录下放置test.jpg文件。
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/test.jpg
执行命令后获得FastDFS存放该文件的位置。
group1/M00/00/00/wKjI1lpDCOGAJIZTAACbNzE7S1A224.jpg
group1:组名
M00:磁盘
/00/00:目录
wKjI1lpDCOGAJIZTAACbNzE7S1A224.jpg:文件名
引入Ngnix为FastDFS提供HTTP服务
自FastDFS4.0.5版本起,HTTP服务被移除。需要引入Ngnix为FastDFS提供HTTP服务,并解决group中storage服务器的同步延迟问题,以及负载问题等。
此处先为Storage引入Ngnix
- 安装Ngnix
安装Ngnix所依赖的lib库
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
- 下载Ngnix,以及fastdfs-ngnix适配模块并解压
wget http://nginx.org/download/nginx-1.8.1.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
tar -zxvf nginx-1.8.1.tar.gz
unzip master.zip
- 配置,编译并安装Nginx
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs-nginx-module-master/src
make
make install
Nginx的安装目录为/usr/local/nginx。
4. 修改ngnix.conf配置文件
修改/usr/local/nginx/conf/ngnix.conf文件
listen 9999;
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
- 拷贝FastDFS解压缩目录下的conf目录下的http.conf和mime.types到/etc/fdfs目录下
cp -r /opt/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp -r /opt/fastdfs-5.05/conf/mime.types /etc/fdfs/
接下来还需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下
cp -r /opt/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
- 编辑mod_fastdfs.conf
base_path=/opt/fastdfs_storage #保存日志目录
tracker_server=192.168.111.11:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
设置了group_count = 3,接下来就需要在文件尾部追加这3个group setting:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
接下来还需要建立 M00 至存储目录的符号连接:
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
- 最后启动nginx
/usr/local/nginx/sbin/nginx
- 在宿主机的浏览器测试nginx
http://192.168.200.214:9999
如果从宿主机无法连接,可能是由于CentOS的防火墙阻止
首先:开启 web 端口
firewall-cmd --permanent --add-port=80/tcp
重启 firewall
firewall-cmd --reload
至此为FastDFS的Storage配置的HTTP服务支持者Ngnix结束。
为Tracker引入Nginx
1. 在/usr/local下创建ngnix2文件夹用以放置第二个Ngnix服务器的文件
cd /usr/local
mkdir nginx2
cd /opt/nginx-1.8.1/
./configure --prefix=/usr/local/nginx2 --add-module=/opt/fastdfs-nginx-module-master/src
make
make install
- 修改nginx2下面的/conf/nginx.conf文件,tracker的nginx无需修改listen端口,即默认的80端口,并将upstream指向storage的nginx地址:
http节点下
upstream fdfs_group1 {
server 127.0.0.1:9999;
}
server节点下
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
- 启动nginx2
/usr/local/nginx2/sbin/nginx
至此可以通过宿主机浏览器来访问上传的图片
http://192.168.200.214/group1/M00/00/00/wKjI1lpDCOGAJIZTAACbNzE7S1A224.jpg
附录
检查Ngnix启动是否成功
- 检查服务端是否启动成功
ps -ef |grep nginx #查看nginx服务是否启动
- 检查web访问是否成功
wget 127.0.0.1
curl 127.0.0.1 #返回页面的值表示正常。