1. 确保Linux联网,我这里使用的是CentOS7操作,联网教程 https://www.cnblogs.com/taopanfeng/p/10978752.html

  2. 先把指定的四个文件放入指定目录

    安装所需的插件
    yum -y install vim wget zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl net-tools unzip iptables iptables-services 防火墙最容易出错,我们先关闭防火墙,这一点尤为重要,我已采坑~~~
    chkconfig iptables off 创建目录,用于存放文件
    mkdir /usr/local/panfeng 进入创建好的目录
    cd /usr/local/panfeng/ 依次执行下面文件,下载数据
    wget http://ncu.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
    wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
    wget http://nginx.org/download/nginx-1.10.1.tar.gz
    wget https://codeload.github.com/happyfish100/libfastcommon/zip/master -O libfastcommon.zip 也可以,利用工具把四个文件传到/usr/local/panfeng/下
    所需文件:
    fastdfs-nginx-module_v1.16.tar.gz
    FastDFS_v5.08.tar.gz
    nginx-1.10.1.tar.gz
    libfastcommon.zip 文件地址,百度网盘:
    链接:
    https://pan.baidu.com/s/12t-T4wk-q9jpnp948pM3Zw
    提取码:
    xi4y
  3. 安装libfastcommon-master,依次执行以下命令

    进入目录
    cd /usr/local/panfeng/ 解压zip文件
    unzip libfastcommon.zip 进入到解压后的目录
    cd libfastcommon-master/ 编译
    ./make.sh 安装
    ./make.sh install
  4. 安装FastDFS

    • 进入目录
      cd /usr/local/panfeng/ 解压文件
      tar -zxvf FastDFS_v5.08.tar.gz 进入解压后的目录
      cd /usr/local/panfeng/FastDFS 编译
      ./make.sh 安装
      ./make.sh install
    • 如果安装成功,执行下面命令会看到/etc/init.d/下看到提供的脚本文件
      ll /etc/init.d/ | grep fdfs

      fdfs_storaged 是storage启动脚本

      fdfs_trackerd 是tracker启动脚本

    • 执行下面命令能够在 /etc/fdfs/ 目录下看到默认的配置文件模板
      ll /etc/fdfs/

      tarcker.conf.sample是tracker的配置文件模板

      storage.conf.sample是storage的配置文件模板

      client.conf.sample是客户端的配置文件模板

  5. 配置并启动tarcker服务,依次执行下面命令

    将模版文件复制,复制的时候把.sample去掉就是配置文件了
    cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf 修改复制后的配置文件
    vim /etc/fdfs/tracker.conf 修改存储日志和数据的根目录,把 base_path=/home/yuqing/fastdfs 改为 base_path=/panfeng/tracker
    按 I 插入 编写完成后按Esc 输入:wq 保存退出 新建目录
    mkdir -p /panfeng/tracker 启动服务,如果要停止把start换成stop
    service fdfs_trackerd start 检查FastDFS Tracker Server是否启动成功
    ps -ef | grep fdfs_trackerd 设置tracker服务开机启动
    chkconfig fdfs_trackerd on

  6. 配置并启动storage服务,依次执行下面命令

    首先将模板文件复制
    cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf 修改复制后的配置文件
    vim /etc/fdfs/storage.conf 修改的内容如下:
    把41行 base_path=/home/yuqing/fastdfs 改为 base_path=/panfeng/storage
    把109行 store_path0=/home/yuqing/fastdfs 改为 store_path0=/panfeng/storage
    把119行 tracker_server=192.168.209.121:22122 改为 tracker_server=192.168.1.104:22122 这里我的虚拟机ip为192.168.1.104
    按 I 插入 编写完成后按Esc 输入:wq 保存退出 新建目录
    mkdir -p /panfeng/storage 启动服务,如果要停止把start换成stop
    service fdfs_storaged start 设置storage服务开机启动
    chkconfig fdfs_storaged on 检查storage服务是否启动成功
    ps -ef | grep fdfs

  7. 为什么需要用Nginx访问?

    FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。
    
    假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,
    在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。 而fastdfs-nginx-module可以重定向文件连接到文件上传时的源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误
  8. 安装fastdfs-nginx-module

    进入目录
    cd /usr/local/panfeng/ 解压
    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz 进入src目录
    cd /usr/local/panfeng/fastdfs-nginx-module/src/ 编辑config
    vim config 使用以下底行命令,将所有的/usr/local替换为 /usr,这个才是正确的目录:
    :%s+/usr/local/+/usr/+g
    输入 :%s+/usr/local/+/usr/+g 回车进行替换,再输入:wq 保存退出
  9. 配置nginx与FastDFS关联配置文件

    复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录
    cp /usr/local/panfeng/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 修改复制好的文件
    vim /etc/fdfs/mod_fastdfs.conf 修改以下配置:
    客户端访问文件连接超时时长(单位:秒),把3行 connect_timeout=2 改为 connect_timeout=20
    tracker服务IP和端口,把40行 tracker_server=tracker:22122 改为 tracker_server=192.168.1.104:22122 这里我的虚拟机ip为192.168.1.104
    访问链接前缀加上组名,把53行 url_have_group_name = false 改为 url_have_group_name = true
    文件存储路径,把62行 store_path0=/home/yuqing/fastdfs 改为 store_path0=/panfeng/storage
    按 I 插入 编写完成后按Esc 输入:wq 保存退出 进入到/etc/fdfs 目录
    cd /usr/local/panfeng/FastDFS/conf/ 复制 FastDFS 的部分配置文件到/etc/fdfs 目录
    cp http.conf mime.types /etc/fdfs/
  10. 安装Nginx的插件

    进入目录
    cd /usr/local/panfeng/ 解压安装包
    tar -zxvf nginx-1.10.1.tar.gz 进入目录
    cd /usr/local/panfeng/nginx-1.10.1 配置nginx安装包,并指定fastdfs-nginx-model
    ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/panfeng/fastdfs-nginx-module/src/ 编译并安装
    make && make install
  11. 启动Nginx

    • 配置nginx整合fastdfs-module模块,需要修改nginx配置文件,在/opt/nginx/config/nginx.conf文件中
      vim /opt/nginx/conf/nginx.conf
    • 将文件中,原来的`server 80{ ...}` 部分代码替换为如下代码
          server {
      listen 80;
      server_name image.panfeng.com; # 监听域名中带有group的,交给FastDFS模块处理
      location ~/group([0-9])/ {
      ngx_fastdfs_module;
      } location / {
      root html;
      index index.html index.htm;
      } error_page 500 502 503 504 /50x.html;
      location = /50x.html {
      root html;
      }
      }
    • 启动nginx
      nginx 查询nginx是否启动成功
      ps -ef|grep nginx
    • 设置Nginx开机自启动

      创建一个开机启动的脚本
      vim /etc/init.d/nginx
      #!/bin/sh
      #
      # nginx - this script starts and stops the nginx daemon
      #
      # chkconfig: - 85 15
      # description: NGINX is an HTTP(S) server, HTTP(S) reverse \
      # proxy and IMAP/POP3 proxy server
      # processname: nginx
      # config: /etc/nginx/nginx.conf
      # config: /etc/sysconfig/nginx
      # pidfile: /var/run/nginx.pid # Source function library.
      . /etc/rc.d/init.d/functions # Source networking configuration.
      . /etc/sysconfig/network # Check that networking is up.
      [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/bin/nginx"
      prog=$(basename $nginx) NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() {
      # make required directories
      user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
      if [ -n "$user" ]; then
      if [ -z "`grep $user /etc/passwd`" ]; then
      useradd -M -s /bin/nologin $user
      fi
      options=`$nginx -V 2>&1 | grep 'configure arguments:'`
      for opt in $options; do
      if [ `echo $opt | grep '.*-temp-path'` ]; then
      value=`echo $opt | cut -d "=" -f 2`
      if [ ! -d "$value" ]; then
      # echo "creating" $value
      mkdir -p $value && chown -R $user $value
      fi
      fi
      done
      fi
      } start() {
      [ -x $nginx ] || exit 5
      [ -f $NGINX_CONF_FILE ] || exit 6
      make_dirs
      echo -n $"Starting $prog: "
      daemon $nginx -c $NGINX_CONF_FILE
      retval=$?
      echo
      [ $retval -eq 0 ] && touch $lockfile
      return $retval
      } stop() {
      echo -n $"Stopping $prog: "
      killproc $prog -QUIT
      retval=$?
      echo
      [ $retval -eq 0 ] && rm -f $lockfile
      return $retval
      } restart() {
      configtest || return $?
      stop
      sleep 1
      start
      } reload() {
      configtest || return $?
      echo -n $"Reloading $prog: "
      killproc $nginx -HUP
      RETVAL=$?
      echo
      } force_reload() {
      restart
      } configtest() {
      $nginx -t -c $NGINX_CONF_FILE
      } rh_status() {
      status $prog
      } rh_status_q() {
      rh_status >/dev/null 2>&1
      } case "$1" in
      start)
      rh_status_q && exit 0
      $1
      ;;
      stop)
      rh_status_q || exit 0
      $1
      ;;
      restart|configtest)
      $1
      ;;
      reload)
      rh_status_q || exit 7
      $1
      ;;
      force-reload)
      force_reload
      ;;
      status)
      rh_status
      ;;
      condrestart|try-restart)
      rh_status_q || exit 0
      ;;
      *)
      echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
      exit 2
      esac

      需要添加的内容

      修改权限
      chmod 777 /etc/init.d/nginx 添加到服务列表
      chkconfig --add /etc/init.d/nginx 设置开机启动
      chkconfig nginx on
      再依次执行下面两条命令
      iptables -L
      
      iptables -F
      执行完上面两条命令,可能会造成一些Linux的一些服务失效,需要重启,
      比如:Docker的重启命令 systemctl restart docker

Linux安装FastDFS~Nginx~的更多相关文章

  1. Linux 安装FastDFS<准备>(使用Mac远程访问)

    阅读本文需要一定的Linux基础 一 FastDFS简介 fastdfs是用c语言编写的一款开源分布式文件系统, fastdfs为互联网量身定制, 充分考虑了冗余备份, 负载均衡, 线性扩容等机制, ...

  2. linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇

    为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...

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

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

  4. 安装FastDFS+Nginx

    安装FastDFS FastDFS开发者的GitHub地址为:https://github.com/happyfish100 打开上述链接,我们点击fastdfs–>release,发现最新版的 ...

  5. Centos安装FastDFS+Nginx

    一.安装环境: gcc:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ PCRE:PCRE(Perl C ...

  6. Linux安装fastdfs集群部署

    过程问题: make: gcc:命令未找到 解决: yum -y install gcc 一.环境和版本: Linux环境:CentOS 7.6 libfastcommon版本:1.0.39 Fast ...

  7. linux安装部署Nginx

    两个参考地址: NGINX的百度百科:https://baike.baidu.com/item/nginx/3817705?fr=aladdin NGINX的中文网站:http://www.nginx ...

  8. FastDFS单节点安装 & FastDFS+Nginx整合

    安装环境    FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/)    fastdfs-nginx-module ...

  9. Linux安装配置Nginx

    之所以搭建Nginx,是因为要做一个图片服务器,之前已经搭建好了Ftp,要想实现通过网页的src标签显示图片需要,搭建web服务器(虽然也可以通过在img标签中的src属性里面写“ ftp://用户名 ...

随机推荐

  1. python3笔记二:进制转换与原码反码补码

    一:学习内容 进制:二进制.八进制.十进制.十六进制 进制转换 原码.反码.补码 二:进制 二进制 1.二进制:只有0和1,逢2进1 2.举例:0+0=0.0+1=1.1+1=10 3.过程剖析:二进 ...

  2. MySQL学习笔记(cmd模式下的操作)

    1.登入MySQL 1.1 登入MySQL 1.1.1命令如下: C:\Users\zjw>mysql -hlocalhost -uroot -p Enter password: ****** ...

  3. 谈谈DevOps和TestOps个人见解

    首先是百度百科和维基百科的解释对DevOps的说明: https://baike.baidu.com/item/devops DevOps是开发运维,而TestOps则测试运维.DevOps(Deve ...

  4. Android Intent和IntentFilter详解与使用及实现系统“分享”接口

    Intent Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到 ...

  5. 万能的TextView,实现常用布局样式

    package com.loaderman.textviewdemo; import android.content.Context; import android.content.res.Typed ...

  6. Service 是否在 main thread 中执行, service 里面是否能执行耗时的操作?

    默认情况,如果没有显示的指 service 所运行的进程, Service 和 activity 是运行在当前 app 所在进程的 main thread(UI 主线程)里面.service 里面不能 ...

  7. [mysql]SQL语句-新增/修改 创建时间 更新时间

    SQL关键词 要注意大小写   已建表,之前没有创建时间列, 现新增1列创建时间,并设置默认值为当前时间 --添加CreateTime 设置默认时间 CURRENT_TIMESTAMP ALTER T ...

  8. python之reportlab生成PDF文件

    项目需要,需要自动生成PDF测试报告.经过对比之后,选择使用了reportlab模块. 项目背景:开发一个测试平台,供测试维护测试用例,执行测试用例,并且生成测试报告(包含PDF和excel),将生成 ...

  9. java:ER图,Springmvc:Mapper代理开发规范,PB(PowerDesigner数据库建模)

    1.ER图(Entity Relationship Diagram实体关系图): 工具: ER-win Viso 矩形:实体对象 椭圆:属性 菱形:关系 2.Mapper代理的开发规范: 1.mapp ...

  10. 盒模型 box-sizing 属性

    css3增添了盒模型box-sizing属性,box-sizing属性值可以有下面三个值: content-box:默认值,让元素维持W3C的标准盒模型.元素的宽度/高度(width/height)( ...