赞
踩
1.拉取镜像
docker pull morunchang/fastdfs
2.查看镜像
docker images
3.运行tracker
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
4.运行storage
docker run -d --name storage --net=host -e TRACKER_IP=192.168.99.100:22122 -e GROUP_NAME=group1 morunchang/fastdfs sh storage.sh
5.docker ps
6.进入storage容器内容,修改nginx.conf
docker exec -it storage /bin/bash
在server里面添加location
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
7.退出
8.重启storage服务
docker restart storage
#tip
至此以docker形式安装fastdfs完成
后续加入通过安装包搭建fastdfs
1.新建目录,用来存放压缩包
2.下载安装libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
此时目录结构:
解压
tar -zxvf V1.0.7.tar.gz
此时目录结构:
进入libfastcommon-1.0.7目录:
cd libfastcommon-1.0.7
编译、安装:
./make.sh
./make.sh install
创建软链接:
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
3.下载安装fastdfs
先切换到安装目录:
下载fastdfs:
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
此时的目录结构:
解压:
tar -zxvf V5.05.tar.gz
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4Uc8TTZn-1570697645225)(https://www.showdoc.cc/server/api/common/visitfile/sign/02513ed84f915505927107fd487130b7?showdoc=.jpg)]
此时的目录结构:
进入fastdfs-5.05目录:
cd fastdfs-5.05
编译、安装:
./make.sh
./make.sh install
默认的安装方式安装后的文件与目录:
A、服务脚本:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
B、配置文件
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
C、命令工具在/usr/bin/目录下
fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_crc32 fdfs_delete_file fdfs_download_file fdfs_file_info fdfs_monitor fdfs_storaged fdfs_test fdfs_test1 fdfs_trackerd fdfs_upload_appender fdfs_upload_file stop.sh restart.sh
创建软连接:
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
4.配置fastdfs跟踪器(tracker)
进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf:
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim tracker.conf
//开始插入图片1
编辑tracker.conf:
base_path=/fdfs/fastdfs/tracker
http.server_port=80
//开始插入图片2345
创建tracker基础数据目录,即base_path对应的目录:
mkdir -p /fdfs/fastdfs/tracker
//开始插入图片6
防火墙中打开跟踪端口(默认的22122):
vim /etc/sysconfig/iptables
添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
//开始插入图片7
重启防火墙:
service iptables restart
如果报错:
Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.
//开始插入图片8
直接关闭防火墙:
systemctl stop firewalld
//开始插入图片9
启动tracker:
初次成功启动,会在 /fdfs/fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录:
service fdfs_trackerd start
//开始插入图片10
查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功:
netstat -unltp|grep fdfs
//开始插入图片11
关闭Tracker命令:
service fdfs_trackerd stop
设置Tracker开机启动:
chkconfig fdfs_trackerd on
//开始插入图片12
tracker server 目录及文件结构:
Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:
${base_path}
|__data
| |__storage_groups.dat:存储分组信息
| |__storage_servers.dat:存储服务器列表
|__logs
| |__trackerd.log: tracker server 日志文件
5.配置fastdfs存储(storage)
进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf:
cd /etc/fdfs
//开始插入图片13
cp storage.conf.sample storage.conf
//开始插入图片14
vim storage.conf
修改:
base_path=/fdfs/fastdfs/storage
store_path0=/fdfs/fastdfs/file
tracker_server=192.168.247.132:22122
http.server_port=80
IP替换成自己ip。
创建Storage基础数据目录,对应base_path目录:
mkdir -p /fdfs/fastdfs/storage
这是配置的store_path0路径:
mkdir -p /fdfs/fastdfs/file
//开始插入图片15
防火墙中打开存储器端口(默认的 23000):
vim /etc/sysconfig/iptables
添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
//插入图片16
重启防火墙:
启动storage:
启动Storage前确保Tracker是启动的。初次启动成功,会在 /fdfs/fastdfs/storage 目录下创建 data、 logs 两个目录
service fdfs_storaged start
//开始插入图片17
查看 Storage 是否成功启动,23000 端口正在被监听,就算 Storage 启动成功:
netstat -unltp|grep fdfs
//开始插入图片18
关闭Storage命令:
service fdfs_storaged stop
查看Storage和Tracker是否在通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
//开始插入图片19,20
设置 Storage 开机启动:
chkconfig fdfs_storaged on
//开始插入图片21
Storage 目录:
同 Tracker,Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息。
在 store_path0 目录下,创建了N*N个子目录:
//开始插入图片22
6.文件上传测试
修改tracker服务器中的客户端配置文件:
cd /etc/fdfs
cp client.conf.sample client.conf
//开始插入图片23
vim client.conf
修改:
base_path=/fdfs/fastdfs/client
tracker_server=192.168.247.132:22122
新建client目录:
mkdir -p /fdfs/fastdfs/client
上传测试:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.txt
//开始插入图片24
7.安装nginx
安装nginx所需环境:
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
进入安装安装包目录:
下载nginx:
wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
//开始插入图片25,26
解压:
tar -zxvf nginx-1.12.1.tar.gz
//开始插入图片27
进入nginx-1.12.1目录
cd nginx-1.12.1
//开始插入图片28
使用默认配置:
./configure
//开始插入图片29
编译、安装:
make
make install
启动nginx:
cd /usr/local/nginx/sbin/
./nginx
其他命令:
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
设置开机启动:
vim /etc/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
//开始插入图片30
设置执行权限:
chmod 755 rc.local
//开始插入图片31
查看nginx的版本及模块:
/usr/local/nginx/sbin/nginx -V
//开始插入图片32
防火墙中打开Nginx端口(默认的 80):
vim /etc/sysconfig/iptables
添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
//开始插入图片33
重启防火墙:
访问文件:
修改nginx.conf:
vim /usr/local/nginx/conf/nginx.conf
添加如下内容:
location /group1/M00 {
alias /fdfs/fastdfs/file/data;
}
//开始插入图片34
重启nginx:
/usr/local/nginx/sbin/nginx -s reload
//开始插入图片35
在浏览器访问:
http://192.168.247.132/group1/M00/00/00/wKj3hFv6oFSADsdTAAAAAAAAAAA042.txt
成功!!!!!!
8.fastdfs配置nginx模块
进入安装压缩包目录:
下载 fastdfs-nginx-module、解压:
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1 fastdfs-nginx-module-master
//开始插入图片36,37,38,39
配置nginx:
在nginx中添加模块:
先停掉nginx服务:
/usr/local/nginx/sbin/nginx -s stop
//开始插入图片40
进入压缩包目录:
cd nginx-1.12.1/
//开始插入图片41
添加模块:
./configure --add-module=../fastdfs-nginx-module-master/src
重新编译、安装:
make && make install
查看nginx模块:
/usr/local/nginx/sbin/nginx -V
//插入图片42
复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改:
cd /fdfs/fastdfs-nginx-module-master/src/
cp mod_fastdfs.conf /etc/fdfs/
//插入图片43
切换到/etc/fdfs/,修改mod_fastdfs.conf:
修改内容:
connect_timeout=10
tracker_server=192.168.247.132:22122
url_have_group_name=true
store_path0=/fdfs/fastdfs/file
复制 FastDFS 的部分配置文件到/etc/fdfs 目录:
cd /fdfs/fastdfs-5.05/conf
//插入图片44
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
//插入图片45
配置nginx,修改nginx.conf:
vim /usr/local/nginx/conf/nginx.conf
在80端口下添加fastdfs-nginx模块,同时注释掉原来的模块:
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
//插入图片46
添加软连接:
ln -s /fdfs/fastdfs/file/data/ /fdfs/fastdfs/file/data/M00
//插入图片47
启动nginx
/usr/local/nginx/sbin/nginx
//插入图片48
更改文件名后缀:
if ($arg_attname ~* \.(doc|docx|txt|pdf|zip|rar|txt|xls|xlsx|jpg|png)$){
add_header Content-Disposition "attachment;filename=$arg_attname";
}
注:if后面需要添加空格
============================================
当我们拿到一个陌生的安装了fdfs的服务器时,如何去逐步解析分析。
首先我们登陆172.21.0.51,查看项目pod:
kubectl get po -l app=*
之后查看po的配置:
kubectl get po <pod-name> -o yaml
在里面我们可以看到fdfs的tracker server的服务器地址是172.21.0.13
在经过一顿询问后,我们获取了tracker server的密码,登录。。。
首先查看nginx的版本信息
find / -name nginx
得到里面含有sbin的路径,这个路径下是存放了nginx的一些主要配置文件和启动文件
/usr/local/openresty/nginx/sbin/nginx -v
[root@fast1 ~]# /usr/local/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.7.10.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-I/home/azureuser/ngx_openresty-1.7.10.1/build/luajit-root/usr/local/openresty/luajit/include/luajit-2.1 -O2' --add-module=../ngx_devel_kit-0.2.19 --add-module=../echo-nginx-module-0.57 --add-module=../xss-nginx-module-0.04 --add-module=../ngx_coolkit-0.2rc2 --add-module=../set-misc-nginx-module-0.28 --add-module=../form-input-nginx-module-0.10 --add-module=../encrypted-session-nginx-module-0.03 --add-module=../srcache-nginx-module-0.29 --add-module=../ngx_lua-0.9.15 --add-module=../ngx_lua_upstream-0.02 --add-module=../headers-more-nginx-module-0.25 --add-module=../array-var-nginx-module-0.03 --add-module=../memc-nginx-module-0.15 --add-module=../redis2-nginx-module-0.11 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.13 --add-module=../rds-csv-nginx-module-0.05 --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -L/home/azureuser/ngx_openresty-1.7.10.1/build/luajit-root/usr/local/openresty/luajit/lib' --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=/home/azureuser/ngx_openresty-1.7.10.1/../fastdfs-nginx-module-master/src
可以得知该nginx版本号是1.7.10.1,与一些模块依赖
首先判断这与我们的页面请求使用的nginx版本不是一致,这时候就要考虑是否是多台机器集群搭建的fdfs,其次我们可以看到nginx和fdfs的依赖模块的src,进而得到路径,这个路径通常是安装目录。
路径是:
/home/azureuser/ngx_openresty-1.7.10.1/../fastdfs-nginx-module-master/src
我们切换到/home/azureuer目录下发现确实是安装包路径
进行到这一步我们需要找到tracker.conf路径,进而查看某些配置
find / -name tracker.conf
查看配置我们可以得到一些重要信息,比如base_path和http.server-port
接下来我们获取nginx的配置文件nginx.conf
find / -name nginx.conf
[root@fast1 ~]# find / -name nginx.conf
/usr/local/openresty/nginx/conf/nginx.conf
/home/azureuser/ngx_openresty-1.7.10.1/bundle/nginx-1.7.10/conf/nginx.conf
/home/azureuser/ngx_openresty-1.7.10.1/build/nginx-1.7.10/conf/nginx.conf
我们选择/usr目录下的,因为一般来说nginx安装编译后会在/usr目录下
查看nginx.conf
从其中我们可以得知,本fdfs一共配置了两个group,分别分布在不同的服务器上
登录进其中一个服务器,查看,想着几台机子之间应该互通,所以直接ssh 机器名就ok
查看nginx版本,发现与页面请求还是不一致,得知直接与页面-》fdfs关联的nginx并不在该服务器上
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。