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

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

python-django-fastdfs+Nginx的安装和配置_20191122的更多相关文章

  1. python django uwsgi nginx安装

    python django uwsgi nginx安装 已安装完成python/django的情况下安装 pip install uwsgi cd /usr/share/nginx/html/ vim ...

  2. nginx的安装与配置

    1.nginx的安装与配置 编译安装nginx需要实现安装开发包组“Development tools”和“Server Platform Development”.“Desktop Platform ...

  3. Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)

    梳理下这几个的关系: centos是redhat的社区版操作系统. Python2.7.5是开发语言(centos6.5下自带的python是2.6.6版本,所以需要源码更新,而centos7.1下面 ...

  4. python+django+wusgi+nginx安装部署

    基于centos搭建nginx+uwsgi运行django环境 环境: CentOS 7 nginx/1.9.12 Python 2.7.5 一:安装依赖包5 yum install zlib-dev ...

  5. centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置

    前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...

  6. Python+django+uWSGI+Nginx

    Python3.5+Django+uWSGI 安装Django pip3.5 install django 安装 uWSGI pip install uwsgi 新建 django_wsgi.py # ...

  7. django+vue+nginx生产环境部署配置

    部署环境: 1. linux redhat 7.1 2.python 3.6.3 3. vue 4. nginx 5. gunicorn 6. supervisord 安装: 一. 基础环境安装 1. ...

  8. CentOS6.2下fastDFS的完整安装和配置步骤

    centos6.2系统下安装配置FastDFS步骤: 1:安装libevent(libevent-2.0.16-stable) ##卸载系统自带libevent rpm -qa|grep libeve ...

  9. django(1)安装及配置

    1.版本选择 Django 1.5.x 支持 Python 2.6.5 Python 2.7, Python 3.2 和 3.3. Django 1.6.x 支持 Python 2.6.X, 2.7. ...

随机推荐

  1. Linux高性能服务器编程:高性能服务器程序框架

    服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴 ...

  2. maxima安装&使用

    环境: mint 19 或者 > ubuntu 18 源代码安装的好处, 可以使用最新版. mint 19.1 下面, 利用apt 直接安装的maxima版本太老,不支持 draw 函数. lo ...

  3. P(Y=y|x;θ)表示什么意思

    https://blog.csdn.net/jh1137921986/article/details/88999539 在机器学习中,特别是学习到关于概率/似然估计方面的内容,经常看到类似P(Y=y| ...

  4. 磁盘报No space left on device,但是 df -h 查看磁盘空间没满

    df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/dev01-root 75G 58G 14G 82% / udev 2.0G ...

  5. vue验证时间范围

    验证时间范围 type="daterange" <DatePicker class="formItem" :size="size" v ...

  6. 1 PHP 5.3中的新特性

    1 PHP 5.3中的新特性 1.1 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符 ...

  7. Python与mongo交互

    # 导入模块 import pymongo # 连接MongoDB数据库 conn = pymongo.MongoClient('localhost', 27017) # 建库 db = conn.g ...

  8. java去掉数字后面的0

    有些财务业务场景是需要把数字多余的0去掉的. 可以这么写 private String getRealData(BigDecimal num) { if (num == null) { return ...

  9. windows系统下的渗透测试神器 -pentestbox

    Pentestbox介绍 PentestBox官网:https://pentestbox.org/zh/ 这是一个运行在windows环境下的终端,集成了绝大部分渗透测试所需要的环境 如python2 ...

  10. PAT甲级——1152.Google Recruitment (20分)

    1152 Google Recruitment (20分) In July 2004, Google posted on a giant billboard along Highway 101 in ...