如何在阿里云上搭建图片服务器FastDFS(含nginx搭建)

FastDFS

为何要使用FastDFS服务

	FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
	FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。

准备

准备好所需的压缩包,上传至阿里云服务器 /usr/local/fastdfs目录下,如果没有的话,可点击下面的链接进行下载

// 下载地址
https://pan.baidu.com/s/19GMNhXXJe97E-IzfBjZ0Fw
//提取码
hhlw

所需的安装包
上传成功

安装gcc(编译时需要)

因为fastdfs是C语言编写的,所以安装fastdfs之前先安装gcc进行编译

// 安装gcc
yum install -y gcc gcc-c++

安装gcc语言

安装libevent(运行时需要)

安装libevent,因为fastdfs是依赖libevent库的

// 安装libevent
yum -y install libevent

安装libevent

安装libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。

// 解压libfastcommon致/usr/local目录下
tar -zxvf libfastcommonV1.0.7.tar.gz -C /usr/local/

解压libfastcommon致/usr/local目录下

进入到解压后的libfastcommonV1.0.7文件的目录下,进行编译和安装

// 进入到解压后的libfastcommonV1.0.7文件的目录下
cd /usr/local/libfastcommon-1.0.7/
//编译
./make.sh           
//安装
./make.sh install 

准备编译

编译完成后的图片如下

编译安装成功

libfastcommon安装好后会在/usr/lib64 目录下生成 libfastcommon.so 库文件;

// 切换到/user/lib64目录下
cd /usr/lib64
//查看
ls | grep libfastcommon.so

查看

因为fastdfs程序需要引用usr/lib目录,所以将/usr/lib64下的文件拷贝至/usr/lib目录下

// 拷贝文件至/usr/lib目录下
cp libfastcommon.so /usr/lib

拷贝文件

安装tracker

将/usr/local/fastdfs目录下的FastDFS_v5.05.tar.gz文件解压至/usr/local目录下

// 解压FastDFS_v5.05.tar.gz文件解压至/usr/local目录下
tar -zxvf /usr/local/fastdfs/FastDFS_v5.05.tar.gz -C /usr/local

将/usr/local/fastdfs目录下的FastDFS_v5.05.tar.gz文件解压至/usr/local目录下

切入到解压的文件目录下,进行编译和安装

// 切换到/usr/local/FastDFS目录下
cd /usr/local/FastDFS/
//编译和安装
./make.sh && ./make.sh install

进行文件的编译和安装

编译安装完后的结果如下:

编译安装成功

安装成功将安装目录下的conf下的文件拷贝至/etc/fdfs/目录下

// 拷贝文件
cp /usr/local/FastDFS/conf/* /etc/fdfs/

拷贝文件

配置tracker

切换到/etc/fdfs/目录下,拷贝一份新的tracker配置文件,并修改tracker.conf

// 切换到/etc/fdfs/目录下
cd /etc/fdfs/
// 拷贝一份新的tracker配置文件
cp tracker.conf.sample tracker.conf
//修改tracker.conf  
vim tracker.conf
//修改base_path路径
base_path=/home/yuqing/fastdfs  改为:  base_path=/home/fastdfs
//配置http端口号
http.server_port  改为: 80

编辑tracker.conf

修改如下(本人喜欢用EditPlus编辑,具体设置在《如何在阿里云服务器上搭建Java环境》博客中讲到,这不再赘述):

修改base_path
修改http.server_port

创建 /home/fastdfs 目录,并启动tracker,在/home/fastdfs/ 目录下生成两个目录, 一个是数据,一个是日志;

// 创建 /home/fastdfs 目录
mkdir /home/fastdfs
//启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

tracker启动成功

配置storage

切换到/etc/fdfs目录下,拷贝一份新的storage

// 切换目录到: /etc/fdfs/ 目录下
cd /etc/fdfs/
//拷贝一份新的storage配置文件
cp storage.conf.sample storage.conf
//修改storage.conf
vim storage.conf

拷贝

//group_name=group1 #配置组名
base_path=/home/yuqing/fastdfs    改为:  base_path=/home/fastdfs

配置配置

//store存放文件的位置(store_path)
store_path0=/home/yuqing/fastdfs  改为: store_path0=/home/fdfs_storage 
//如果有多个挂载磁盘则定义多个store_path,修改如下:
#store_path1=.....
#store_path2=......

配置

//配置tracker服务器:IP
tracker_server=XXX.XXX.XXX.XX:22122
//如果有多个则配置多个tracker
tracker_server=XXX.XXX.XX.X:22122

配置多个IP

//配置http端口
http.server_port=88

http配置

创建 /home/fdfs_storage 目录

// 创建 /home/fdfs_storage 目录
mkdir /home/fdfs_storage

启动storage

// 启动storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

注:有的粉丝说到这启动失败,原因主要是在阿里云服务器没有放开端口,具体放开阿里云服务器端口的步骤在《如何在阿里云上搭建tomcat(最新版)》博客中详细讲到,这就不再赘述了!

设置阿里云服务器端口号
设置阿里云服务器端口号

启动完成后进入 /home/fdfs_storage/data 目录下,成功配置会显示如下:

// 进入 /home/fdfs_storage/data
cd /home/fdfs_storage/data

启动成功

测试FastDFS

切换目录到/etc/fdfs目录下,拷贝一份新的client配置文件

// 切换目录到/etc/fdfs目录下
yum install gcc-c++
//拷贝一份新的client配置文件
cp client.conf.sample client.conf

拷贝一份新的client配置文件

修改client.conf ; vim client.conf,修改基本路径和tracker_server

// 修改client.conf
 vim client.conf
 //修改基本路径
 base_path=/home/yuqing/fastdfs 修改为:
 base_path=/home/fastdfs
 //修改tracker_server
 tracker_server=XXX.XXX.XX.X:22122
 //若tracker有多个,可以配置多个:
 #tracker_server=......
 #tracker_server=......

配置client

上传一张照片至/usr/local/fastdfs/目录下上传一张照片

上传照片

测试之前,现在阿里云控制台添加23000的端口,放开上传端口

放开23000端口

开始测试

// 上传测试
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/fastdfs/yaoweijie.jpg

测试成功

上图中的url地址就是对应照片的路径地址,对应的storage服务器上的/home/fdfs_storage/data/00/00/rBCbFl3TlPCAYVXxAAEJgrbl9M4712.jpg文件,由于现在还没有和nginx整合无法使用浏览器查看对应的图片和http下载

访问失败

FastDFS 和nginx整合

在每个tracker上安装nginx,的主要目的是做负载均衡及实现高可用。如果只有一台tracker可以不配置nginx,一个tracker对应多个storage,通过nginx对storage负载均衡;
切换到/usr/lcoal/fastdfs解压nginx-1.8.0.tar.gz压缩包至/usr/local目录下

// 切换到/usr/lcoal/fastdfs目录下
cd /usr/local/fastdfs/
//解压nginx-1.8.0.tar.gz压缩包至/usr/local目录下
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local

解压文件

切换目录到: /usr/local/fastdfs-nginx-module/src/ 目录下,修改config文件,将文件中的所有 /usr/local/ 路径改为 /usr/

// 切换目录到/usr/local/fastdfs-nginx-module/src/
cd /usr/local/fastdfs-nginx-module/src/
//修改config文件,将文件中的所有 /usr/local/ 路径改为 /usr/

修改usr

将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下,
并修改mod_fastdfs.conf

// 将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下
cp mod_fastdfs.conf /etc/fdfs/
//修改 /etc/fdfs/mod_fastdfs.conf 的内容
vi /etc/fdfs/mod_fastdfs.conf
base_path=/tmp 修改为 base_path=/home/fastdfs

,base_path=/tmp 修改为 base_path=/home/fastdfs

// 修改tracker_server为你的阿里云IP
//(多个tracker配置多行)
#tracker_server=192.168.172.20:22122 

修改tracker_server为你的阿里云IP

// url中包含group名称
url_have_group_name=true 

url中包含group名称

// 指定文件存储路径(上面配置的store路径)
store_path0=/home/fdfs_storage

指定文件存储路径(上面配置的store路径)

将libfdfsclient.so拷贝至/usr/lib下,创建nginx/client目录

// 将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
//创建nginx/client目录
mkdir -p /var/temp/nginx/client

安装nginx

// 切换到/usr/lcoal/fastdfs目录下,下载nginx
cd /usr/local/fastdfs/
wget http://nginx.org/download/nginx-1.17.5.tar.gz
//解压 nginx-1.17.5.tar.gz 到 /usr/local目录下
tar -zxvf nginx-1.17.5.tar.gz -C /usr/local

下载nginx
解压nginx

安装nginx的依赖库,安装成功如下图所示

//安装nginx的依赖库
yum install pcre && yum install pcre-devel && yum install zlib && yum install zlib-devel && yum install openssl && yum install openssl-devel

安装nginx的依赖库,安装成功如下图所示

进入nginx解压的目录下,加入模块命令配置

// 进入nginx解压的目录下
cd /usr/local/nginx-1.17.5/
//加入模块命令配置
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/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=/usr/local/fastdfs-nginx-module/src

安装成功如下图所示

安装成功

编译并安装

// 编译并安装
make && make install

编译并安装

安装成功后查看/usr/local/nginx目录下,是否含有以下文件

// 切换到/usr/local/nginx目录下
cd /usr/local/nginx

查看文件

拷贝文件到/etc/fdfs 下

// 拷贝文件到/etc/fdfs 下
cd /usr/local/FastDFS/conf
cp http.conf mime.types /etc/fdfs/
//创建logs目录
mkdir /usr/local/nginx/logs
//切换到/usr/local/nginx/conf/目录下
cd /usr/local/nginx/conf/
//修改nginx文件
vim nginx.conf

切换路径

修改文件中的pid和sever配置,server_name指定本机ip,ocation /group1/M00/:group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/fdfs_storage,如果FastDFS定义store_path1,这里就是M01

// 修改pid
pid        /usr/local/nginx/logs/nginx.pid;
//修改server配置
 location /group1/M00/ {
            root   /home/fdfs_storage/data;
            ngx_fastdfs_module;
        }

修改pid
修改server

启动nginx

// 切换到sbin目录下
cd /usr/local/nginx/sbin/
//启动nginx
./nginx 
//查询nginx进程
ps -ef | grep nginx

查询nginx

在浏览器中访问上传到fastDFS的图片

在浏览器中访问刚才上传的图片,如下图所示:

fastdfs搭建成功

注意:

如果效果没有出来,一定注意在阿里云服务器上放开相应的端口:
放开端口参考这篇博客《如何在阿里云服务器上搭建mysql服务(最新版)》
放开端口
还有就是关闭防火墙

// 关闭firewall防火墙
//停止firewall
systemctl stop firewalld.service 
//禁止firewall开机启动
systemctl disable firewalld.service 
//查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state 
// 关闭iptables防火墙
//临时关闭防火墙
service iptables stop  
//永久关闭防火墙
chkconfig iptables off 

关闭防火墙

恭喜你,FastDFS与nginx搭建成功!

如果您觉得写的不错,请在右上角点个赞,谢谢大佬!!
原创:产品研发部—yaoWeiJie
原创精品,翻版必究
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值