在Ubuntu上安装fastdfs

最近在做项目的时候需要用到图片服务器,所以就搭建了一台,这里搭建的fastdfs服务使用的服务器是Ubuntu,有相同需求的小伙伴可以参考,如果有小伙伴用的是Centos服务器,可以参考文末的博客完成相应的安装。话不多说,开始肝!

安装包下载

安装FastDFS需要用到下面的安装包:

安装fastdfs

安装包下载完之后,使用远程连接工具将安装包传到Ubuntu上

libcommon安装

进入安装包所在目录,这里首先要安装的是libcommon

# 解压libcommon对应的压缩包
tar -zxvf libfastcommon-1.0.48.tar.gz
# 进入解压后的目录
cd libfastcommon-1.0.48/
# 执行编译脚本
./make.sh
# 安装
./make.sh install
# libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/lib,所以可以创建/usr/lib64/libfastcommon.so到/usr/lib/libfastcommon.so的软链接。
# ln -s libfastcommon.so /usr/lib/libfastcommon.so

注: 如果执行编译脚本的时候如果报找不到make命令的错误,则表示系统中没有安装make命令,需要先安装一下 安装过程如下:

apt install -y gcc automake autoconf libtool make

fastdfs安装

进入安装包所在目录,接下来安装fastdfs

# 解压fastdfs对应的压缩包
tar -zxvf fastdfs-6.07.tar.gz
# 进入解压后的目录
cd fastdfs-6.07/
# 执行编译脚本
./make.sh
# 安装
./make.sh install
# 复制fastdfs安装包下面的配置文件到/etc/fdfs目录下
cp * /etc/fdfs
# 进入/etc/fdfs目录
cd /etc/fdfs

配置并启动Tracker服务

# 修改tracker.conf文件
vim tracker.conf
# 修改base_path属性,自定义tracker的数据和日志的输出目录
base_path=/candywall/fastdfs/tracker
# 保存并退出
:wq
# 创建刚才在tracker.conf中自定义的base_path目录
mkdir -p /candywall/fastdfs/tracker
# 配置防火墙,开放Tracker服务占用的22122端口
ufw enable 22l22
# 启动Tracker服务
fdfs_trackerd /etc/fdfs/tracker.conf start

配置并启动Storage服务

# 修改storage.conf文件
vim storage.conf
# 修改base_path属性,自定义tracker的数据和日志的输出目录
base_path=/candywall/fastdfs/storage
# 修改store_path属性,如果不配置就是跟base_path一样,我这里就直接跟配置base_path一样的路径了
store_path0=/candywall/fastdfs/storage
# 修改tracker_server地址,tracker服务所在的服务器的IP地址,有域名的也可以改成 域名:22122,如果有多个tracker服务,可以配置多行,官方默认给我配了两行,如果只有一个tracker服务,可以注释掉一行。
tracker_server = 192.168.153.132:22122
# 保存并退出
:wq
# 创建刚才在storage.conf中自定义的base_path目录
mkdir -p /candywall/fastdfs/storage
# 配置防火墙,开放Storage服务占用的23000端口
ufw enable 23000
# 启动Storage服务
fdfs_storaged /etc/fdfs/storage.conf start

查看Tracker和Storage服务是否都启动成功

# 查看进程是否启动
ps aux|grep fdfs
# 查看服务监听的端口是否正确
netstat -unltp|grep fdfs

配置Client,并进行文件上传测试

fastdfs安装后自带了一个Client客户端,用户可以通过使用它,测试文件服务是否能正常工作!为后期使用代码或者其他客户端调用做准备!

# 修改client.conf文件
vim client.conf
# 修改base_path属性,自定义client的数据和日志的输出目录
base_path=/candywall/fastdfs/client
# 修改tracker_server地址,tracker服务所在的服务器的IP地址,有域名的也可以改成 域名:22122,如果有多个tracker服务,可以配置多行,官方默认给我配了两行,如果只有一个tracker服务,可以注释掉一行。
tracker_server = 192.168.153.132:22122
# 保存并退出
:wq
# 创建刚才在client.conf中自定义的base_path目录
mkdir -p /candywall/fastdfs/client

测试文件上传,我这里做测试上传的是一张图片(fastdfs的安装包的conf目录下自带的)

下面提供两个测试命令,来测试上传这张图片,命令不分先后

第一个命令:

fdfs_test fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

上传成功控制台会输出图片上传后的访问地址,包括大图和小图的地址:

fdfs_test命令上传图片测试

第二个命令:

fdfs_upload_file /etc/fdfs/client.conf anti-steal.jpg

上传成功会返回图片的ID,返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。

fdfs_upload-file命令上传图片测试

至此,fastdfs服务都启动正常,可以上传文件了,不过现在还不能给其他非本地的客户端提供服务,还需要再配置web服务。

安装Nginx

为了让fastdfs可以被其他客户端使用Http方式访问,还需要配置web服务,这里使用Nginx。

配置fastdfs-nginx-module

为了让Nginx可以代理fastdfs的文件服务,需要先配置好fastdfs-nginx-module,以便后续编译安装Nginx的时候添加这个模块。

# 解压fastdfs-nginx-moudle对应的压缩包
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
# 进入解压后的目录的src目录下
cd fastdfs-nginx-module-1.22/src/
# 修改config文件,将配置文件中的路径中包含/usr/local/都改成/usr/
# vim中切换到命令模式输入,进行文本替换
:%s#local/##g

安装Nginx所需依赖

# 没有安装的先把gcc安装上
apt intall gcc
# 安装gzip模块需要的zlib库,rewrite模块需要的pcre库,ssl功能需要的openssl库
apt install libpcre3 libpcre3-dev libssl-dev zlib1g-dev

安装Nginx

# 解压Nginx对应的压缩包
tar -zxvf nginx-1.19.6.tar.gz
# 进入解压后的目录
cd nginx-1.19.6/
# 配置编译规则,指定一些日志输出路径,方便出错后查找。
# 添加fastdfs和Nginx整合的模块,--add-module对应上面的fastdfs-nginx-module解压后源码所在路径
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/log/nginx/error.log \
--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/scgi \
--add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src

# 创建/var/temp/nginx目录
mkdir -p /var/temp/nginx

# 编译并安装
make && make install

fastdfs整合Nginx,完成一些配置

修改mod_fastdfs.conf

复制 fastdfs-nginx-module 源码目录下的mod_fastdfs.conf配置文件到/etc/fdfs 目录, 并修改

cd /usr/local/fastdfs/fastdfs-nginx-module-1.22/src/
cp mod_fastdfs.conf /etc/fdfs
cd /etc/fdfs
# 修改mod_fastdfs.conf文件
vim mod_fastdfs.conf
# 修改base_path属性,自定义路径
base_path=/candywall/tmp
# 修改tracker_server地址,tracker服务所在的服务器的IP地址,有域名的也可以改成 域名:22122,如果有多个tracker服务,可以配置多行。
tracker_server=192.168.153.132:22122
# 修改group_name为对应值
group_name=group1
# 将url_have_group_name设置为true
url_have_group_name=true
# 修改store_path0属性,值和storage.conf中的store_path0保持一致
storage_path0=/candywall/fastdfs/storage
# 修改完之后需要重启tracker和storage服务
fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart
# 创建刚才配置的base_path目录
mkdir -p /candywall/tmp

配置Nginx

修改Nginx安装目录下的conf下面的nginx.conf

cd /usr/local/nginx/conf/
vim nginx.conf
# 80端口一般留给部署网站使用,这里选择新增一个端口服务,配置如下:
server {
	listen 88;
	server_name 192.168.153.132;
	location /group/M00 {
	  ngx_fastdfs_module;	
	}
}
# 开放88端口
ufw allow 88
# 进入Nginx安装目录中的sbin目录
cd /usr/local/nginx/sbin
# 执行如下命令检测配置是否正确
./nginx -t
# 启动nginx
./nginx

首先在浏览器中访问Nginx 80端口处的主页服务,地址为:192.168.153.132,访问成功如下图所示:

Nginx 80端口首页

接下来去/candywall/storage/data/00/00/目录下找一张图片,复制图片名称,拼接出访问这个图片的URL,如:http://192.168.153.132:88/group1/M00/00/00/wKiZhGAl-JWAJH2uAABdreSfEnY836_big.jpg

在浏览器中访问,如果能看到图片,说明一切配置都成功!

注:如果在启动Nginx后,不能访问成功,可以去查看Nginx的错误日志,这个在编译安装Nginx的时候指定过存储路径(–error-log-path=/var/log/nginx/error.log),一般启动时的发生的错误都能在里面看到,根据错误解决即可!

如果有小伙伴使用Centos安装fastdfs,可以参考博客:https://www.cnblogs.com/chiangchou/p/fastdfs.html