阿里云搭建FastDFS+Nginx

最终成功也是参考了这位大佬,这里给个链接 >>参考文章

折腾了将近一天时间也算是初步搭建成功了吧

FastDFS环境搭建

1.安装依赖

1.1 安装gcc依赖

sudo yum -y install gcc

1.2 安装libenent

sudo yum -y install libevent

1.3安装nginx所需依赖

sudo yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.下载安装包

可以先建一个目录 soft 用来保存下载的文件
以下软件也可在这里下载下载地址

比如我这里下载到/opt/soft目录下,就创建这个目录

mkdir -p /opt/soft
cd /opt/soft

2.1下载libfastcommon-master

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

2.2下载FastDFS

wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz

2.3下载nginx

wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

2.4 下载 fastdfs-nginx-module 模块

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
  • 这里下载的文件名字比较长,不用担心

3.搭建环境

3.1安装 libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境

  1. 解压 编译 安装
   tar -zxvf V1.0.7.tar.gz
   cd libfastcommon-1.0.7
   ./make.sh
   ./make.sh install
  1. libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接。
   ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
   ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
   ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
   ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 

3.2安装FastDFS

回到soft目录下继续安装FastDFS

  1. 解压 编译 安装
   tar -zxvf V5.05.tar.gz
   cd fastdfs-5.05
   ./make.sh
   ./make.sh install

这样安装完后会有这几个文件

  • 服务脚本 /etc/init.d/fdfs_storaged /etc/init.d/fdfs_tracker
  • 配置样例文件 /etc/fdfs/storage.conf.sample /etc/fdfs/tracker.conf.sample /etc/fdfs/client.conf.sample
  • 命令工具 ( 在 /usr/bin/ 目录下 ) fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_crc32 fdfs_delete_file fdfs_download_file fdfs_file_info fdfs_monitor fdfs_storaged fdfs_test fdfs_test1 fdfs_trackerd fdfs_upload_appender fdfs_upload_file stop.sh restart.sh
  1. 由于FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下 ,所以 建立 /usr/bin 到 /usr/local/bin 的软链接
   ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
   ln -s /usr/bin/fdfs_storaged   /usr/local/bin
   ln -s /usr/bin/stop.sh         /usr/local/bin
   ln -s /usr/bin/restart.sh      /usr/local/bin

3.3配置FastDFS-tracker

  1. 进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf
   cd /etc/fdfs
   cp tracker.conf.sample tracker.conf
   vim tracker.conf
  1. 编辑tracker.conf文件
   # 提供服务的端口(默认就是22122)
   port=22122

   # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
   base_path=/xxxx/fastdfs/tracker

   # HTTP 服务端口
   http.server_port=80
  1. 创建tracker基础数据目录,即base_path对应的目录
   mkdir -p /xxxx/fastdfs/tracker
  1. 启动Tracker 初次成功启动,会在 /xxxx/fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录
   service fdfs_trackerd start
  1. 查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功
   # 输入
   netstat -unltp|grep fdfs
   # 结果
   tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      12152/fdfs_trackerd 
  1. 设置Tracker开机启动
   chkconfig fdfs_trackerd on

3.4配置FastDFS-storage

  1. 进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf
   cd /etc/fdfs
   cp storage.conf.sample storage.conf
   vim storage.conf
  1. 修改storage.conf 文件 tracker_server配置公网ip,这里49.156.156.165是假的
   # 指定此 storage server 所在 组(卷)
   group_name=group1

   # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
   base_path=/xxxx/fastdfs/storage

   # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
   store_path0=/xxxx/fastdfs/file

   # tracker_server 的列表 ,会主动连接 tracker_server
   # 有多个 tracker server 时,每个 tracker server 写一行
   tracker_server=49.156.156.165:22122

   # 访问端口
   http.server_port=80
  1. 创建Storage基础数据目录,对应base_path目录
   mkdir -p /ljzsg/fastdfs/storage
   mkdir -p /ljzsg/fastdfs/file
  1. 启动 Storage 启动Storage前确保Tracker是启动的。初次启动成功,会在 /xxxx/fastdfs/storage 目录下创建 data、 logs 两个目录。
   service fdfs_storaged start
  1. 查看状态
   netstat -unltp|grep fdfs

结果:

   tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      12152/fdfs_trackerd 
   tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      12201/fdfs_storaged 
查看Storage和Tracker是否在通信 
   /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

   #找到
       Storage 1:
           id = 49.156.156.165
           ip_addr = 49.156.156.165  ACTIVE
   显示ACTIVE
  1. 设置 Storage 开机启动
   chkconfig fdfs_storaged on

3.5文件上传测试

  1. 修改 Tracker 服务器中的客户端配置文件
   cd /etc/fdfs
   cp client.conf.sample client.conf
   vim client.conf
  1. 修改client.conf文件
   # Client 的数据和日志目录
   base_path=/xxxx/fastdfs/client
   # Tracker端口
   tracker_server=49.156.156.165:22122
  1. 文件上传测试
   /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/1.jpg 

上传成功返回id号

group1/M00/00/00/rBCcnF3GGuGAONrQAADNEoLMgLo638.jpg

3.6安装nginx

回到soft目录下安装nginx

  1. 解压 配置 编译 安装
   tar -zxvf nginx-1.12.1.tar.gz
   cd nginx-1.12.1
   ./configure
   make
   make install
  1. 启动nginx
   cd /usr/local/nginx/sbin/
   ./nginx 

   # 其它命令
   ./nginx -s stop   #关闭nginx
   ./nginx -s reload #重新加载配置
   ./nginx -V        #查看nginx的版本及模块
  1. 设置开机启动
   vim /etc/rc.local

   添加一行:
   /usr/local/nginx/sbin/nginx

   #设置执行权限
   chmod 755 rc.local

3.7测试访问文件

  1. 修改nginx.conf
   vim /usr/local/nginx/conf/nginx.conf
  1. 修改内容如下
   server {
           listen       80;
           server_name  localhost;

           location / {
               root   html;
               index  index.html index.htm;
           }

           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
               root   html;
           }

           #添加如下行,将 /group1/M00 映射到 /xxxx/fastdfs/file/data
           location /group1/M00 {
               alias /xxxx/fastdfs/file/data;
           }

       }
  1. 在浏览器访问之前上传的图片。 http://49.156.156.165/ group1/M00/00/00/rBCcnF3GGuGAONrQAADNEoLMgLo638.jpg

3.8FastDFS 配置 Nginx 模块

回到soft目录下安装 fastdfs-nginx-module

  1. 解压5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip文件
   # 解压
   unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

   # 重命名
   mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1  fastdfs-nginx-module-master
  1. 配置Nginx ( 在nginx中添加模块 )
   # 先停掉nginx服务
   /usr/local/nginx/sbin/ngix -s stop

   进入解压包目录
   # cd /opt/soft/nginx-1.12.1/

   # 添加模块
   ./configure --add-module=../fastdfs-nginx-module-master/src

   重新编译、安装
   # make && make install
  1. 查看Nginx的模块
    /usr/local/nginx/sbin/nginx -V

结果

   nginx version: nginx/1.12.1
   built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) 
   configure arguments: --add-module=../fastdfs-nginx-module/src/
  1. 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改
   cd /opt/softfastdfs-nginx-module-master/src
   cp mod_fastdfs.conf /etc/fdfs/
修改复制过去的mod_fastdfs.conf, 如下配置,其它默认 
   # 连接超时时间
   connect_timeout=10

   # Tracker Server
   tracker_server=49.156.156.165:22122

   # StorageServer 默认端口
   storage_server_port=23000

   # 如果文件ID的uri中包含/group**,则要设置为true
   url_have_group_name = true

   # Storage 配置的store_path0路径,必须和storage.conf中的一致
   store_path0=/xxxx/fastdfs/file
  1. 复制 FastDFS 的部分配置文件到/etc/fdfs 目录
   cd /opt/soft/fastdfs-5.05/conf/
   cp anti-steal.jpg http.conf mime.types /etc/fdfs/
  1. 修改nginx.conf
   vim /usr/local/nginx/conf/nginx.conf

如下配置

   server {
           listen       80;
           server_name  localhost;

           location / {
               root   html;
               index  index.html index.htm;
           }

           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
               root   html;
           }

           location ~/group([0-9])/M00 {
               ngx_fastdfs_module;
           }

       }
  1. 在/xxxx/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略。
   ln -s /xxxx/fastdfs/file/data/ /xxxx/fastdfs/file/data/M00
  1. 启动nginx
   /usr/local/nginx/sbin/nginx

出现 ngx_http_fastdfs_set_pid= 就算配置成功

  1. 使用浏览器 在地址栏访问 http://49.156.156.165/ group1/M00/00/00/rBCcnF3GGuGAONrQAADNEoLMgLo638.jpg

总结

一开始配置和创建的文件目录使用的用户下的目录,然而因为权限的原因导致最后的测试没有成功,以为环境搭建和配置文件写错,后面疯狂找资料才想到目录权限问题,也是一个经验教训吧


遥望漉雪千山都过尽,隔海隔山你的背影。