Python 转化文件编码为 UTF8
使用编译器若遇到文件编码问题,当文件中有中文时,则会出现乱码,会因为编码问题导致各种错误。
所以写了个 python 脚本来检测原文件编码并转换为目标编码,以下代码以目标编码为 utf-8 为例:
需要安装 chardet,详情:https://pypi.python.org/pypi/chardet
使用编译器若遇到文件编码问题,当文件中有中文时,则会出现乱码,会因为编码问题导致各种错误。
所以写了个 python 脚本来检测原文件编码并转换为目标编码,以下代码以目标编码为 utf-8 为例:
需要安装 chardet,详情:https://pypi.python.org/pypi/chardet
新增 .env 文件如下:
HOSTNAME_COMMAND=xxx.xxx.xxx.xxx
其中,xxx.xxx.xxx.xxx
为 服务器 IP 地址。
nginx.conf
文件增加配置如下:
location /group1/M00 {
root /fastdfs/storage/data;
ngx_fastdfs_module;
}
docker-compose.yml
文件如下:
version: '2'
services:
fastdfs-tracker:
hostname: fastdfs-tracker
container_name: fastdfs-tracker
image: season/fastdfs:1.2
network_mode: "host"
command: tracker
volumes:
- ./data/tracker_data:/fastdfs/tracker/data
fastdfs-storage:
hostname: fastdfs-storage
container_name: fastdfs-storage
image: season/fastdfs:1.2
network_mode: "host"
volumes:
- ./data/storage_data:/fastdfs/storage/data
- ./data/store_path:/fastdfs/store_path
environment:
- TRACKER_SERVER=${HOSTNAME_COMMAND}:22122
command: storage
depends_on:
- fastdfs-tracker
fastdfs-nginx:
hostname: fastdfs-nginx
container_name: fastdfs-nginx
image: season/fastdfs:1.2
network_mode: "host"
volumes:
- ./nginx.conf:/etc/nginx/conf/nginx.conf
- ./data/store_path:/fastdfs/store_path
environment:
- TRACKER_SERVER=${HOSTNAME_COMMAND}:22122
command: nginx
需要注意:
命令行测试上传
$ fdfs_upload_file /etc/fdfs/client.conf /home/ant/test
group1/M00/00/00/CqD3YF3kwS-ACYbMAAAAHDDhFHI6820520
命令行测试下载:
$ fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/CqD3YF3kwS-ACYbMAAAAHDDhFHI6820520
http 测试下载:
wget http://xxx.xxx.xxx.xxx/group1/M00/00/00/CmmIP19sbZ6ABzkBAAAXTnaiWqo2684096?filename=testfile
其他容器如需按照域名访问 FastDFS,可增加配置:
web-admin:
container_name: web-admin
extra_hosts:
- "fastdfs.manti-infra.svc:${HOSTNAME_COMMAND}"
报错问题:
[error] 13#0: *1 open() "/etc/nginx/html/group1/M00/00/00/CmmIP19sbZ6ABzkBAAAXTnaiWqo2684096" failed (2: No such file or directory)
修复:修改 nginx.conf 中的 location 配置为:
location/group1/M00/ {
alias /fastdfs/store_path/data;
ngx_fastdfs_module;
}
报错问题:
ERROR - file: ../common/fdfs_global.c, line:52, the format of filename
"group1/M00/00/00/wKgAA1cLh12AI0kfAAAADzbdjmQ50_big.html"is invalid
原因:nginx 的 fdfs 的 MOD 里面默认没有开启 url_have_group_name
修复:开启 mod_fastdfs.conf 文件中的 url_have_group_name 选项,后重启 nginx
/usr/src/fastdfs-nginx-module/src/common.c:21:25:致命错误:fdfs_define.h:没有那个文件或目录
#include "fdfs_define.h"
编译中断。
原因:编译安装 nginx 的 fastdfs 插件的头文件没有找到,由于编译 nginx 时候系统会到/usr/local/include,而编译安装 fastdfs-nginx-module 时则默认保存在了 /usr/include 目录。
修复:ln -s /usr/include/fast* /usr/local/include/
Nginx 启动后 error.log 日志报错
ERROR - file:../storage/trunk_mgr/trunk_shared.c, line: 177, "No such file ordirectory" can't be accessed, error info: /data/fastdfs
原因:nginx 的 fdfs 插件没有在 /etc/fdfs 目录中找到 http.conf 和 mime.types。
修复:复制或者创建对应文件的软连接
cp/usr/local/FastDFS/conf/http.conf /etc/fdfs/
cp/usr/local/FastDFS/conf/mime.types /etc/fdfs/
页面访问动态缩略图返回 415
原因:
如果排除以上两种可能性,那么出现的问题应该是没有在 Nginx 页面的 DocumentRoot 目录创建 FastDFS 数据存储的软连接。
修复:执行下列命令创建软连接:
# mkdir -pv/usr/local/nginx/html/group1
# ln -s /data/fastdfs_store/data/usr/local/nginx/html/group1/M00