手把手指导安装fastDFS+nginx+ FastDTH分布式文件服务
环境:CentOS 7.1
1.安装gcc:
yum install gcc-c++
开始安装前需要安装libevent
下载libevent-2.1.11-stable.tar.gz,
解压进入目录cd libevent-2.0.11-stable
修改lib路径./configure --prefix=/usr
make
make install
下载解压libfastcommon-master.zip
定位到libfastcommon 的解压路径,依次执行以下命令安装libfastcommon;
./make.sh
./make.sh install
注意:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。
cp /usr/lib64/libfastcommon.so /usr/lib
2.安装fastDFS的tracker
解压FastDFS_v5.05.tar.gz,定位到解压文件夹中,执行以下命令:
./make.sh
./make.sh install
注意:某些版本会报语法错,经亲测验证FastDFS_v5.05.tar.gz可用。
安装成功后,将解压后路径下的conf文件拷贝到/etc/fdfs/下;
如:
/home/zhubx/FastDFS/conf/* /etc/fdfs/
进入/etc/fdfs/目录下,拷贝出一份tracker.conf.sample 来修改:
vim tracker.conf
修改base_path=/home/FastDFS (找一个稳定的路径)
修改http.server_port=8088 (这个可以随意修改,合理合法就行)
启动tracker验证安装是否成功:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
或者/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
查看端口22122是否打开来验证:
netstat -tunlp
出现如图所示信息说明tracker安装成功。
3.安装FastDFS的storage
为了实现分布式,我们克隆出一台虚拟机,在新的虚拟机上安装storage,storage的安装包跟tracker一样(就是同一个包)。
切到/etc/fdfs/ 路径,拷贝一份storage配置出来修改,
cd /etc/fdfs/
创建目录/home/zhubx/fdfs,/home/zhubx/fdfs/fdfs_storage
cp storage.conf.sample storage.conf
修改group_name=group1
修改base_path=/home/zhubx/fdfs
修改store_path0=/home/zhubx/fdfs/fdfs_storage
保存退出 :wq
启动storage
执行/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
查看端口验证storage是否启动成功:netstat -tunlp
如上图所示代表storage已启动成功。
接下来就可以测试文件上传了
修改/etc/fdfs/client.conf配置文件
vi /etc/fdfs/client.conf
修改base_path=/home/fastdfs
修改tracker_server=192.168.1.114:22122
保存退出::wq
测试上传功能:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/test4.txt
当出现如上图所示即表示上传成功了。
4.安装fastDFS-nginx-module
fastDFS没有提供下载接口,所以需要接入nginx来实现下载功能
在Storage 服务器上安装nginx,目的:提供下载接口。
经亲测验证,nginx-1.17.6.tar.gz版本可用。
安装nginx及fastDFS-nginx-module前需要安装nginx的依赖包:PCRE、zlib、openssl;依次执行以下命令即可
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
解压压缩包,并进入解压后根路径:cd nginx-1.17.6
安装fastDFS-nginx-module
经亲测验证fastdfs-nginx-module_v1.19.zip 版本可用
也是先解压,将zip压缩包解压到/usr/local/路径下:
unzip fastdfs-nginx-module_v1.19.zip -C /usr/local/
修改config文件,将文件中/usr/local/路径改为/usr/
cd fastdfs-nginx-module-master/src
vim config
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
fi
保存退出
:wq
将src目录下的mod_FastDFS.conf 文件拷贝到目录/etc/fdfs/
cp mod_fastdfs.conf /etc/fdfs/
修改/etc/fdfs/mod_FastDFS.conf 内容,
base_path=/home/zhubx/fastdfs/
tracker_server=[tracker的IP]:22122
url_have_group_name=true
store_path0=/home/zhubx/fastdfs/fdfs_storage
创建 /home/zhubx/fastdfs/fdfs_storage 目录
将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
创建nginx/client 目录
mkdir -p /var/temp/nginx/client
5.安装nginx
使用nginx-1.17.6.tar.gz 版本
先解压,再进入到解压后路径
tar -zxvf nginx-1.17.6.tar.gz
cd nginx-1.17.6
配置安装参数,命令 :
./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-master/src
make
make install
正常编译安装的话不会有报错,如报一些C语言语法错,可判断为前几步安装编译依赖包不正确、或各组件版本间有不兼容的情况。
配置nginx
进入目录/usr/local/nginx/conf/
cd /usr/local/nginx/conf/
修改nginx.conf配置
(部分)
vi nginx.conf
listen 80;
server_name localhost;
location /group1/M00/{
root /home/zhubx/fastdfs/fdfs_storage/data;
ngx_fastdfs_module;
}
保存退出:wq
测试nginx 是否可访问,如不能正常访问,这拷贝文件如果nginx 不能访问,则将fastdfs/conf目录下的http.conf mime.types 拷贝到/etc/fdfs/ 重试生效。
cp http.conf mime.types /etc/fdfs/
标准的安装到此就结束了,如果还想进阶高配,比如fastDHT去重存储,那就继续安装fastDHT
安装fastDHT 前需要先解压安装db-18.1.32.tar.gz
tar -zxvf db-18.1.32.tar.gz
cd build_unix/
../dist/configure --prefix=/usr/local/db-18.1.32-test
make
make install
安装FastDHT
将FastDHT_v1.17.tar.gz 拷贝到/usr/local/目录下
cp FastDHT_v1.17.tar.gz /usr/local/
启动nginx
cd /usr/local/nginx/sbin/
出现上图说明启动成功。
接下来可选择是否安装fastDHT
fastDHT 的作用主要是对上传的文件去重存储,依赖于Berkeley DB作为数据存储的媒介,同时强依赖于libfastcommon
安装Berkeley DB
下载db-18.1.32.tar.gz
解压,进入解压后根目录
找到build_unix
cd build_unix
../dist/configure --prefix=/usr/local/db-18.1.32-test
make
make install
下载fastDHT
地址:https://github.com/happyfish100/fastdht
解压fastdht-master.zip
unzip fastdht-master.zip
进入解压后根目录:cd fastdht-master
修改:
CFLAGS=’-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/usr/local/db-18.1.32-test/include/ -L/usr/local/db-18.1.32-test/lib/’
:wq
编译安装:
./make.sh
./make.sh install
安装完成后检查/etc/fdht/ 目录下是否有三个文件生成:
fdht_client.conf fdhtd.conf fdht_servers.conf
创建fastdht 目录:
mkdir /opt/fastdht
修改配置文件fdht_client.conf如下
vim fdht_client.conf
base_path=/opt/fastdht
keep_alive=1
#include /etc/fdht/fdht_servers.conf
:wq
修改配置fdht_servers.conf如下
vim fdht_server.conf
group_count = 1
group0 = 192.168.1.114:11411
:wq
修改配置fdhtd.conf如下
(关键部分)
vim fdhtd.conf
port=11411
bash_path=/opt/fastdht (该目录必须是已经存在的)
#include /etc/fdht/fdht_servers.conf
保存退出
:wq
配置/etc/fdfs/目录下的storage.conf文件,依次修改如下内容
#是否检测上传文件已经存在。如果已经存在,则建立一个索引链接以节省磁盘空间
check_file_duplicate=1
#当上个参数设定为1时 , 在FastDHT中的命名空间
key_namespace=FastDFS
#长连接配置选项,如果为0则为短连接 1为长连接
keep_alive=1
#此处特别需要注意配置
#include /etc/fdht/fdht_servers.conf
执行以下命令:
cp /usr/local/db-18.1.32-test/lib/libdb-18.1.so /usr/lib/
cp /usr/local/db-18.1.32-test/lib/libdb-18.1.so /usr/lib64/
启动fastDHT
fdhtd /etc/fdht/fdhtd.conf
集锦:如果当前要安装的系统版本是centos7.x,那么安装完成启动的时候可能会报个错:
libevent-2.1.so.7: cannot open shared object file: No such file or directory
这时候了应该是某些C语言类库或者某些设置没有配,执行以下批量安装即可:
yum install \
vim \
git \
gcc \
gcc-c++ \
wget \
make \
automake \
autoconf \
libtool \
libdb \
libdb-devel \
libevent \
libevent-devel \
-y \
回车再重新启动就好了;