fastdfs+nginx安装配置

    以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下。由于客户要求需要用fastdfs来保存上传的文件,花了几天时间硬着头皮去学习怎样安装配置,由于linux基础不好,安装配置起来感觉有点费力,不得不随时去查找一些资料,好在经过这几天的努力安装配置fastdfs最终还是搞定了,最终的付出并没有白费。用了几天fastdfs总体感觉还不错,不过也没有特别明显的感觉。本来既然是讲fastdfs配置的,首先也需要去了解下fastdfs,关于fastdfs的介绍,请看这里http://tech.uc.cn/?p=221

系统环境


        VM9虚拟机下安装的Ubuntu15.10,本文只安装一个tracker和storage

准备安装包


首先下载如下的安装包(下载地址,请查看本文最后的下载地址部分):


安装过程


        由于fastdfs5.0.5依赖libfastcommon,所以我们先安装libfastcommon,为了方便操作,首先切换到root用户,由于安装ubuntu时并没有设置root账户的密码,我们先为root账户设置密码,输入如下命令:

sudo passwd
       按照提示输入密码和确认密码,然后输入下面命令的切换到root用户

su

安装libfastcommon

cd  /usr/local
tar -xvf libfastcommon-1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh
./make.sh   install

       注意安装过程中的输出信息,如果没有报错就表示libfastcommon安装成功了。 由于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

       至此libfastcommon安装成功了,接下来安装FastDFS

安装fastdfs5.05


      首先解压fastdfs-5.05:

tar -xvf fastdfs-5.05.tar.gz

进入fastdfs-5.05目录:

cd fastdfs-5.05

依次执行下面命令

./make.sh

./make.sh install

   如果没报错就表示安装成功了,创建了上面的软链接安装基本就没问题了

配置前的准备


先复制3份配置文件:

cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
cp storage.conf.sample storage.conf
cp client.conf.sample client.conf

我的Ubuntu的ip地址是:192.168.199.130(修改成自己机器上的ip地址就OK了), 用vim或者是gedit修改配置文件:

配置tracker


      打开tracker.conf

 gedit tracker.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/zq/fastdfs
bind_addr=192.168.199.130

启动trackerd服务:

fdfs_trackerd tracker.conf
通过如下命令查看trackerd服务是否启动:

netstat -tupln | grep trackerd
输出如下类似的信息表示已经启动了:

tcp        0      0 192.168.199.130:22122   0.0.0.0:*               LISTEN      11309/fdfs_trackerd

也可以通过查看日志文件看下有没有出错(/home/zq/fastdfs是前面配置的路径),如果没有报错,应该trackerd服务启动了:

vim /home/zq/fastdfs/logs/trackerd.log 

配置storage


      打开storage.conf:

gedit storage.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/zq/fastdfs
bind_addr=192.168.199.130 (这个可以为空)
store_path0=/home/zq/fastdfs(上传文件的存储路径)
tracker_server=192.168.199.130:22122(指定trackerd服务的地址)

启动storaged服务:

fdfs_storaged storage.conf
通过如下命令查看storaged服务是否启动:
netstat -tupln | grep storaged
输出如下类似的信息表示已经启动了:

tcp        0      0 192.168.199.130:23000   0.0.0.0:*               LISTEN      11413/fdfs_storaged

也可以通过查看日志文件看下有没有出错(/home/zq/fastdfs是前面配置的路径),如果没有报错,应该storaged服务启动了:

gedit /home/zq/fastdfs/logs/storaged.log 
配置client并测试上传


    打开client.conf:

gedit client.conf

修改配置文件的这几项(根据数据情况修改):

base_path=/home/zq/fastdfs
tracker_server=192.168.199.130:22122

上传测试:

fdfs_upload_file client.conf client.conf.sample 
将会上传client.conf.sample文件,如果看到类型下面的信息,那么恭喜你,配置成功了:

group1/M00/00/00/wKjHglYshRGAfbrTAAAFtTzeg5c.sample

安装和配置nginx插件


配置fastdfs-nginx-module


1. 解压fastdfs-nginx-module_v1.16.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz 
2. 修改config文件

cd fastdfs-nginx-module/src/
gedit config 
修改配置,找到下面这行
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

这个是很重要的,不然在nginx编译的时候会报错的,我看网上很多在安装nginx的fastdfs的插件报错,都是这个原因,而不是版本不匹配。(很重要,很重要,很重要

3.修改mod_fastdfs.conf,先复制一份到/etc/fdfs目录下

cp mod_fastdfs.conf /etc/fdfs/
cd /etc/fdfs/
gedit mod_fastdfs.conf
修改如下几项:

tracker_server=192.168.199.130:22122
store_path0=/home/zq/fastdfs
base_path=/home/zq/fastdfs
url_have_group_name = true(配置多个tracker时,应该将此项设置为true)

4.建立文件服务器的软连接,并做一些需要的操作

建立软连接(配置文件中storage存放数据的路径):

ln -s /home/zq/fastdfs/data /home/zq/fastdfs/data/M00
将fastdfs-5.05配置目录下的2个文件复制到/etc/fdfs目录下:

cp /usr/local/fastdfs-5.05/conf/http.conf .
cp /usr/local/fastdfs-5.05/conf/mime.types .

安装和配置nginx:


1. 解压nginx-1.7.8.tar.gz

tar -zxvf nginx-1.7.8.tar.gz 
2. 由于需要使用 apt-get命令安装软件,所以需要更新Ubuntu软件源(更新过软件源的可以跳过这步),依次执行下面的命令,如果在更新软件源的过程中,没有报错,说明Ubuntu的软件源是可以用的。建议使用高版本的Ubuntu,本文使用的是最新版本Ubuntu15.10,其他低版本的Ubuntu可能会出现软件源不可用的情况,具体的软件源的修改查看本文最后的 参考资料。以前使用的是Ubuntu10.10经常出现软件源不可用的情况,自己手动去安装这些nginx依赖确实很麻烦。

apt-get update
apt-get upgrade
3. 使用 apt-get命令安装nginx依赖,如果不能通过这个命令来安装依赖,具体依赖的安装过程,请查看本文最后的 附录-  安装nginx依赖部分

sudo apt-get install libpcre3 libpcre3-dev  zlib1g-dev openssl libssl-dev

4. 开始安装nginx(--prefix指定nginx安装到哪里, --add-module指定fastdfs-nginx-module的目录),

./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src/

执行完成后可以看到最后的输出:

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

然后依次执行下面的命令:

make 
make install
5.配置nginx

     打开nginx.conf配置文件

cd /usr/local/nginx/conf
gedit nginx.conf
server节点加入下面的配置

location /group1/M00{
    root /usrdata/fastdfs/data;
    ngx_fastdfs_module;
}

6.启动nginx

/usr/local/nginx/sbin/nginx
用如下命令查看nginx是否启动了:

netstat -tupln | grep nginx
输出如下(nginx默认监听的是80端口):

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9342/nginx 

查看日志文件:

gedit /usr/local/nginx/logs/error.log 
输出如下:

[2015-10-25 19:29:43] ERROR - file: ../storage/trunk_mgr/trunk_shared.c, line: 177,"Permission denied" can't be accessed, error info: /home/zq/fastdfs
2015/10/25 19:29:43 [alert] 9094#0: worker process 9095 exited with fatal code 2 and cannot be respawned
2015/10/25 19:30:58 [notice] 9112#0: signal process started
ngx_http_fastdfs_process_init pid=9196

    发现前面报错了(用红色标注的部分),意思是说/home/zq/fastdfs文件夹不能访问,遇到这个问题首先想到的是权限不够,但是当前我是以root账号启动的啊,应该拥有最高的权限,为什么说我root却不能访问这个文件了,这个问题确实把我搞晕了,有可能nginx启动的后台线程使用的不是root用户,后来把mod_fastdfs.conf文件的base_path和store_path0改为/home/zq,发现启动不报错了,这太奇怪了,这个问题折腾了我好久,上网也没找到解决的办法。后来发现nginx.conf配置的最前面里有配置user,只不过被注释掉了,把user改为root就搞定了

user  root;
 前面的配置过程其实也不是一帆风顺的,只是有些我没有记录下来,接下来遇到问题还是全部记录下来吧,以便查阅。

7.测试配置的nginx

打开浏览器输入:http://127.0.0.1,能看到下面的界面表示安装成功了!


接下来测试fdfs上传的文件是否也能显示,首先在桌面上准备一张图片:2.jpg,输入下面的命令

fdfs_upload_file /etc/fdfs/client.conf  /home/zq/Desktop/2.jpg 
返回的文件信息是:group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg

在浏览器输入:http://127.0.0.1/group1/M00/00/00/wKjHglYsw5GABeZoAAAj7X7kWQc565.jpg,能看到如下的显示表示配置完成了:

至此配置完成了!


配置多台服务器的说明

  1)nginx.conf
     在server中增加配置:
     访问路径不带group名(storage只有一个group的情况),如/M00/00/00/xxx:
      location /M00 {
            ngx_fastdfs_module;
        }
     访问路径带group名(storage对应有多个group的情况),如/group1/M00/00/00/xxx:
      location ~ /group([0-9])/M00 {
            ngx_fastdfs_module;
        }
   2)mod_fastdfs.conf
        将fastdfs-nginx-module_v1.16解压目录fastdfs-nginx-module/src下的mod_fastdfs.conf复制到-DFDFS_MOD_CONF_FILENAME配置的目录下,如/etc/fdfs/。
    修改配置:
    tracker_server=192.168.199.130:22122        -- tracker server的ip和端口,此处可以写多个tracker server,每行一个
    url_have_group_name = true              --访问路径带group时为true否则为false,多个group的情况下,必须为true,为false时,group_count必须为0

storage只有一个group的情况:
   group=group1                           --storage对应的group
   store_path0=/home/zq/fastdfs        --storage存储路径
   group_count = 0

storage对应有多个group的情况:
   url_have_group_name = true      --必须设置为true才能支持多个group
   group_count = 2                 --storage的group个数

   [group1]
   group_name=group1
   storage_server_port=23000
   store_path_count=1
   store_path0=/home/zq/fastdfs
   
   [group2]
   group_name=group2
   storage_server_port=23000
   store_path_count=1
   store_path0=/home/zq/fastdfs2

附录

安装nginx依赖

nginx依赖以下模块:

l  gzip模块需要 zlib 库

l  rewrite模块需要 pcre 库

l  ssl 功能需要openssl库

1.安装pcre

  • 解压缩pcre-xx.tar.gz包。

  • 进入解压缩目录,执行./configure。
  • 依次执行make 和 make install命令

2.安装openssl

  • 解压缩openssl-xx.tar.gz包。

  • 进入解压缩目录,执行./config。
  • 依次执行make 和 make install命令

3.安装zlib

  •  解压缩zlib-xx.tar.gz包。

  • 进入解压缩目录,执行./configure。
  • 依次执行make 和 make install命令

fastfds和nginx相关命令

1.fastfds命令:

  • 文件上传命令: fdfs_upload_file <config_file>
  • 文件上传测试命令:fdfs_test <config_file> <operation>,operation: upload, download, getmeta, setmeta, delete and query_servers
  • 启动tracker:fdfs_trackerd <config_file>
  • 启动storage:fdfs_storaged <config_file>
  • 停止修改服务:./stop.sh <config_file>

2.nginx命令

  • 启动: ./nginx
  • 重启:./nginx -s reload
  • 停止:./nginx -s stop

配置Ubuntu软件源参考地址

参考资料

下载地址:

  1. fastdfs-5.05下载地址
  2. libfastcommon-1.0.7下载地址
  3. fastdfs-nginx-module下载地址
  4. nginx下载地址





  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值