以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下。由于客户要求需要用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服务:
[plain] view plaincopy
fdfs_trackerd tracker.conf
通过如下命令查看trackerd服务是否启动:
netstat -tupln | grep trackerd
输出如下类似的信息表示已经启动了:
tcp0 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
输出如下类似的信息表示已经启动了:
tcp0 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端口):
tcp0 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依赖以下模块:
gzip模块需要 zlib 库
rewrite模块需要 pcre 库
ssl 功能需要openssl库
1.安装pcre
获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本
解压缩pcre-xx.tar.gz包。
进入解压缩目录,执行./configure。
依次执行make 和 make install命令
2.安装openssl
获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本。
解压缩openssl-xx.tar.gz包。
进入解压缩目录,执行./config。
依次执行make 和 make install命令
3.安装zlib
获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本。
解压缩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
CentOS安装fastdfs_v4.06:http://www.linuxdiyf.com/linux/12125.html
Ubuntu下FastDFS安装配置记录:http://www.linuxdiyf.com/linux/11530.html
CentOS6环境单服务器FastDFS+Nginx+fastdfs-nginx-module安装配:http://www.linuxdiyf.com/linux/10237.html
Ubuntu安装FastDFS全程记录:http://www.linuxdiyf.com/linux/4350.html
CentOS 6.2下fastDFS的完整安装和配置步骤:http://www.linuxdiyf.com/linux/1259.html