Ubuntu 16.04.4 通过docker安装单机fastdfs

前言

很久没有写技术播客了,这是一件很不应该的事情,做完了事情应该有沉淀的。

我先说一点前情提要,公司的fastdfs突然就挂了,做过的操作就是日志文件太大了,所以把日志文件给删了,理论上这个动作应该不影响程序运行才对。

然后tracker怎么都启动不起来了。会报下面这个错误。

file: tracker_service.c, line: 2079, client ip: 47.xxx.xxx.52, group_name: group1, new ip address 172.xxx.xxx.217 != client ip address 47.xxx.xxx.52

我的tracker和storage都部署在同一台服务器上,其中47开头的是同一台服务器的公网IP,172开头的是这台服务器的内网IP。

然后tracker、storage和client的配置文件,我都改过一遍,都改成内网、都改成公网、一个是公网、一个是内网。反正就是不行。

不过我后来在搜索后续答案的过程中有受到一点启发,就是直接改一下host文件,给ip随便分配一个域名,这样后期的配置都用域名,有可能可以解决这个问题。

因为存储的数据都是从其他地方拉取过来的,只是过一个临时的中转,所以,里面的数据丢了也无所谓,于是,我就想,我索性重新再装一个fastdfs好了。

但是fastdfs并不能通过一个命令直接卸载,所以,我直接删除了它相关的各种文件。

但是有可能我删的不是很干净,在我装最新版本fastdfs的时候,编译libserverframe的时候,报下面这个错。

Makefile:59: recipe for target 'fdfs_monitor' failed

搜索了一圈,提到这个问题的人并不多,然后我试了直接从git上clone代码的方式,去git上下载压缩包再解压的方式,都编译不过去。

初步判断是依赖库的版本冲突了,或者有缺失。

这里再提一个题外话,我们在使用make intall命令的时候,应该习惯性加上--prefix参数,配置文件的安装路径,如下:

make install --prefix=/opt/application

如果不配的话,安装后可执行文件默认放在 /usr/local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc,其它的资源文件放在 /usr/local/share

安装一时爽,卸载火葬场。

因为可能原因是版本冲突,然后我现在也卸载不干净了,于是我就想到了docker,docker是另外开辟出来的一个独立的环境,不受当前主环境影响,而且服务器上还有其他正在跑的服务,我也不可能重置服务器。不得不说docker真是一个好东西啊,是哪个小天才发明的。

fastdfs镜像选择

fastdfs并没有提供官方的镜像,所以只能用网友们自主创建的。

https://hub.docker.com/search?q=fastdfs

收藏最多的是一个season的镜像,不过,我看它的版本很老了,好像才1.2版,更新时间也是9年前了。所以我没有用这个,我看到好几篇文章里都用的是delron的镜像,所以我也用的这一个。当然这个也挺老了,6年前更新的。

但我急于解决问题,也没有心思去好好研究和挑选了,总之,亲测它单机好使,使用起来也比较方便,集成了nginx,可以直接通过浏览器访问资源。

镜像的拉取

如果你的这台机器,之前没有用过docker的话,还是一个老生常谈的问题,你很有可能连接超时,然后拉取失败,所以要配置镜像。

如果你还没有安装过docker,也可以先安装一下:

apt install docker.io

修改镜像配置文件 :

 vim /etc/docker/daemon.json

把各种镜像的地址加上(没有缩进的那几个就是):

下面是从网上搜到的镜像:

DaoCloud	https://docker.m.daocloud.io
阿里云 https://<your_code>.mirror.aliyuncs.com(阿里云提供了镜像源:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录后你会获得一个专属的地址)
Docker镜像代理 https://dockerproxy.com
百度云 https://mirror.baidubce.com
南京大学 https://docker.nju.edu.cn
中科院 https://mirror.iscas.ac.cn "https://yxzrazem.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"

来一份示例方便粘贴

{
"registry-mirrors": [
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://ustc-edu-cn.mirror.aliyuncs.com/",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}

重新加载配置,并重启docker:

systemctl daemon-reload
systemctl restart docker

运行docker的tracker服务:

# 先创建文件夹,文件夹随便定义,我这里是为了方便,直接延用了别人播客的定义(其中-p是可以直接创建多级目录)
mkdir -p /mydata/fastdfs/tracker
cd /mydata/fastdfs/tracker
# 执行docker命令
docker run -d --name tracker --network=host -v /mydata/fastdfs/tracker:/var/fdfs delron/fastdfs tracker
# 注意:tracker服务默认的端口为22122

运行docker的storage服务:

# 创建文件夹
mkdir -p /mydata/fastdfs/storage
cd /mydata/fastdfs/storage
# 执行命令
docker run -d --name storage --network=host -e TRACKER_SERVER=x.x.x.x:22122 -v /mydata/fastdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
# 注意:其中TRACKER_SERVER中的ip要修改为你的Tracker服务所在的服务IP地址
# storage默认端口为23000

storage服务中默认安装了nginx,端口为8888

服务测试

1.在/mydata/fastdfs/storage下上传一张图片,1.png

2.进入storage容器,上传图片

# 进入storage容器
docker exec -it storage bash # 进入容器内文件夹
cd /var/fdfs/ #执行上传命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.png

得到文件路径:group1/M00/00/00/rBA12WbOG4OAW8SKAAM9zD7woDQ406.png

3.浏览器访问图片:

http://47.xxx.xxx.52:8888/group1/M00/00/00/rBA12WbOG4OAW8SKAAM9zD7woDQ406.png

能访问,说明上传下载一切正常。

参考(未必全)

https://rqsir.github.io/2019/04/13/linux-make-install的安装与卸载/

https://blog.csdn.net/weixin_50160384/article/details/139861337

https://www.cnblogs.com/likecoke/p/17495358.html

https://www.cnblogs.com/hequanbao/p/17035045.html

https://blog.csdn.net/zhouzaig/article/details/131412872

https://docs.tanmantang.com/docs/docker/FastDFS.html

Linux | Ubuntu 16.04.4 通过docker安装单机FastDFS的更多相关文章

  1. Ubuntu 16.04 python和OpenCV安装

    Ubuntu 16.04 python和OpenCV安装:最进在做深度学习和计算机视觉的有关内容,因此要在python中用到opencv.我的电脑装的是Ubuntu 16.04,python 2.7和 ...

  2. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

  3. 阿里云ECS服务器环境搭建(1) —— ubuntu 16.04 图形界面的安装

    阿里云ECS服务器环境搭建(1) —— ubuntu 16.04 图形界面的安装1. 背景在我们购买阿里云ECS服务器之后,默认的系统环境是很干净的,我购买的是ubuntu16.04,远程登录进入之后 ...

  4. Install .NET Core Runtime on Linux Ubuntu 16.04 x64

    原文链接https://www.microsoft.com/net/download/linux-package-manager/ubuntu16-04/runtime-current nstall ...

  5. Ubuntu 16.04.3 Server 版安装过程图文详解

    Ubuntu 16.04.3 Server 版安装过程图文详解 首先,我们会进入系统安装的第一个界面,开始系统的安装操作.每一步的操作,左下角都会提示操作方式! 1.选择系统语言-English2.选 ...

  6. Linux Ubuntu 16.04 初次安装使用总结zzz

    装了两天的ubuntu系统终于算是勉强能用了,来来回回装了有三四次,期间出了各种各样的毛病.但是还是被我的Google大法给治好了.为了装这个系统,算是耗了两天的时间,啥事情都没干,干耗在这上面了.所 ...

  7. linux Ubuntu 16.04安装 postgresql

    两次的重装系统安装数据库折磨的死去活来. 安装步骤: 1,运行  sudo apt-get update     --这个用来查找数据源 2 ,运行  apt install postgresql  ...

  8. Linux/Ubuntu 16.04 安装编辑器 Sublime Text 3

    在ubuntu 16.04 系统上使用Sublime Text 3 编辑文本还是不错的, 先到官网下载安装包,链接:http://www.sublimetext.com/3 ,下载对应的版本,64位或 ...

  9. Ubuntu 16.04 LTS U盘安装要点

    一.UltraISO UltraISO是一款功能强大而又方便实用的光盘映像文件制作/编辑/转换工具,它可以直接编辑ISO文件和从ISO中提取文件和目录,也可以从CD-ROM制作光盘映像或者将硬盘上的文 ...

  10. Ubuntu 16.04 (官方命令行)安装MongoDB 3.6.2(社区版)

    概述 使用本教程从 .deb 包在LTS Ubuntu Linux系统上安装MongoDB Community Edition. 虽然Ubuntu包含自己的MongoDB包,但官方的MongoDB社区 ...

随机推荐

  1. Elasticsearch tp5使用

    下载elassticsearch和kibana的网址:https://www.elastic.co/cn/downloads/?elektra=home&store=hero 下载Elasti ...

  2. System.NotSupportedException:“无法显式设置 SplitterPanel 的高度。改在 SplitContainer 上设置 SplitterDistance。”

    System.NotSupportedException:"无法显式设置 SplitterPanel 的高度.改在 SplitContainer 上设置 SplitterDistance.& ...

  3. [oeasy]python0144_try的完全体_否则_else_最终_finally

    try的完全体 回忆上次内容   上次细化了主控程序(main.py) 导入(get_fruits.py) 处理(process.py) 输出(output.py)   使用了 try 结构 try ...

  4. 第二章 编译FFmpeg并开启H.264编码

    目录 前言 1. 下载x264 2. 编译x264 3. 编译FFmpeg 3.1 可能出现的问题和解决方法 3.1.1 ERROR: x264 not found using pkg-config ...

  5. JuiceFS 直连 NFS 新功能介绍,赋能 NAS 进行 AI 训练

    NAS 通过提供多用户网络数据存取服务,极大地简化了数据共享和管理.而 NFS 作为实现这种共享的一种主流协议,尽管广泛应用,但在处理复杂的 AI 训练场景时常常受限于其性能和一致性问题. Juice ...

  6. 暑假java自学进度总结02

    一.今日所学: 1.配置环境变量 在系统内配置java路径后,再在path中 利用系统路径配置Java编译工具和运行工具路径. 2.下载并安装Natepad++,并且配置相关设置 3.初步了解了Jav ...

  7. CF941

    A link 其实,只要有第一次,那么下次随意找一个队列里有的数加\(k-1\)个进去,加上队列里那一个删掉\(k\)个,到最后一次肯定是剩\(k-1\)个. 没有第一次,就是\(n\). 点击查看代 ...

  8. 新项目加入mybatisplus,我给自己挖了个坑 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 上述问题的解决办法:1首先看看@mapp ...

  9. 【转载】 图解协程调度模型-GMP模型

    原文地址: https://www.cnblogs.com/codexiaoyi/p/14975236.html =========================================== ...

  10. PEP 703作者给出的一种no-GIL的实现——python3.9的nogil版本

    PEP 703的内容是什么,意义又是什么呢? 可以说python的官方接受的no-GIL提议的PEP就是PEP 703给出的,如果GIL帧的从python中移除那么可以说对整个python生态圈将有着 ...