*FastDFS图片服务器搭建准备:
1.需要libfastcommon安装包 选择最新稳定版(libfastcommon-1.0.36.tar.gz)
2.需要FastDFS安装包 选择最新稳定版(fastdfs-5.11.tar.gz)
3.需要Nginx安装包 选择最新稳定版(nginx-1.12.2.tar.gz)
4.需要fastdfs-nginx-modual模块安装包 选择最新版(fastdfs-nginx-module-master.zip 版本1.20,对应fastdfs-5.11)
注意:--------fastdfs-nginx-module-master.zip版本1.19对应fastdfs-5.11---------
-------------- 常见的fastdfs-nginx-module_v1.16.tar.gz在这里不推荐安装,安装过程有可能出问题 --------------------
*安装依赖环境*:命令安装:
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。 
命令 yum -y install gcc gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装
pcre库。 
命令:yum install -y pcre pcre-devel
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。 
命令:yum install -y zlib zlib-devel 
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
命令:yum install -y openssl openssl-devel
libevent
命令:yum -y install libevent
1.安装fastdfs
  1.1上传依赖包(xftp上传):
    1.1.1 libfastcommon-1.0.36.tar.gz
    1.1.2 fastdfs-5.11.tar.gz
    1.1.3 nginx-1.12.2.tar.gz
    1.1.4 fastdfs-nginx-module-master.zip --版本1.20
  1.2 安装libfastcommon-1.0.36.tar.gz工具包
    1.2.1解压libfastcommon-1.0.36.tar.gz 
    命令:tar zxvf libfastcommon-1.0.36.tar.gz 
完成之后会在libfastcommon-1.0.36文件夹下多出一个make.sh文件,供编译使用
    1.2.2编译libfastcommon-1.0.36 
    命令:./make.sh 
    1.2.3安装libfastcommon-1.0.36
命令:./make.sh install 
安装完成之后会在 /usr/lib64和/usr/lib下生成 libfastcommon.so;如果是比较低的版本只会在lib64下面生成;如果是32位系统就应该copy一份
libfastcommon.so到lib文件夹下(先进入lib64文件夹执行命令:cp libfastcommon.so ../lib)
  1.3安装fastdfs-5.11.tar.gz
    1.3.1解压fastdfs-5.11.tar.gz
    命令:tar zxvf fastdfs-5.11.tar.gz
解压完成之后会解压到astdfs-5.11文件夹下,进入之后会看到make.sh文件,供编译使用
    1.3.2编译astdfs-5.11
    命令:./make.sh
    1.3.3安装FastDFS
    命令:./make.sh install
    1.3.4如果没有报错那么就成功了安装log中会提示astdfs-5.11安装到了/etc/fdfs目录下,查看安装目录
    命令:ll /etc/fdfs/
会看到client.conf.sample,storage.conf.sample,tracker.conf.sample这三个文件
我们需要把这三个示例文件复制一份,去掉.sample作为后续配置文件
命令:cp client.conf.sample client.conf
命令:cp storage.conf.sample storage.conf
命令:cp tracker.conf.sample tracker.conf
而且安装完成之后会在/usr/bin文件下面多出一些fdfs_*的命令,进入查看
命令:ll fdfs_*
-----------------显示如下--------------------------------------------
-rwxr-xr-x. 1 root root 314463 Apr 1 14:07 fdfs_appender_test
-rwxr-xr-x. 1 root root 310144 Apr 1 14:07 fdfs_appender_test1
-rwxr-xr-x. 1 root root 297016 Apr 1 14:07 fdfs_append_file
-rwxr-xr-x. 1 root root 296716 Apr 1 14:07 fdfs_crc32
-rwxr-xr-x. 1 root root 297083 Apr 1 14:07 fdfs_delete_file
-rwxr-xr-x. 1 root root 297810 Apr 1 14:07 fdfs_download_file
-rwxr-xr-x. 1 root root 297392 Apr 1 14:07 fdfs_file_info
-rwxr-xr-x. 1 root root 315309 Apr 1 14:07 fdfs_monitor
-rwxr-xr-x. 1 root root 320303 Apr 1 14:07 fdfs_test
-rwxr-xr-x. 1 root root 319520 Apr 1 14:07 fdfs_test1
-rwxr-xr-x. 1 root root 298002 Apr 1 14:07 fdfs_upload_appender
-rwxr-xr-x. 1 root root 303126 Apr 1 14:07 fdfs_upload_file
--------------------------------------------------------------------- 
  1.4安装tracker服务
    1.4.1配置tracker
      1.4.1.1首选使用mkdir -p递归创建目录命令,创建了/usr/local/fast/fastdfs-5.11/data/tracker目录来保存tracker的data和log 根据个人习惯
      命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/tracke
      1.4.1.2修改tracker.conf
      命令:vim /etc/fdfs/tracker.conf
      打开后重点关注下面4个配置:
      1.disabled=false 
      2.port=22122 #默认端口号 
      3.base_path=/usr/local/fast/fastdfs-5.11/data/tracke #我刚刚创建的目录 
      4.http.server_port=8080 #默认端口是8080
----------------------------------------保存退出-----------------------------------------------
      1.4.1.3给firewalld添加开放tracker.conf配置文件中的22122和8080两个端口。在firewall正常运行的情况下输入以下命令:
      命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加8080端口
      命令:firewall-cmd --zone=public --add-port=22122/tcp --permanent #添加22122端口 
      ------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
      如果想检查相应端口是否开启,先重启firewalld
      命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
      命令:firewall-cmd --query-port=8080/tcp --zone=public #查询8080端口是否开启
      命令:firewall-cmd --query-port=22122/tcp --zone=public #查询22122端口是否开启
      ------------返回no既未开启,显示Yes为已开启-----------------------------------------
      1.4.1.4保存配置后启动tracker,命令如下
      命令:service fdfs_trackerd start
      成功后可以看到: Starting fdfs_trackerd (via systemctl): [ OK ]
      并且,发现刚刚创建的目录中多了data和log两个目录,命令查看
      命令:ll /usr/local/fast/fastdfs-5.11/data/tracke
      1.4.1.5设置tracker开机启动
      命令:echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
      1.4.1.6查看tracker的端口监听情况
      命令:netstat -unltp|grep fdfs
      ---------------------------------------------------------------------------------
      tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 70382/fdfs_trackerd
      --------------------------------------------------------------------------------- 
  1.5安装storage服务
    1.5.1配置storage
      1.5.1.1首选使用mkdir -p递归创建目录命令,创建了/usr/local/fast/fastdfs-5.11/data/storage/0目录在/usr/local/fast/fastdfs-5.11/data/storage
      下保存storage的data和log ,/usr/local/fast/fastdfs-5.11/data/storage/0下保图片文件
      命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/storage/0
    1.5.2修改storage.conf
      命令:vim /etc/fdfs/storage.conf
      打开后重点关注下面9个配置:
      1.disabled=false 
      2.group_name=group1 #组名,根据实际情况修改 
      3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 
      4.base_path=/usr/local/fast/fastdfs-5.11/data/storage #设置storage数据文件和日志目录 
      5.store_path_count=1 #存储路径个数,需要和store_path个数匹配 
      6.store_path0=/usr/local/fast/fastdfs-5.11/data/storage/0 #实际图片文件存储路径 
      7.#store_path1=/home/yuqing/fastdfs2 #如果挂载了不同的磁盘就可以配置store_path1 .. 等等
      8.tracker_server=192.168.153.201:22122 #我CentOS7的ip地址 
      9.http.server_port=8888 #设置 http 端口号,默认8888
      ----------------------------------------保存退出----------------------------------------------
    1.5.3给firewalld添加开放storage.conf配置文件中的23000和8888两个端口。在firewall正常运行的情况下输入以下命令:
    命令:firewall-cmd --zone=public --add-port=23000/tcp --permanent #添加23000端口
    命令:firewall-cmd --zone=public --add-port=8888/tcp --permanent #添加8888端口 
      ------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
    如果想检查相应端口是否开启,先重启firewalld
    命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
    命令:firewall-cmd --query-port=23000/tcp --zone=public #查询23000端口是否开启
    命令:firewall-cmd --query-port=8888/tcp --zone=public #查询8888端口是否开启
      ------------返回no既未开启,显示Yes为已开启-----------------------------------------
    1.5.4保存配置后启动storage,命令如下
    命令:service fdfs_storaged start
    成功后可以看到: Starting fdfs_storaged (via systemctl): [ OK ]
    并且,发现刚刚创建的目录/usr/local/fast/fastdfs-5.11/data/storage 下多了data和log两个目录。
(重点注意:/usr/local/fast/fastdfs-5.11/data/storage/0下多了个data,在data下有很多二进制文件夹,用来存储图片文件)
    命令:ll /usr/local/fast/fastdfs-5.11/data/storage/0/data
    1.5.5设置storage开机启动
    命令:echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local
    1.5.6查看storage的端口监听情况
    命令:netstat -unltp|grep fdfs
    ---------------------------------------------------------------------------------
    tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2231/fdfs_trackerd
    tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2323/fdfs_storaged
    ---------------------------------------------------------------------------------
  1.6确定一下,storage是否注册到了tracker中去
    命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
    成功后可以看到其中有一下字样: 
    id = 192.168.153.201
    ip_addr = 192.168.153.201 ACTIVE
  1.7测试上传:
    1.7.1同样的,需要修改客户端的配置文件:
    命令:vim /etc/fdfs/client.conf
    打开后重点关注下面3个配置:
    1.base_path=/usr/local/fast/fastdfs-5.11/data/tracker #tracker服务器文件路径
    2.tracker_server=192.168.153.201:22122 #tracker服务器IP地址和端口号
    3.http.tracker_server_port=8080 #tracker 服务器的 http端口号,必须和tracker的设置对应起来
----------------------------------------保存退出---------------------------------------------------------------------------------
    1.7.2上传图片:
      1.7.2.1输入上传图片命令:
      命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /图片路径/1.png #这后面放的是图片的位置
      成功后会返回图片的路径:group1/M00/00/00/wKiZyVrGEhmAWotNAAQedSwYknA415_big.png
--------------------------------------------------------------------------------------------------------------------------------
    组名:group1 
    磁盘:M00 
    目录:00/00 
    文件名称:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
--------------------------------------------------------------------------------------------------------------------------------
      1.7.2.2我们上传的图片会被上传到我们创建的/usr/local/fast/fastdfs-5.11/data/storage/0/data/00/00目录下,让我们去看看
      应该会有:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
      我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以
      hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
---------------------------------------------------------------------------------------------------------------------------------
  1.8访问上传的图片: 
    1.8.1如果要访问刚上传的图片,我们得需要结合nginx来实现原因如下:
    1.我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP
   服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS
   模块(也可以叫FastDFS的Nginx模块)。
    2.FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了172.20.132.57,
   文件ID已经返回客户端,这时,后台会将这个文件复制到172.20.132.57,如果复制没有完成,客户端就用这个ID在172.20.132.57取文件,肯定会出现错误。这个
   fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。 正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的
   直接支持。
------------------------------------------------------------------------------------------------------------------------------------
    1.8.2安装nginx并添加fastdfs-nginx-module
      1.8.2.1解压nginx-1.12.2.tar.gz,和fastdfs-nginx-module-master.zip
      命令:tar -zxvf nginx-1.12.2.tar.gz
      命令:unzip fastdfs-nginx-module-master.zip
      1.8.2.2解压后进入nginx-1.12.2目录编译安装nginx,并添加fastdfs-nginx-module:fastdfs-nginx-module-master模块
      命令:./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module-master/src #解压后fastdfs-nginx-module所在的位置
      (执行完之后会在nginx-1.12.2目录下生成Makefile文件,为下一步编译使用)
      1.8.2.2 编译:
      命令:make
      1.8.2.3 安装:
      命令:make install 
      1.8.2.4 nginx的安装目录是/usr/local/nginx,安装成功后查看
      命令:ls /usr/local/nginx/
      应该会有:conf html logs sbin 这几个文件夹,其中nginx.conf在/usr/local/nginx/conf目录下
      1.8.2.5 修改nginx.conf配置:
      命令:vim /etc/fdfs/tracker.conf
        1.8.2.5.1跟server节点评级配置反向代理fdfs_group1
        upstream fdfs_group1 { #配置反向代理fdfs_group1
          server 127.0.0.1:9991; #监听 9991
        }
        1.8.2.5.2打开后新添加一个如下server节点:
        server {
            listen 9991;
            server_name localhost; 
            location / { #9991端口拦截的URL:9991/
            root html;
            index index.html index.htm;
             } 
        location ~/group1/M00 { #重点:9991端口拦截的请求路径
            root /usr/local/fast/fastdfs-5.11/data/storage/0/data; #重点:图片文件存储路径
            ngx_fastdfs_module; #nginx-fastdfs-modual的名字:ngx_fastdfs_module
             } #只要不在它的confrgure中改动,不管那个版本都叫:
        error_page 500 502 503 504 /50x.html; #ngx_fastdfs_module
        location = /50x.html {
        root html;
             }
          }
        1.8.2.5.3编辑Nginx原有80端口的server节点,添加反向代理的URL
         server {
              listen 80;
              server_name localhost;
          location /group1/M00 { #80端口拦截的URL:80/group1/M00
          proxy_pass http://fdfs_group1; #反向代理的URL
              }
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          root html;
              }
            }
----------------------------------------保存退出-------------------------------------------------
        1.8.2.5.4在此给firewalld添加开放nginx.conf配置文件中的9991端口。在firewall正常运行的情况下输入以下命令:
        命令:firewall-cmd --zone=public --add-port=9991/tcp --permanent #添加9991端口 
        ------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
        如果想检查相应端口是否开启,先重启firewalld
        命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
        命令:firewall-cmd --query-port=9991/tcp --zone=public #查询9991端口是否开启
        ------------返回no既未开启,显示Yes为已开启-----------------------------------------
        1.8.2.5.5重启nginx
        命令:/usr/local/nginx/sbin/nginx -s reload
        1.8.2.5.6现在我们再去访问一下,原来我们上传过的文件:
        http://192.168.153.201/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
        或者:
        http://192.168.153.201:9991/group1/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
        或者:
        http://192.168.153.201:80/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
--------------------------------------------------------测试成功-----------------------------------------------------------

05-08 15:40