centos安装fastdfs

使用docker搭建fastdfs

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并不在该服务器上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章