python-django-fastdfs+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
果然就是这个问题,哈哈哈哈!!!!!
python-django-fastdfs+Nginx的安装和配置_20191122的更多相关文章
- python django uwsgi nginx安装
python django uwsgi nginx安装 已安装完成python/django的情况下安装 pip install uwsgi cd /usr/share/nginx/html/ vim ...
- nginx的安装与配置
1.nginx的安装与配置 编译安装nginx需要实现安装开发包组“Development tools”和“Server Platform Development”.“Desktop Platform ...
- Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)
梳理下这几个的关系: centos是redhat的社区版操作系统. Python2.7.5是开发语言(centos6.5下自带的python是2.6.6版本,所以需要源码更新,而centos7.1下面 ...
- python+django+wusgi+nginx安装部署
基于centos搭建nginx+uwsgi运行django环境 环境: CentOS 7 nginx/1.9.12 Python 2.7.5 一:安装依赖包5 yum install zlib-dev ...
- centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置
前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...
- Python+django+uWSGI+Nginx
Python3.5+Django+uWSGI 安装Django pip3.5 install django 安装 uWSGI pip install uwsgi 新建 django_wsgi.py # ...
- django+vue+nginx生产环境部署配置
部署环境: 1. linux redhat 7.1 2.python 3.6.3 3. vue 4. nginx 5. gunicorn 6. supervisord 安装: 一. 基础环境安装 1. ...
- CentOS6.2下fastDFS的完整安装和配置步骤
centos6.2系统下安装配置FastDFS步骤: 1:安装libevent(libevent-2.0.16-stable) ##卸载系统自带libevent rpm -qa|grep libeve ...
- 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. ...
随机推荐
- 给adobe acrobat reader 添加图片注释
首先展示一下 我添加注释的结果, 下面是我的做法: 在Adobe Acrobat 中打开Sample.pdf文档,点开文档右边的“工具”-“内容”-选择“编辑对象”,鼠标光标变成实心箭头+右下角小方 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL UNION 操作符
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多个 SELECT 语句会删除重复的数据. 语法 MySQL UNION 操作符语法格式: SELECT ...
- Unix网络编程学习 < 一 >
#include "unp.h" int main(int argc , char**argv) { int sockfd , n; //sockfd套接字描述符 ]; struc ...
- 寒假day12
今天写了一点论文,刷了一些算法题
- Java学习十六
学习内容: 1.做毕设 2.Java异常类 3.Java包装类 1.System.exit(1):终止程序运行,终止final执行方法 2.throws抛出异常类型,throw抛出异常对象 用法:th ...
- Django2.0——请求与响应(上)
客户端与服务段通过http协议进行数据的传输,而http协议是一种双向单工的,且主动发起连接的只有客户端.故数据的传送就离不开请求和响应,客户端每发起一个请求,服务端就是返回一个响应.在django的 ...
- eclipse使用jetty服务器
1.安装Eclipse Jetty插件: 2.下载jetty(9.4.6): 3.配置jetty运行设置: 右键项目 run configurations,选择jetty webapp,新建项目. c ...
- java 的HashMap底层数据结构
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据 ...
- Java线程——线程习题(二)生成者消费者
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据. 这里实现如下情况的生产--消费模型: 生产者不断交替地生产两组数据“姓 ...
- c语言中对指向指针的指针的理解?
/************************************************************************* > File Name: ptr_to_pt ...