如有错误,感谢指正,请私信博主,有辛苦红包,拜“一字之师”。
导语:本博客为个人整理Java学习记录帖,如有错误,感谢指正。系统学习,欢迎持续关注,后续陆陆续续更新
Java 交流qq群 383245788
本文旨在帮助大家解决一下安装问题,本人笨笨踩坑四个半小时,终于搭建成功。希望本文对大家有帮助
CentOS-8.4(server)、FastDFS_v5.08、fastdfs-nginx-module_v1.16、libfastcommon-master、nginx-1.8.0
所有包 上传至 /root/upload/ 目录。由于我只开了这一个虚拟机,伪分布式,并没有搭建真正的分布式,多机器配置暂未学习。
Tracker Server 和 Storage Server 完全一致安装。
1.安装依赖
FastDFS 是 C 语言开发的应用。安装必须使用 make、cmake 和 gcc 编译
yum install -y make cmake gcc gcc-c++
本人建议将nginx和别的服务器软件的依赖一并安装,常用依赖如下,不全。
gcc 、pcre 、zlib、openssl
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.解压FastDFS核心库
libfastcommon 是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库
cd /root/upload
unzip libfastcommon-master.zip -d /usr/local/fastdfs
3.进入解压后的目录
cd /usr/local/fastdfs/libfastcommon-master
4.编译安装
libfastcommon 没有提供 make 命令安装文件。使用的是 shell 脚本执行编译和安装。有固定的默认安装位置。在/usr/lib64 和/usr/include/fastcommon 两个目录中。
编译:
./make.sh
安装:
./make.sh install
5.创建软连接
因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
6.解压 FastDFS 主程序
cd /root/upload
tar -zxf FastDFS_v5.08.tar.gz -C /usr/local/fastdfs
7.修改安装路径
cd /usr/local/fastdfs/FastDFS
vi /usr/local/fastdfs/FastDFS/make.sh
找到 TARGET_PREFIX=$DESTDIR/usr
修改结果如下
TARGET_PREFIX=$DESTDIR/usr/local
8.编译安装
./make.sh
./make.sh install
安装后,FastDFS 主程序所在位置是:
/usr/local/bin - 可执行文件所在位置。默认安装在/usr/bin 中。
/etc/fdfs - 配置文件所在位置。就是默认位置。
/usr/local/lib64 - 主程序代码所在位置。默认在/usr/bin 中。
/usr/local/include/fastdfs - 包含的一些插件组所在位置。默认在/usr/include/fastdfs 中。
9.FastDFS 安装后资源简介
/etc/init.d/目录中,脚本文件是 - fdfs-storaged 和 fdfs-tracker
ls /etc/init.d/ | grep fdfs
/etc/fdfs/ 目 录 中 , 配 置 文 件 是 - client.conf.sample 、 storage.conf.sample 和tracker.conf.sample
ls /etc/fdfs/
tracker.conf.sample - 跟踪器服务配置文件模板
storage.conf.sample - 存储服务器配置文件模板
client.conf.sample - FastDFS 提供的命令行客户端配置文件模板。可以通过命令行测试FastDFS 有效性
/usr/local/bin/目录中。命令有若干。可通过命令在控制台访问 FastDFS
ls /usr/local/bin/ | grep fdfs
以上为通用安装,FastDFS 的跟踪服务和存储服务是通过配置实现的。后续内容为跟踪服务和存储服务的具体配置。
1.创建跟踪服务配置文件
FastDFS 提供了配置文件模板,可以根据模板创建需要使用的配置文件。
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
2.修改配置文件
tracker.conf 配置文件用于描述跟踪服务的行为,需要进行下述修改:
vi /etc/fdfs/tracker.conf
注意:port=22122 # 默认服务端
找到base_path=/home/yuqing/fastdfs 修改为
base_path=/fastdfs/tracker (自定义目录,可自行依照自己喜好修改)
base_path 是 FastDFSTracker 启动后使用的根目录。也就是 data 和 logs 所在位置。
3.创建自定义目录
为配置文件中定义的 base_path 变量创建对应的目录。
mkdir -p /fastdfs/tracker
4.修改启动服务脚本
vi /etc/init.d/fdfs_trackerd
将 PRG=/usr/bin/fdfs_trackerd 修改为
PRG=/usr/local/bin/fdfs_track
5.服务相关
启动服务
启动成功后,配置文件中 base_path 指向的目录中出现 FastDFS 服务相关数据目录(data目录、logs 目录)
/etc/init.d/fdfs_trackerd start
查看服务状态
/etc/init.d/fdfs_trackerd status
ps aux | grep fdfs
停止服务
/etc/init.d/fdfs_trackerd stop
重启服务
/etc/init.d/fdfs_trackerd restart
设置开机自启
未设置
1.创建存储服务配置文件
FastDFS 提供了配置文件模板,可以根据模板创建需要使用的配置文件。
cd /etc/fdfs
cp storage.conf.sample storage.conf
2.修改配置文件
storage.conf 配置文件用于描述存储服务的行为,需要进行下述修改:
vi /etc/fdfs/storage.conf
base_path=/home/yuqing/fastdfs -> base_path=/fastdfs/storage/base (自定义目录)
store_path0=/home/yuqing/fastdfs -> store_path0=/fastdfs/storage/store(自定义目录)
tracker_server=192.168.2.109:22122 -> tracker_server=tracker服务IP:22122 我是本机所以修改为192.168.8.133:22122
base_path - 基础路径。用于保存 storage server 基础数据内容和日志内容的目录。
store_path0 - 存储路径。是用于保存 FastDFS 中存储文件的目录,就是要创建 256*256个子目录的位置。
base_path 和 store_path0 可以使用同一个目录。
tracker_server - 跟踪服务器位置。就是跟踪服务器的 ip 和端口。
3.创建自定义目录
mkdir -p /fastdfs/storage/base
mkdir -p /fastdfs/storage/store
4.修改服务脚本
vi /etc/init.d/fdfs_storaged
将 PRG=/usr/bin/fdfs_storaged 修改为
PRG=/usr/local/bin/fdfs_storaged
5.服务相关
要求 tracker 服务必须已启动
启动服务
/etc/init.d/fdfs_storaged start
启动成功后,配置文件中 base_path 指向的目录中出现 FastDFS 服务相关数据目录(data目录、logs 目录),配置文件中的 store_path0 指向的目录中同样出现 FastDFS 存储相关数据录(data 目录)。其中$store_path0/data/目录中默认创建若干子孙目录(两级目录层级总计 256*256 个目录),是用于存储具体文件数据的。
Storage 服务器启动比较慢,因为第一次启动的时候,需要创建 256*256 个目录。
查看服务状态
/etc/init.d/fdfs_storaged status
ps aux | grep fdfs
停止服务
/etc/init.d/fdfs_storaged stop
重启服务
/etc/init.d/fdfs_storaged restart
设置开机自启
未开启。因启动前提为 tracker 服务必须已启动,不推荐开启自启。
在安装 nginx 应用的时候,同时要在 nginx 中增加一个 FastDFS 的组件。Module。
1.解压 组件
tar -zxf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fastdfs
2.修改 fastdfs-nginx-module源文件中的配置
此操作必须修改,否则 Nginx 编译会报错。
cd /usr/local/fastdfs/fastdfs-nginx-module/src
vi /usr/local/fastdfs/fastdfs-nginx-module/src/config
参数是用于配置安装 nginx 中的 FastDFS 组件的时候,在什么位置查找 FastDFS 核心代码。
源数据:
ngx_addon_name=ngx_http_fastdfs_module
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/local/include/fastdfs /usr/local/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS
-D_FILE_OFFSET_BITS=64
-DFDFS_OUTPUT_CHUNK_SIZE='256*1024'
-DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
修 改 后 内 容:
如 果 安 装 FastDFS 时 , 没 有 修 改 make.sh 文 件 (默认安装), 则 改 为 :CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
如下
ngx_addon_name=ngx_http_fastdfs_module
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/local/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS
-D_FILE_OFFSET_BITS=64
-DFDFS_OUTPUT_CHUNK_SIZE='256*1024'
-DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
依赖
yum install -y gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
1.解压 Nginx
tar -zxf nginx-1.8.0.tar.gz -C /usr/local/fastdfs/
2.进入 Nginx 源码目录
cd /usr/local/fastdfs/nginx-1.8.0/
3.配置 Nginx 安装信息
–add-module 必须定义,此配置信息是用于指定安装 Nginx 时需要加载的模块,如果未指定,Nginx 安装过程不会加载 fastdfs-nginx-module 模块,后续功能无法实现。
我在配置这的时候,反斜杠后面有空格,导致一直报错。
./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/fastdfs-nginx-module/src
4.创建目录
Nginx 运行时需要创建若干临时文件,如果默认安装不需创建此目录。
mkdir -p /var/temp/nginx
5.编译安装
此过程我也有报错,但结果未整理,报错信息,网上都可以查到解决办法。
make
make install
6.配置 fastdfs-nginx-module 模块配置文件
复制配置文件/usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf 到/etc/fdfs 目录中
cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
修改配置文件 mod_fastdfs.conf
vi mod_fastdfs.conf
源配置
connect_timeout=2 #连接超时时间,单位秒
tracker_server=tracker:22122 #tracker 服务结点
url_have_group_name = false #URL 中是否包含 group 名称
store_path0=/home/yuqing/fastdfs # storage 服务结点的存储位置,与配置 storage 结点一致
参考修改值
connect_timeout=10
tracker_server=192.168.2.109:22122
url_have_group_name = true
store_path0=/fastdfs/storage/store
7.提供 FastDFS 需要的 HTTP 配置文件
cp /usr/local/fastdfs/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs/FastDFS/conf/mime.types /etc/fdfs/
8.创建 nginx 启动需要的软连接
nginx 启动后,会在默认的/usr/lib64 目录中查找需要的 so 文件。如果在安装 FastDFS时,修改了 make.sh 文件中的 TARGET_PREFIX 参数,则必须创建此软连接
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib64/libfdfsclient.so
9.创建网络访问存储服务的软连接
如果报找不到目录,就创建个/fastdfs/storage/store/data目录
ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00
在上传文件到 FastDFS 后,FastDFS 会返回 group1/M00/00/00/xxxxxxxxxx.xxx。其中group1 是卷名,在 mod_fastdfs.conf 配置文件中已配置了 url_have_group_name,以保证 URL解析正确。而其中的 M00 是 FastDFS 保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。
10.修改 nginx 配置文件
cd /usr/local/nginx/conf
vi nginx.conf
需要修改三处
pid /usr/local/nginx/nginx.pid;
11.启动nginx
禁用防火墙
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service
systemctl list-unit-files |grep firewalld
启动
cd /usr/local/nginx/sbin/
./nginx
查看状态
ps aux|grep nginx
关闭nginx
立即停止服务:这种方法比较强硬,无论进程是否在工作,都直接停止进程。
./nginx -s stop
从容停止服务:这种方法较stop相比就比较温和一些了,需要进程完成当前工作后再停止。
./nginx -s quit
killall 方法杀死进程
直接杀死进程,在上面无效的情况下使用,态度强硬,简单粗暴!
killall nginx
12.验证配置成功
浏览器访问虚拟机ip。
我还有一篇配置静态ip的博客。欢迎到访CentOS配置静态IP
到这里就配置结束了。希望对你有帮助。