fastdfs/docker/dockerfile_local-v6.0.9/fastdfs自定义镜像和安装手册.txt

164 lines
8.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 创建镜像
参考:
https://github.com/qbanxiaoli/fastdfs/blob/master/Dockerfile
https://github.com/ygqygq2/fastdfs-nginx/blob/master/Dockerfile
# docker build -t lyj/fastdfs:6.09-alpine .
# docker save a3f007114480 -o /data/docker_images/lyj-fastdfs-6.09-alpine.tar
# docker load -i /data/docker_images/lyj-fastdfs-6.09-alpine.tar && docker tag a3f007114480 lyj/fastdfs:6.09-alpine
# docker build -t lyj/fastdfs:6.08-alpine .
# docker save 646a2c0265ca -o /data/docker_images/lyj-fastdfs-6.08-alpine.tar
# docker load -i /data/docker_images/lyj-fastdfs-6.08-alpine.tar && docker tag 646a2c0265ca lyj/fastdfs:6.08-alpine
备注可以使用centos基础镜像。
### 一、tracker 部署
实现互备两台tracker就够了生产环境中注意更换端口
>[danger]推荐使用 setting_conf.sh.sh 来设置配置文件的参数打开改脚本修改tracker\storage的主要参数
```bash
1、创建宿主机挂载目录
# mkdir -p /data/docker/fastdfs/tracker/{conf,data} #conf为tracker配置文件目录data为tracker基础数据存储目录
2、tracker 配置文件
+ 我挂载的配置文件目录,将部署操作说明书\fastdfs-conf\conf中的所有配置文件上传到服务器tracker只用到tracker.conf和storage_ids.conf其他文件不用管。
+ 使用 ID 取代 ip作为storage server的标识强烈建议使用此方式例如方便今后的迁移。use_storage_id = false 改为true 并在storage_ids.conf填写所有storage的id、所属组名ip
+ 为了安全可限定连接到此tracker的ip 范围默认是allow_hosts = *
+ reserved_storage_space storage为系统其他应用留的空间可以用绝对值10 G或10240 M或者百分比V4开始支持百分比方式网友说“最小阀值不要设置2%(有坑设置5%可以”。
## 同组中只要有一台服务器达到这个标准了,就不能上传文件了
## no unit for byte(B) 不加单位默认是byte例如2G=2147483648bytereserved_storage_space = 2147483648byte
## 经实践6.08版本配置百分比可以绝对值不加单位默认byte可以绝对值加单位报错v6.0.9中修复了) ERROR - file: shared_func.c, line: 2449, unkown byte unit: MB, input string: 10240 MB
## 预留空间配置为绝对值,数值和单位之间不能有空格。
...请阅读参数说明,调优其他参数
3、启动tracker容器
# docker run -d --net=host --restart=always --name=tracker \
-v /etc/localtime:/etc/localtime \
-v /data/docker/fastdfs/tracker/data:/data/fastdfs_data \
-v /data/docker/fastdfs/tracker/conf:/etc/fdfs \
-d lyj/fastdfs:6.09-alpine tracker
docker run -d --net=host --restart=always --name=ttmp \
-d lyj/fastdfs:6.09-alpine tracker
4、防火墙中打开tracker端口默认的22122生产环境中注意更换端口
# firewall-cmd --zone=public --add-port=22122/tcp --permanent
# firewall-cmd --reload
```
>去除注释和空行egrep -v "#|^$" /data/docker/fastdfs/tracker/conf/fdfs/tracker.conf >/data/docker/fastdfs/tracker/conf/fdfs/tracker.conf.bak
### 二、storage 部署
+ fastdfs 约定:`同组内的storage server端口必须一致建议挂载存储目录个数、路径要相同`
+ 为了互相备份一个group内有两台storage即可
+ fastdfs 镜像 已封装了 nginx\fastdfs扩展模块 作为web服务向外提供http文件访问
```bash
1、创建宿主机挂载目录
# mkdir -p /data/docker/fastdfs/storage/{conf,metadata,nginx_conf,nginx_conf.d} #conf存放storge配置文件metadata为storage基础数据
# mkdir -p /data/docker/fastdfs/upload/{path0,path1,path2,path3} #存储上传的文件,当有多块硬盘时,挂载到相应目录上即可 /data/fastdfs/upload/path0~n
```
>[danger]推荐使用 conf_setting.sh 来设置配置文件的参数
```bash
2、配置文件我挂载的是目录因此将fastdfs-conf\的所有配置文件上传到服务器
用到的配置文件storage.confstorage配置文件mod_fastdfs.confhttp文件访问的扩展模块的配置文件nginx_conf/nginx.conf 与 nginx_conf.d/default.confnginx的配置文件
配置文件需要调整的主要参数:
1. storage.conf
group_name = group1 # 指定storage所属组
base_path = /data/fastdfs_data # Storage 基础数据和日志的存储目录
store_path_count = 1 # 上传文件存放目录的个数
store_path0 = /data/fastdfs/upload/path0 # 逐一配置 store_path_count 个路径,索引号基于 0。
tracker_server = 172.16.100.90:22122 # tracker_server 的列表 ,有多个时,每个 tracker server 写一行
allow_hosts = * ## 允许连接本storage server的IP地址列表为了安全期间可以设置。
2. mod_fastdfs.conf
tracker_server = 172.16.100.90:22122 # tracker服务器的IP地址以及端口号多个时每个tracker server写一行
storage_server_port = 23000 # 本地storage的端口号fastdfs约定"同组下的storage端口必须一致"
group_name = group1 # 本地storage的组名
url_have_group_name = true # url中是否有group名默认是false这个参数必须正确设置否则文件不能被下载到
store_path_count = 1 # 本地storage的存储路径个数必须和storage.conf中的配置一样
store_path0 = /data/fastdfs/upload/path0 #本地storage的存储路径必须和storage.conf中的配置一样
## 如果在此存储服务器上支持多组时有几组就设置几组。单组为0.
## 通常一台机器运行一个storage就行没有必要运行多个group的storage因为stroage本身支持多存储目录的
## 使用docker 一个容器运行一个storage此处就不用管了
group_count = 0
#[group1]
#group_name=group1
#storage_server_port=23000
#store_path_count=1
#store_path0=/data/fastdfs/upload/path0
```
```bash
3. http.conf 当需要开启token时更改此文件
4. mime.types 资源的媒体类型,当文件的后缀在此文件中找不到时,需要添加。
5. client.conf 当需要使用fastdfs自带的客户端时更改此文件
tracker_server = 172.16.100.90:22122
6. nginx_conf.d/default.conf
# 将http文件访问请求反向代理给扩展模块
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
# location ~ /group1/M00 {
# alias /data/fastdfs/upload/path0;
# ngx_fastdfs_module;
# }
```
```bash
3、启动 storage 容器
# docker run -d --net=host --restart always --name=storage1_1 \
--privileged=true \
-v /etc/localtime:/etc/localtime \
-v /data/docker/fastdfs/storage/metadata:/data/fastdfs_data \
-v /data/docker/fastdfs/storage/conf:/etc/fdfs \
-v /data/docker/fastdfs/upload:/data/fastdfs/upload \
-v /data/docker/fastdfs/storage/nginx_conf/nginx.conf:/usr/local/nginx/conf/nginx.conf \
-v /data/docker/fastdfs/storage/nginx_conf.d:/usr/local/nginx/conf.d \
-d lyj/fastdfs:6.09-alpine storage
防火墙中打开storage服务端口默认的23000生产环境中注意更换端口nginx的端口9088
# firewall-cmd --zone=public --add-port=23000/tcp --permanent
# firewall-cmd --zone=public --add-port=9088/tcp --permanent
# firewall-cmd --reload
4、 查看下集群运行状态
# docker exec -it storage1_1 sh
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
文件访问http://172.16.100.90:9088/group1/M00/00/00/oYYBAGMi4zGAYNoxABY-esN9nNw502.jpg
```
文件上传demo《E:\gitplace\springboot-fastdfs》
5、nginx 日期定期切分和过期清理
生产环境中一般会在storage nginx前再加一层代理我这里设置access_log off; 不记录日志了,调试时可以打开。
...
6、http 文件访问 负载入口高可用
nginx + keepalived
nginx反向代理storage文件的配置:《E:\工具箱\08. docker\3.docker_container_install\nginx\lvs-webpage-api-ossdefault.conf》
7、扩展增加storage
1. 若使用了storage_ids.conf则需要修改所有的tracker的storage_ids.conf填写一行 storage id注意奥"要重启tracker才能生效"。
2. storage 部署,见上面。
8、使用shell脚本调client 删除历史文件