zoukankan      html  css  js  c++  java
  • pythondjangofastdfs+Nginx的安装和配置_20191122

    python-django-fastdfs+Nginx的安装和配置

    FastDFS文件系统

    FastDFS文件系统简介:

    • 是c语言编写的,是淘宝的架构师写的,存储淘宝的图片,后来开源了,
    • fastDFS架构包括了,tracter server和storage server,tracter server负责管理,storage server负责完成文件上传和下载,
    • tracter server作用是调度
    • storage server作用是文件存储,

    为什么选择这个fastDFS?

    • 我们的项目中为什么选择这个fastDFS?而不使用django提供的,
    • 之前我们保存一个文件通过浏览器上传一个文件,通过django的后台管理页面上传图片,按照我们默认的来说你点击上传,会给django服务器发一个请求,django服务器会默认把图片保存在默认的突破保存路径,media_root,
    • 这样会有一个问题,硬盘的存储空间是有限的,对于一个电商来说图片是很多的,这样存储的图片就会受到django服务器所在硬盘容量的限制,所以电商网站,保存图片的时候就不能保存在django的服务器,要有一个单独的文件存储服务器,这里的文件存储服务器我们就选择了fastDFS,
    • 还有一个特点,
    • 用户a,上传一个123.txt,storage保存的时候不是就是这个文件名,而是对文件的内容取hash值,这是唯一值的,我们叫做文件的指纹,我们可以通过hash值唯一确定一个文件,再根据storage的ip等信息合成一个文件的名字,返回客户A,
    • 用户b,上传了一个同样的文件,storage保持的时候会发现这个文件存在一个同样的文件,就不会把这个文件内容再保存一次了,就直接把文件对应的名字给你返回,所以同一个文件只存储了一份,
    • fastDFS的优点:
    • 解决了海量存储的问题,
    • 存储容量扩展方便,只需要加storage服务就可以了,
    • 解决了文件存储重复的文件,
    • 这就是百度云的实现原理,就是对文件取指纹,所以百度云里面的5个T,是和别人共有的,

    FastDFS文件系统上传文件流程:

    • 流程描述:
    • 通过客户端往fastDFS上传一个文件,
    • 客户端去请求tracter server,tracter server它管理着storage server,
    • storage server可以是一个集群,可以有很多,tracter server也可以是集群,
    • tracter server它回去找到一个storage server存你的图片,
    • 然后tracter server会把图片对应的storage地址ip和端口号,返回给客户端,
    • 这样客户端就知道我的图片上传到哪里了,有了storage的ip和端口号,
    • 客户端就会把文件上传到对应的storage位置,storage server保存文件之后会生成一个fileID会给客户端返回一个文件的名字,这就上传成功了。

    fastDFS文件系统下载文件的流程:

    • 文件下载流程:
    • 客户端向去请求tracter server,然后tracter server看一下这个要下载的文件在哪个storage server上面,然后返回给客户端storage的ip和端口号,
    • 有了storage的ip和端口号,客户端就会直接找对应的 storage 去获取对应的文件, storage server把文件返回给客户端,

    fastDFS的安装和配置:

    • 所需要的安装包:
    • 搭建一个FastDFS环境,并增加Nginx模块
    • 所用软件:
    • fastdfs-master.zip
    • fastdfs-nginx-module-master.zip
    • fdfs_client-py-master.zip
    • libfastcommon-master.zip
    • nginx-1.8.1.tar.gz
    • 这些软件我都放在了/usr/local/src

      1,安装libfastcommon-master.zip

    • cd /usr/local/src
    • sudo unzip libfastcommon-master.zip
    • cd libfastcommon-master
    • sudo  ./make.sh     
    • sudo ./make.sh install

      2,安装:fastdfs-master.zip

    • cd /usr/local/src
    • sudo unzip fastdfs-master.zip
    • cd fastdfs-master
    • sudo ./make.sh
    • sudo ./make.sh install

      3,配置跟踪服务器tracker,

    • sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
    • /home/andy/fastdfs/tracker,创建这样的文件目录
    • 编辑配置文件, sudo vi /etc/fdfs/tracker.conf
    • 修改配置内容:base_path=/home/andy/fastdfs/tracker

      4,配置存储服务器storage:

    • cd /etc/fdfs
    • sudo cp ./storage.conf.sample  ./storage.conf
    • /home/andy/fastdfs/storage,创建这样的文件目录
    • 编辑配置文件, sudo vi /etc/fdfs/storage.conf
    • 修改配置文件:base_path=/home/andy/fastdfs/storage
    • store_path0=/home/andy/fastdfs/storage
    • tracker_server=192.168.100.128:22122

    fastDFS的启动:

      1,启动tracker service

    • 启动命令首选这个
    • sudo service fdfs_trackerd start
    • sudo service fdfs_storaged start

    报错了:

    Job for fdfs_trackerd.service failed because the control process exited with error code. See "systemctl status fdfs_trackerd.service" and "journalctl -xe" for details.

    FDFSX跟踪服务器的作业失败,因为控制过程退出了错误代码。有关详细信息,请参阅“systemctl status fdfs_trackerd.service”和“journalctl-xe”。

    使用另外的启动方法:

    • 1、启动服务:
    • #启动tracker server
    • sudo fdfs_trackerd /etc/fdfs/tracker.conf start
    • #启动storage server
    • sudo fdfs_storaged /etc/fdfs/storage.conf start
    • 输入ps -aux |grep fdfs,能看到服务已经启动了,
    • root 3488 0.0 0.1 147760 1288 ? Sl 21:50 0:00 fdfs_trackerd /etc/fdfs/tracker.conf start
    • root 3511 0.0 0.2 84356 2928 ? Sl 21:51 0:00 fdfs_storaged /etc/fdfs/storage.conf start

    fastDFS的测试安装是否成功:

    • 需要一个安装的客户端,所以我们需要把客户端的配置文件复制一份
    • cd /etc/fdfs/
    • sudo cp ./client.conf.sample ./client.conf
    • 编辑这个配置文件,sudo vi client.conf
    • base_path=/home/andy/fastdfs/tracker
    • tracker_server=192.168.100.128:22122

      上传文件测试:

    • 安装完了fastdfs之后,fast给你提供了一个上传文件的命令,fdfs_upload_file
    • Usage: fdfs_upload_file <config_file> <local_filename> [storage_ip:port] [store_path_index]
    • 在桌面新建一个图片文件,fastfds.png
    • 进入桌面路径,cd /home/桌面/
    • 执行命令,/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ./fastfds.png
    • 返回一个码:group1/M00/00/00/wKhkgF3WnFeAOZaTAAV_23Ar72I345.png,这就是系统里面保持的文件id
    • 文件就保持在这个路径,这是我们配置的路径,/home/andy/fastdfs/storage/
    • 到这里就是这个fastdfs就是可以用的了

    Nginx配合fastdfs的安装和配置:

    • fastdfs用户量比较大的时候,获取数据是比较慢的,我们需要借助一个工具,就是Nginx,这也是一个web服务器,
    • 可以配合fastdfs使用,在提供静态文件方面,效率很高,请求比较大的时候,能抗住压力,
    • 上传文件我们使用fastdfs,但是获取文件的时候我们就借助Nginx了,
    • 需要两个包:
    • 我自己是把包放到了/usr/local/src
    • nginx-1.8.1.tar.gz
    • fastdfs-nginx-module-master.zip
    • 一共安装两个包
    • 安装步骤:
    • 1,解压这个包:nginx-1.8.1.tar.gz,,,, sudo tar -zxvf nginx-1.8.1.tar.gz 
    • 2,解压这个包:fastdfs-nginx-module-master.zip,,,,sudo unzip fastdfs-nginx-module-master.zip
    • 3,进入这个目录:cd nginx-1.8.1/
    • 4,sudo ./configure --prefix=/usr/local/nginx/ --add-module=/usr/local/src/fastdfs-nginx-module-master/src
    • --prefix,这是安装的时候的目录,
    • --add-module,这是模块的绝对路径,
    • 5,make,
    • 报错了
    • make: *** No rule to make target 'build', needed by 'default'。 停止。
    • 解决方案:
    • 安装openssl,安装包我自己放在了/usr/local/src下面了,
    •  tar -zxvf openssl-1.1.0j.tar.gz,只是解压就可以了,
    • 安装:zlib,安装包我自己放在了/usr/local/src下面了,
    • tar -zxvf zlib-1.2.11.tar.gz
    • cd zlib-1.2.11
    • ./configure
    • make
    • sudo make install
    • 安装pcre,安装包我自己放在了/usr/local/src下面了,
    • tar -zxvf pcre-8.35.tar.gz
    • cd pcre-8.35
    • ./configure
    • make
    • sudo make install
    • 重新进入这个目录:cd /usr/local/srcnginx-1.8.1/
    • 执行:sudo ./configure --prefix=/usr/local/nginx/ --with-openssl=/usr/local/src/openssl-1.1.0j --with-pcre=/usr/local/src/pcre-8.35 --with-zlib=/usr/local/src/zlib-1.2.11 --add-module=/usr/local/src/fastdfs-nginx-module-master/src
    • 6,继续执行sudo make
    • 又报错了:
    • error: ‘FDFSHTTPParams {aka struct <anonymous>}’ has no member named ‘support_multi_range’
    • (pContext->range_count > 1 && !g_http_params.support_multi_range))
    • 下载另外一个模板版本:命名为:FastDFS-nginx-master-test.zip,安装包我自己放在了/usr/local/src下面了,
    • 解压这个问题,
    • 重新进入这个目录:cd /usr/local/srcnginx-1.8.1/
    • 执行:sudo ./configure --prefix=/usr/local/nginx/ --with-openssl=/usr/local/src/openssl-1.1.0j --with-pcre=/usr/local/src/pcre-8.35 --with-zlib=/usr/local/src/zlib-1.2.11 --add-module=/usr/local/src/fastdfs-nginx-module-test/src
    • 好了不报错了
    • 7,sudo make install
    • 成功了!!!我安装在了cd /usr/local/nginx/这个目录

     Nginx的配置

    • 进入目录:/usr/local/src/fastdfs-nginx-module-test/src
    • 拷贝一份,sudo cp mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
    • 进入目录cd /etc/fdfs/
    • 编辑配置文件:sudo vi mod_fastdfs.conf
    • 几个地方,到时候看视频,或者找教程,这里不写了,
    • 进入目录:/usr/local/src/fastdfs-5.05/conf
    • 然后复制两个文件:
    • sudo cp http.conf /etc/fdfs/http.conf
    • sudo cp mime.types /etc/fdfs/mime.types
    • 再进入:/usr/local/nginx/conf
    • 修改配置文件,sudo vi nginx.conf

    Nginx的启动:

    • 启动Nginx,进入:/usr/local/nginx/sbin,输入命令,sudo ./nginx
    • nginx启动报错:error while loading shared libraries
    • 查看依赖库,这依据是非常很重要的,ldd $(which /usr/local/nginx/sbin/nginx)
    • 先看看pcre有没有安装:pcre-config --version       如果安装了 会显示版本 没安装就啥都没有,我安装了,
    • 我知道了版本的问题:fastdfs-master
    • 关闭Nginx 
    • 又出了问题了:’关于Nginx启动成功,浏览器不能访问的解决办法,报404错误,
    • 原来是一个配置的问题,就是
    • listen 8888;
    • server_name localhost;
    • location ~/group([0-9])/ {
    • root /fastdfs/storage/data;
    • ngx_fastdfs_module;
    • }
    • ~这个,写成了-,了
    • 关闭进程:
    • sudo kill -9 进程号, 

    #########################################################

    [-] Error: 10060 connect to 192.168.100.128:22122. 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。.

     使用Windows中的pycharm的访问fastdfs的时候的,还是端口的问题

    Ubuntufang防火墙的问题:

    执行命令:开放端口,

    • sudo apt-get install iptables
    • sudo iptables -I INPUT -p tcp --dport 22122 -j ACCEPT
    • sudo iptables -I INPUT -p tcp --dport 23000 -j ACCEPT
    • sduo iptables-save

    果然就是这个问题,哈哈哈哈!!!!!

  • 相关阅读:
    前端自动化gulp使用方法
    npm 如何提升最新版本
    AJAX——理解XMLHttpRequest对象
    免插件,简单实现上拉加载loading
    mobiscroll实现二级联动菜单
    js点击页面其他地方如何隐藏div元素菜单
    gulp自动化构建工具使用总结
    如何优雅的选择字体(fontfamily)
    js如何判断用户使用的设备类型及平台
    ant 软件包 javax.servlet.http 不存在 解决办法
  • 原文地址:https://www.cnblogs.com/andy0816/p/11911048.html
Copyright © 2011-2022 走看看