FastDFS 支持集群部署,这里我仅仅使用一台虚拟机来进行测试,会对集群部署的点进行讲解(Nginx、单点 Tracker Server、单点 Storage Server 进行安装)。我会先安装 Nginx,而后安装单点 Tracker Server、单点 Storage Server ,最后整合 FastDFS-Nginx-Module。
所用环境信息:
将下载好的资源 上传到服务器
1、安装依赖库:
yum install gcc)yum install pcre-devel)yum install zlib zlib-devel)yum install openssl openssl-devel)yum -y install gcc pcre-devel zlib zlib-devel openssl openssl-devel2、解压Nginx至/usr/local目录:tar -zxvf nginx-1.12.2.tar.gz /usr/local/
3、安装Nginx:先进入到/usr/local/nginx-1.12.2 cd /usr/local/nginx-1.12.2
使用以下命令安装 Nginx:(./configure 默认安装位置为 /usr/local/nginx,可以使用参数 --prefix=/usr/nginx 进行修改)
../configuremakemake install4、测试配置文件:
测试配置文件能否正确,我们先进入到 /usr/local/nginx/sbin 目录,执行以下命令:cd /usr/local/nginx/sbin./nginx -t
5、启动Nginx:./nginx
使用curl 测试Nginx能否启动成功:curl localhost
6、增加到守护进程
1)在系统服务目录里创立nginx.service文件vim /etc/systemd/system/nginx.service
内容如下:
[Unit]Description=nginxAfter=network.target [Service]Type=forkingExecStart=/usr/local/nginx/sbin/nginxExecReload=/usr/local/nginx/sbin/nginx -s reloadExecStop=/usr/local/nginx/sbin/nginx -s quitPrivateTmp=true [Install]WantedBy=multi-user.target部分参数说明:
[Unit]:服务的说明Description:形容服务After:形容服务类别[Service]服务运行参数的设置Type=forking是后端运行的形式ExecStart为服务的具体运行命令ExecReload为重启命令ExecStop为中止命令PrivateTmp=True表示给服务分配独立的临时空间注意:[Service]的启动、重启、中止命令一律要求使用绝对路径[Install]运行级别下服务安装的相关设置,能设置为多客户,即系统运行级别为32)设置开机自启动:systemctl enable nginx.service
中止开机自启动:systemctl disable nginx.service
查看服务当前状态:systemctl status nginx.service
重新启动服务:systemctl restart nginx.service
查看所有已启动的服务:systemctl list-units --type=service
1、安装依赖库:
yum install gcc-c++yum -y install libevent2、安装 libfastcommon
libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的少量基础库。该库上面我有提供下载地址。
tar -zxvf libfastcommonV1.0.7.tar.gzcd libfastcommon-1.0.7/./make.sh./make.sh install注意:libfastcommon 安装好后会自动将库文件拷贝至 /usr/lib64 下,因为 FastDFS 程序引用usr/lib 目录所以需要将 /usr/lib64 下的库文件拷贝至 /usr/lib 下。cp /usr/lib64/libfastcommon.so /usr/lib/
3、安装 FastDFS
# 解压tar -zxvf FastDFS_v5.05.tar.gzcd FastDFS# make./make.sh./make.sh install安装成功将安装目录下的 conf 下的文件拷贝到 /etc/fdfs/ 下:cp -a conf/* /etc/fdfs/
4、配置 Tracker
安装成功后进入 /etc/fdfs 目录,我们要对 tracker.conf 配置文件进行修改:
a) 在 /home 目录下新建 FastDFS 目录:
cd /home/mkdir FastDFSb) 修改 tracker.conf:
cd /etc/fdfs/vim tracker.conf#----------------------------修改内容如下----------------------------base_path=/home/yuqing/FastDFS 改为:base_path=/home/FastDFShttp.server_port=8080 改为 http.server_port=80假如配置 Tracker 集群,主需要在多台服务器上安装 FastDFS,而后配置 Tracker 就可。
5、启动 Tracker
使用命令启动 Tracker,而后查询能否启动。
# 启动命令/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart# 查看能否启动ps -ef | grep fdfs6、配置 Storage
因为我只使用一台vps进行模拟安装,就无需再次安装 FastDFS 了,假如你需要集群部署,比方你有三台机器:192.168.1.101、192.168.1.102、192.168.1.103,那么你需要在每台机器上都执行“安装 FastDFS”和“配置 Storage”就可,这里仅仅使用一台vps进行演示。
安装成功后进入 /etc/fdfs 目录,我们要对 storage.conf 配置文件进行修改:
a) 在 /home/FastDFS 目录下新建 fdfs_storage 目录:
cd /home/FastDFSmkdir fdfs_storageb) 修改 storage.conf:
cd /etc/fdfs/vim storage.conf#----------------------------修改内容----------------------------group_name=group1base_path=/home/yuqing/FastDFS 改为 base_path=/home/FastDFSstore_path0=/home/yuqing/FastDFS 改为store_path0=/home/FastDFS/fdfs_storage#假如有多个挂载磁盘则定义多个store_path,如下#store_path1=.....#store_path2=......tracker_server=192.168.1.217:22122 # 配置 Tracker 服务器:IP#假如有多个则配置多个 Tracker #tracker_server=192.168.1.218:22122#tracker_server=192.168.1.219:22122#配置http端口http.server_port=807、启动 Storage
使用命令启动 Storage,而后查询能否启动。
# 启动命令/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart# 查看能否启动ps -ef | grep fdfs8、上传图片测试
这里我将一张名为 picture.jpg 的图片上传到 /root 目录下,使用这张图片进行上传图片测试。
FastDFS 安装成功可通过 /usr/bin/fdfs_test 测试上传、下载等操作。这里我们需要修改 /etc/fdfs/client.conf 配置文件:
vim client.conf#----------------------------修改内容----------------------------base_path=/home/yuqing/fastdfs 改为 base_path=/home/FastDFStracker_server 改为 tracker_server=192.168.1.217:22122使用以下格式命令上传文件
#命令格式/usr/bin/fdfs_test 用户端配置文件地址 upload 上传文件#测试命令/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root picture.jpg上传成功后会显示上传图片等信息,可以根据返回信息中提供文件信息去 /home/FastDFS/fdfs_storage/ 目录下查看我们刚刚上传好的图片。至此说明 FastDFS 的单点 Tracker 和 单点 Storage 都已经安装成功了。
9、配置 FastDFS-Nginx-Module
我们已经安装和测试好了 FastDFS,但是假如我们上传的是图片,那我们如何在浏览器中查看图片呢?这个就需要结合 Nginx 来进行配置了,目前我们把 FastDFS 和 Nginx 都安装好了,那么还需要一个 FastDFS-Nginx-Module 模块来完成这个任务,接下来我们就一起来配置一下 FastDFS-Nginx-Module 模块。
a)解压 fastdfs-nginx-module_v1.16.tar.gz,修改 config 文件路径:
#解压FastDFS-Nginx-Moduletar -zxvf fastdfs-nginx-module_v1.16.tar.gz#进入安装目录下的 src 文件夹cd /home/apk/fastdfs-nginx-module/src/#修改 config 文件vim config#------------------------修改内容------------------------#将:CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"#修改为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"#去掉了路径中的localb) 将 fastdfs-nginx-module/src 下的 mod_fastdfs.conf 拷贝至 /etc/fdfs/ 下,并修改mod_fastdfs.conf 的内容:
cp mod_fastdfs.conf /etc/fdfs/vim /etc/fdfs/mod_fastdfs.conf#------------------------修改内容------------------------base_path=/home/FastDFStracker_server=192.168.1.217:22122#假如有多台,继续配置就可,例如:tracker_server=192.168.1.218:22122url_have_group_name=true #url中包含group名称store_path0=/home/FastDFS/fdfs_storage #指定文件存储路径#假如有多个,如下配置:store_path1=/home/FastDFS/fdfs_storage1#将 libfdfsclient.so 拷贝至 /usr/lib 下:cp /usr/lib64/libfdfsclient.so /usr/lib/#创立 nginx/client 目录mkdir -p /var/temp/nginx/clientc) 增加 FastDFS-Nginx-Module 模块
配置完成后,而后进入 Nginx 安装目录,执行增加模块命令:
#进入nginx安装目录cd /home/apk/nginx-1.12.2#执行增加模块命令./configure --add-module=/home/apk/fastdfs-nginx-module/srcmakemake installd) 修改 Nginx 配置文件,测试图片访问
上面的配置完成后,我们需要修改一下 Nginx 的配置文件,进入 Nginx 目录,使用以下命令操作:
# 进入 Nginx 目录cd /usr/local/nginx/conf#修改配置文件vim nginx.conf#------------------------修改内容------------------------#修改配置文件的 server 部分,如下所示:server { listen 80; server_name 192.168.1.217; location /group1/M00/{ root /home/FastDFS/fdfs_storage/data; ngx_fastdfs_module; }}f) 配置完成后,启动 Nginx:
#进入目录cd /usr/local/nginx/sbin/#启动 Nginx./nginx# 查看 Nginx 进程ps -ef | grep nginx测试:之前测试FastDFS上传过一张图片,上传成功后返回图片地址,用浏览器打开看图片能否显示就可,至此 FastDFS-Nginx-Module 配置完成。假如访问不了,请在防火墙开启80端口的访问权限。
本文参考由浅入深理解 FastDFS 分布式文件系统
感谢:AlanShelby