一 .fastDFS:Linux 搭建分布式文件存储FastDFS图片服务器以及配合nginx / 使用Nginx进行负载均衡

Linux 安装分布式文件存储FastDFS图片服务器以及配合nginx/使用Nginx进行负载均衡

alfresco
   虚拟网络编辑器修改网关
   修改成对应的网关及ip:vim /etc/sysconfig/network-script/ifcfg-ens33
   重启网卡:systemctl restart network
   ping 外网


xshell 
 1.用rz命令上传文件
   输入rz命令,看是否已经安装了lrzsz,
   如果没有安装则执行  yum -y install lrzsz命令进行安装
   安装成功后,输入rpm命令确认是否正确安装
 
 
Linux 常用基本命令
 1.创建文件夹 mkdir dirName
 2.解压缩 tar -zxvf xxxx.tar.gz
 3.复制文件夹 cp -r /xx/dir1/xx /xx/dir2
 3.删除文件夹 rm -rf xxxx
 4.修改文件夹名称 mv oldname newname
 
/******************************************************************************/
环境准备
       yum install gcc-c++
       yum -y install libevent
       yum install perl
       yum install make cmake gcc gcc-c++
    nginx
       yum -y install openssl openssl-devel
       yum -y install gcc automake autoconf libtool make
       yum install gd-devel
       yum -y install pcre-devel
       yum -y install openssl openssl-devel
    安装zip、unzip命令(如果需要的话)
       yum install -y unzip zip
    
1.安装libfastcommon(软件包下载地址:https://github.com/happyfish100/libfastcommon )
  a:将libfastcommon上传至/usr/local下进行解压:
    unzip libfastcommon-master.zip -d libfastcommon-master  (后面-d是创建文件夹,如果有可以不用)
  b:进到解压后的文件目录下
    cd libfastcommon-master
  c:进行安装
    ./make.sh
    ./make.sh install
  
2.安装FastDFS(到官网下载https://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/FastDFS_v5.05.tar.gz/download)
  a:将FastDFS压缩包上传至服务器/usr/local下
  b:进行安装
    ./make.sh
    ./make.sh install
  c:如果安装成功,则可以看到/etc/fdfs目录下生成了3个文件 

3.配置tracker节点
    #创建tracker的数据文件和日志存储目录
    mkdir -p /data/fastdfs
    # 切换盘符  
    cd /etc/fdfs
    # 重命名
    mv tracker.conf.sample tracker.conf
    #修改的文件内容如下(基础配置,不考虑性能调优情况下):
    vi tracker.conf 
    base_path=/data/fastdfs  #设置 tracker 的数据文件和日志目录(需预先创建)
    http.server_port=6666  #设置http端口号,默认为8080
    #保存并退出,之后创建软连接
    ln -s /usr/bin/fdfs_trackerd /usr/local/bin
    ln -s /usr/bin/stop.sh /usr/local/bin
    ln -s /usr/bin/restart.sh /usr/local/bin
    #启动tracker节点
    service fdfs_trackerd start
    #启动成功后,在/data/fastdfs目录下生成了data和logs两个目录。

4.配置storage节点
    #创建
    mkdir /data/fastdfs-storage  
    # 切换盘符
    cd /etc/fdfs/
    #重命名
    mv storage.conf.sample storage.conf
    #修改的文件内容如下(基础配置,不考虑性能调优情况下):
    vi storage.conf
    group_name=group1   #组名,可根据实际情况修改
    base_path=/data/fastdfs-storage #设置storage数据文件和日志目录,需预先创建
    store_path_count=1  #存储路径个数,需要和 store_path 个数匹配、
    store_path0=/data/fastdfs-storage #存储路径
    tracker_server=192.168.116.145:22122 # #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功。
    http.server_port=8888  #设置 http 端口号
    #创建软连
    ln -s /usr/bin/fdfs_storaged /usr/local/bin
    #启动storage
    service fdfs_storaged start
    #查看日志以确保正常启动
    cat /data/fastdfs-storage/logs/storaged.log
    #确认启动成功后,可以运行 fdfs_monitor 查看 storage服务器是否已经登记到 tracker服务器。
    /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

5.使用fdfs_test上传图片测试
    # 切换盘符
    cd /etc/fdfs/
    # 重命名
    mv client.conf.sample client.conf
    # 修改配置
    vi client.conf
    base_path=/data/fastdfs-storage/logs
    tracker_server=10.10.169.140:22122
    #上传测试(最后即表示上传的图片)
    /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/test.png
    #生成url即表示上传成功 
    
6.安装FastDFS-nginx-module(官网下载https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download?use_mirror=jaist&download=&failedmirror=nchc.dl.sourceforge.net)
   将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下
    # 解压
    tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
    #修改config文件将/usr/local/路径改为/usr/(去掉local)
    vi /usr/local/fastdfs-nginx-module/src/config
    #去掉local
    # 将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
    cp mod_fastdfs.conf /etc/fdfs/
    # 修改mod_fastdfs.conf的内容
    vi /etc/fdfs/mod_fastdfs.conf
    base_path=/data/fastdfs-storage/logs
    tracker_server=10.10.169.140:22122
    #tracker_server=10.10.169.141:22122(多个tracker配置多行)
    url_have_group_name=true        #url中包含group名称
    store_path0=/data/fastdfs-storage   #指定文件存储路径
    
    # 切换盘符
    cd /usr/local/FastDFS/conf/
    # 拷贝文件
    cp http.conf mime.types /etc/fdfs/

7.安装nginx    (官网下载http://nginx.org/en/download.html)

    # 解压
    tar -zxvf nginx-1.8.0.tar.gz
    # 切换目录
    cd nginx-1.8.0
    # 执行
    ./configure \
    --prefix=/data/nginx \
    --pid-path=/var/run/nginx/nginx.pid \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --with-http_gzip_static_module \
    --http-client-body-temp-path=/var/temp/nginx/client \
    --http-proxy-temp-path=/var/temp/nginx/proxy \
    --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
    --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
    --http-scgi-temp-path=/var/temp/nginx/scgi \
    --add-module=/usr/local/fastdfs-nginx-module/src \
    --with-http_image_filter_module
    # 执行
    make
    make install
    # 切换目录
    cd /data/nginx/conf/
    # 修改配置文件
    vi nginx.conf  (一并修改/usr/local/nginx/conf/nginx.conf)
    #添加location
    location /group1/M00/{
      ngx_fastdfs_module;     
    }
    #可能存在权限问题
    使用root权限启动的,所以修改/usr/local/nginx/conf/ ,/data/nginx/conf/ 下nginx.conf文件,
    第一行原值#user  nobody; 修改为  user  root;
    #创建临时文件夹
    mkdir -p /var/temp/nginx 
    #启动nginx
    /data/nginx/sbin/nginx -c /usr/local/nginx-1.15.6/conf/nginx.conf
    (备注:后者(/usr/local/nginx-1.15.6/conf/nginx.conf)是指安装路径里面的conf,前者(/data/nginx/sbin/nginx)是自定义(--prefix=/data/nginx \)的路径具体看自己设置的路径)
    #查看nginx进程    
    ps -ef|grep nginx
    #干掉进程
    kill -TERM xxxx
    #浏览器验证上次上传的返回路径
    如:http://192.168.17.135/group1/M00/00/00/wKgRh1v2A9OAACGNAABObh-_er8811_big.png

扫描二维码关注公众号,回复: 4795835 查看本文章

备注:
        1.如果访问不到还要注意防火墙的拦截
        #编辑防火墙
        vi /etc/sysconfig/iptables
        #放开80端口
        #添加:
        -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        -A INPUT -p tcp -m tcp --dport 8888 -j ACCEPT
        -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
        #保存
        /etc/init.d/iptables save
        /etc/init.d/iptables restart
        2.虚拟机重启后要重新启动服务:
        service fdfs_trackerd start
        service fdfs_storaged start
        /data/nginx/sbin/nginx -c /usr/local/nginx-1.15.6/conf/nginx.conf
    
8.nginx配合fastdfs实现图片自动更改尺寸(附加)
    location  /group1/M00/(.*)!([0-9]+)x([0-9]+)\.(jpg|gif|png){
               root /data/fastdfs-storage/data;
               ngx_fastdfs_module;
               set $w $2;
               set $h $3;
                  if ($w != "0") {
                        rewrite /group1/M00/(.+)!(\d+)x(\d+)\.(jpg|gif|png)$ /group1/M00/$1.$4 break;
                  }
                  image_filter resize $w $h;
                  image_filter_buffer 100M;
            }

             location ~ group1/M00/(.+)\.?(.+){
                 alias /data/fastdfs-storage/data;
                 ngx_fastdfs_module;
            }
9.权限控制
  前面使用nginx支持http方式访问文件,但所有人都能直接访问这个文件服务器了,所以做一下权限控制。
  FastDFS的权限控制是在服务端开启token验证,客户端根据文件名、当前unix时间戳、秘钥获取token,
  在地址中带上token参数即可通过http方式访问文件。
  1.服务端开启token验证
    修改http.conf
    # vim /etc/fdfs/http.conf
     
    #设置为true表示开启token验证
    http.anti_steal.check_token=true
     
    #设置token失效的时间单位为秒(s)
    http.anti_steal.token_ttl=1800
     
    #密钥,跟客户端配置文件的fastdfs.http_secret_key保持一致
    http.anti_steal.secret_key=FASTDFS1234567890
     
    #如果token检查失败,返回的页面
    http.anti_steal.token_check_fail=/ljzsg/fastdfs/page/403.html
    
    #重启服务
    
  2.配置客户端
    客户端只需要设置如下两个参数即可,两边的密钥保持一致。
    # token 防盗链功能
    fastdfs.http_anti_steal_token=true
    
    # 密钥
    fastdfs.http_secret_key=FASTDFS1234567890
    
   3.客户端生成token
   访问文件需要带上生成的token以及unix时间戳,所以返回的token是token和时间戳的拼接。
   之后,将token拼接在地址后即可访问:file.ljzsg.com/group1/M00/00/00/wKgzgFnkaXqAIfXyAAEoRmXZPp878.jpeg?token=078d370098b03e9020b82c829c205e1f&ts=1508141521   
    例如:
    // 上传到服务器
    String filepath = fastDFSClient.uploadFileWithMultipart(file);
    // 设置访文件的Http地址. 有时效性.
    String token = FastDFSClient.getToken(filepath, environment.getProperty("fastdfs.http_secret_key"));
    return "redirect:http://"+environment.getProperty("file_server_addr")+"/"+filepath+"?token="+token ;
    
   4.注意事项
    如果生成的token验证无法通过,请进行如下两项检查:
  A. 确认调用token生成函数(ProtoCommon.getToken),传递的文件ID中没有包含group name。传递的文件ID格式形如:M00/00/00/wKgzgFnkTPyAIAUGAAEoRmXZPp876.jpeg

  B. 确认服务器时间基本是一致的,注意服务器时间不能相差太多,不要相差到分钟级别。


附加 :CentOS7使用firewalld打开关闭防火墙与端口
    
    1.编辑防火墙
    vi /etc/sysconfig/iptables
    #放开80端口
    添加:-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    /etc/init.d/iptables save
    /etc/init.d/iptables restart
    
    2.开启一个端口呢
    添加
    firewall-cmd --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)
    重新载入
    firewall-cmd --reload
    查看
    firewall-cmd --zone= public --query-port=80/tcp
    删除
    firewall-cmd --zone= public --remove-port=80/tcp --permanent

    3.配置nginx实现负载均衡(减少服务器的压力)
    以vim模式打开nginx.conf配置文件
    cd /usr/local/nginx/conf/
    vi nginx.conf
    根据上边的需求在nginx.conf文件中配置负载均衡,如下:
    #在server上添加此upstream节点
    upstream mytomcat{
        #分权 即访问131与134的次数比例为1比1
            server 192.168.14.131:8080 weight=1;
            server 192.168.14.134:8080 weight=1;
            }
        server {
            listen 80;
            server_name localhost;
            #即所有请求都到这里去找分配
            location / {
           #使用mytomcat分配规则,即刚自定义添加的upstream节点
               proxy_pass http://mytomcat; #(与upstream名称要一样)
            }
        }
    配置完成,保存并退出。

    4.用nginx做图片服务器时配置:
    location /images/ {
        root  /usr/DirFile/;
        autoindex on;
      } 
      

参考

官方网站:https://github.com/happyfish100/

配置文档:https://github.com/happyfish100/fastdfs/wiki/

参考资料:https://www.oschina.net/question/tag/fastdfs

Java客户端:https://github.com/happyfish100/fastdfs-client-java

猜你喜欢

转载自blog.csdn.net/weixin_39494923/article/details/84400545