这里,我在/usr/local
目录下创建了一个fastDFS目录,然后将官网教程中git下来的目录都放到此目录中。
安装完成后,/etc/fdfs
目录会被自动创建,进入其中,配置tracker。
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
说明:执行这条指令后发现并没有启动成功,一直报Usage:./fdfs_trackerd {start | stop | status | restart | condrestart}
试了各种方法,包括从init.d
里执行fdfs_trackerd
,也并没有成功:
解决:我发现/usr/bin目录中并没有fdfs_trackerd,我之前是将它从/usr/local/fastDFS/fastdfs/init.d中拷贝到/usr/bin中的。解决:将fastDFS安装产生的文件删除干净,然后重装,跟着官方文档重装的时候一定不要输入那些git checkout命令!!!!
重装完之后, /usr/bin目录下就有了fdfs_trackerd。
我进行了2种安装方式的对比,一种是不执行图中的那些git checkout指令,一种是执行了 git checkout,后者安装完之后/usr/bin目录中根本找不到fdfs_trackerd
和fdfs_storaged
!!!
将fastdfs/init.d目录下的fdfs_trackerd
和fdfs_storaged
复制到/usr/bin中,跑起来就会出现Usage:./fdfs_trackerd {start | stop | status | restart | condrestart}
重新安装之后,启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
注意,必须指定配置文件,否则出现 “ERROR - file: shared_func.c, line: 1301, file /usr/bin/start not exist”
进入/etc/fdfs目录配置storage.conf
配置base_path,路径可以跟tracker的一样
配置storage_path
此处是实际存放文件的路径,不建议跟base_path一样。
配置storage的tracker地址
可以配置多个tracker,其中有说明。
启动storaged
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
配置base_path和tracker_server
启动client,上传文件
因为tracker存放文件的位置不是固定的,如果根据tracker返回的文件路径配置nginx的location,那么需要配置无数个location。所以这就需要有一个东西,这个东西可以代替nginx的location功能,在海量的路径中自己去寻找某个文件在具体的哪台机器的哪个位置上。这就是fastdfs-nginx-module
插件
具体的数据通路是:客户端 -> nginx -> 插件 -> tracker -> storage
fastdfs-nginx-module
并配置git clone https://github.com/happyfish100/fastdfs-nginx-module
进行插件配置以连接tracker:
cd fastdfs-nginx-module/src
vim mod_fastdfs.conf
把下面的几个值修改:
注意,端口不要填错,不然到时候启动nginx没有worker进程
下载好nginx压缩包
wget http://nginx.org/download/nginx-1.20.2.tar.gz
tar -zxvf nginx-1.20.2.tar.gz && rm nginx-1.20.2.tar.gz
进入nginx目录
cd nginx-1.20.2
安装 nginx依赖库
yum -y install zlib zlib-devel pcre-devel openssl penssl-devel
配置增加fastdfs插件,这里增加的路径是你插件下的src路径
./configure --add-module=/usr/local/fastDFS/fastdfs-nginx-module/src
然后编译安装nginx
make && make install
安装完之后在/usr/local
目录下自动创建了nginx目录,里面包括配置文件和启动文件
可以打开nginx安装位置的conf
目录,配置nginx,指定nginx日志路径,这样在nginx出错的时候就可以去日志里找问题
添加location,转发客户请求到fdfs模块处理
一定要先启动fdfs服务,再启动nginx,不然会导致nginx没有worker进程。
进入/usr/local/nignx/sbin
目录,启动nginx。然后访问80端口,发现并没有响应。
打开日志文件:
发现/etc/fdfs
目录中mod_fastdfs.conf 不存在。
解决:将 fastdfs-nginx-module/src/mod_fastdfs.conf
拷贝到/etc/fdfs
目录下
再次启动nginx,访问80端口仍然没有反应,这时将fastdfs安装目录下的conf中的这俩拷贝到
/etc/fdfs/
目录下
trackerd
的服务文件 fdfs_trackerd_startup.service
[Unit]
Description=fastDFS tracked server //描述
After=network.target remote-fs.target nss-lookup.target //服务类别
[Service]
Type=forking //后台运行
ExecStart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start //启动命令
ExecReload=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart //重启命令
ExecStop=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop //停止命令
[Install]
WantedBy=multi-user.target //服务安装的相关设置,可设置为多用户
/usr/lib/systemd/system
目录中mv fdfs_trackerd_startup.service /usr/lib/systemd/system
systemctl enable fdfs_trackerd_startup.service
同理,storage
服务和nginx
自启动的配置类似。
不在赘述。