FastDFS与Nginx配合使用的安装和配置

9 篇文章 0 订阅

使用流程

在这里插入图片描述

1.下载fastdfs安装包和依赖包

sourceforge->fastdfs,然后解压。

Django使用FastDFS配置
https://www.cnblogs.com/tianyamoon/p/9426763.html

2. 配置tracker

在这里插入图片描述
base_path 保存信息,日志文件存在这个目录下

3. 配置storage

在这里插入图片描述
启动

/usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf start
/usr/bin/fdfs_storaged  /etc/fdfs/storage.conf start

在这里插入图片描述

4. 安装测试

在这里插入图片描述

netstat -ntlp   //查看当前所有tcp端口·

阿里云服务器连接超时

ERROR - file: connection_pool.c, line: 142, connect to server ip:22122 fail, errno: 110, error info: Connection timed out

经查找,阿里云需要在安全组开启相应服务器端口号
在这里插入图片描述

添加阿里云安全组规则

在这里插入图片描述

上传文件

fdfs_upload_file /etc/fdfs/client.conf filename 

在这里插入图片描述

group1/M00/00/00/L2J-OF44LDCALM7ZAAX65JdV-W4550.png

查看文件存储

在这里插入图片描述

5. nginx配置fastdfs-nginx-module安装

与配置遇见的坑
关闭防火墙、设置安全组后,还是无法访问nginx服务器,可以查看nginx日志查看错误信息
/usr/local/nginx/logs
nginx配置FastDFS 需要挺多配置,查看nginx错误日志 如下
ERROR - file: ini_file_reader.c, line: 631, include file “http.conf” not exists, line: “#include http.conf”
ERROR - file: /home/packages/fastdfs-nginx-module-master/src/common.c, line: 163, load conf file “/etc/fdfs/mod_fastdfs.conf” fail, ret code: 2

找到fastdfs文件目录

解决:# cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/

ERROR - file: shared_func.c, line: 968, file /etc/fdfs/mime.types not exist

解决:# cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/

参考https://blog.csdn.net/l1028386804/article/details/81052533

成功访问nginx
在这里插入图片描述

6.nginx与fastdfs文件系统配合访问:

http://47.98.126.56:8888/group1/M00/00/00/L2J-OF44LDCALM7ZAAX65JdV-W4550.png

在这里插入图片描述

7. Python交互

在这里插入图片描述
settings.py

# 设置Django的文件存储类
DEFAULT_FILE_STORAGE = 'utils.fdfs.storage.FDFSStorage'

# 自定义参数,设置fdfs使用的client.conf文件路径
FDFS_CLIENT_CONF = r'./utils/fdfs/client.conf'

# 自定义参数,设置fdfs存储服务器上nginx的IP和端口号 http://120.236.125.78/
FDFS_URL = 'http://47.98.126.56:8888/'
from django.core.files.storage import Storage
from django.conf import settings
# 由于官方pip提供的fdfs_client-py是Python2.x版本的。所以需要安装课件中提供的fdfs_client-py-master.zip包。
# 另外还需要安装 pip install mutagen 和 pip install requests
from fdfs_client.client import Fdfs_client

class FDFSStorage(Storage):
    """fast dfs文件存储类"""
    def __init__(self, client_conf=None, base_url=None):
        """初始化"""
        if client_conf is None:
            client_conf = settings.FDFS_CLIENT_CONF
        self.client_conf = client_conf

        if base_url is None:
            base_url = settings.FDFS_URL
        self.base_url = base_url

    def _open(self, name, mode='rb'):
        """打开文件时使用"""
        pass

    def _save(self, name, content):
        """保存文件时使用"""
        # name:你选择上传文件的名字
        # content:包含你上传文件内容的File对象

        # 创建一个Fdfs_client对象,传入的路径相对于项目路径开始。
        client = Fdfs_client(self.client_conf)

        # 上传文件到fast dfs系统中
        res = client.upload_by_buffer(content.read())

        # dict
        # {
        #     'Group name': group_name,
        #     'Remote file_id': remote_file_id,
        #     'Status': 'Upload successed.',
        #     'Local file name': '',
        #     'Uploaded size': upload_size,
        #     'Storage IP': storage_ip
        # }
        if res.get('Status') != 'Upload successed.':
            # 上传失败
            raise Exception('上传文件到fast dfs失败')

        # 获取返回的文件ID
        filename = res.get('Remote file_id')

        return filename

    def exists(self, name):
        """Django判断文件名是否可用"""
        return False

    def url(self, name):
        """返回访问文件的url路径"""
        return self.base_url + name

在这里插入图片描述
展示文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="http://47.98.126.56:8888/group1/M00/00/00/L2J-OF45VlqAR9y7AADGU6re_xM3605706">
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值