在Ubuntu上安装fastdfs
在Ubuntu上安装fastdfs
最近在做项目的时候需要用到图片服务器,所以就搭建了一台,这里搭建的fastdfs服务使用的服务器是Ubuntu,有相同需求的小伙伴可以参考,如果有小伙伴用的是Centos服务器,可以参考文末的博客完成相应的安装。话不多说,开始肝!
安装包下载
安装FastDFS需要用到下面的安装包:
-
FastDFS安装包
-
总共有3个包:fastdfs、fastdfs-nginx-module、libfastcommon,去对应的仓库中寻找下载最新的安装包即可。
-
Nginx安装包
-
下载最新的Nginx安装包即可
安装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_upload_file /etc/fdfs/client.conf anti-steal.jpg
上传成功会返回图片的ID,返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
至此,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,访问成功如下图所示:
接下来去/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