生产环境肯定是要集群部署的,本文只是为了说明安装过程,因此只有一台机器: 39.108.192.61 , 操作系统版本信息:
$: cat /proc/version
Linux version 3.10.0-514.6.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Thu Feb 23 03:04:39 UTC 2017
资源: 文中提到的百度云盘资源, 链接: https://pan.baidu.com/s/15KxhGXHr5kKdcvYq6zBNfw 密码: qyw6
一、在安装FastDFS之前必须先安装libevent,安装libevent步骤如下:
1.下载libevent:
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
2.解压libevent:
$: tar -zxvpf libevent-2.0.21-stable.tar.gz
3.进入解压目录:
$: cd libevent-2.0.21-stable
4.指定安装目录:
./configure --prefix=/usr/local/libevent-2.0.21
5.安装libevent:
make
make install
二、安装FastDFS步骤如下:
1.下载FastDFS:
百度云盘链接: https://pan.baidu.com/s/15KxhGXHr5kKdcvYq6zBNfw
密码: qyw6
2.解压FastDFS:
$: tar xvf FastDFS_v5.08.tar.gz
3.进入解压目录:
$: cd FastDFS
4.修改FastDFS的安装文件:
$: vi make.sh
TARGET_PREFIX=/usr/local/FastDFS ---安装路径
TARGET_CONF_PATH=/etc/fdfs ---配置文件路径
WITH_LINUX_SERVICE=1 ---是否为Linux服务
5.指定libevent的lib目录:
$: ./make.sh C_INCLUDE_PATH=/usr/local/libevent-2.0.21/include LIBRARY_PATH=/usr/local/libevent-2.0.21/lib
6.安装FastDFS:
$: ./make.sh install
7.设置软连接(否则编译nginx时会出错)
$: ln -sv /usr/local/FastDFS/include/fastcommon /usr/local/include/fastcommon
$: ln -sv /usr/local/FastDFS/include/fastdfs /usr/local/include/fastdfs
$: ln -sv /usr/local/FastDFS/lib/libfastcommon.so /usr/local/lib/libfastcommon.so
$: ln -sv /usr/local/FastDFS/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so.1
$: ln -sv /usr/local/FastDFS/lib/libfdfsclient.so /usr/local/lib/libfdfsclient.so
$: ln -sv /usr/local/FastDFS/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so.1
执行以上命令时会报错,提示文件不存在。
是因为在此之前需要安装libfastcommon ,可参考 http://blog.csdn.net/yecong111/article/details/42646523
可以从这个地址下载 : https://github.com/happyfish100/libfastcommon.git ,为避免文件丢失,已在百度云盘保存其源码包
大概是这样操作:
FastDFS_v5.05依赖libfastcommon,不再依赖libevent
unzip libfastcommon-master.zip -d /usr/local
cd /usr/local/libfastcommon-master
./make.sh
./make.sh install
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.so和libfdfsclient.so放到指定的位置,便于之后进行编译,否则会各种编译出错
三、在安装Nginx之前,需要安装gcc、 openssl-devel、 pcre-devel和zlib-devel软件库,具体如下:
$: yum install gcc-c++
$: yum install openssl-devel
$: yum install pcre-devel
$: yum install zlib-devel
四、安装Nginx和fastdfs-nginx-module
百度云盘链接: https://pan.baidu.com/s/15KxhGXHr5kKdcvYq6zBNfw
密码: qyw6
由于还要安装fastdfs-nginx-module,不要使用yum或apt安装nginx
将安装包文件上传到/usr/local中执行以下操作:
1.进入文件目录:
$: cd /usr/local
2.解压安装包:
$: tar -zxv -f nginx-1.6.0.tar.gz
$: tar -xvf fastdfs-nginx-module_v1.16.tar.gz
3.修改安装包目录名称:
$: mv nginx-1.6.0 nginx
4.进入安装包目录:
$: cd /usr/local/nginx
5.配置安装目录:
$: ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --add-module=/usr/local/fastdfs-nginx-module/src
6.安装Nginx:
$: make
$: make install
7.修改防火墙:
$: vi + /etc/sysconfig/iptables
添加配置项
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
8.重启防火墙:
$: service iptables restart
9.将libfastcommon.so、libfastcommon.so.1、libfdfsclient.so、libfdfsclient.so.1复制到/usr/lib,
否则nginx启动会报错。
Nginx的操作:
启动:
$: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
或者
$: cd /usr/local/nginx/sbin
$: ./nginx
停止服务:
#查询nginx主进程号
$: ps -ef | grep nginx
#停止进程
kill -QUIT 主进程号
#快速停止
kill -TERM 主进程号
#强制停止
pkill -9 nginx
重启:
$: /usr/local/nginx/sbin/nginx -s reload
五、配置tracker server:
1. vi /etc/fdfs/tracker.conf
bind_addr=39.108.192.61
base_path=/home/im/fastdfs/tracker
2.配置防火墙:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT
3.保存配置:
/etc/init.d/iptables save
4. 启动 tracker
/usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf
在启动时报错:
/usr/local/bin/fdfs_trackerd: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
执行下面的命令即可正常启动:
echo '/usr/local/libevent-2.0.21/include/' >> /etc/ld.so.conf
echo '/usr/local/libevent-2.0.21/lib/' >> /etc/ld.so.conf
ldconfig
5. 查看监听程序:
netstat -ntpl | grep fdfs
6. 查看日志文件:
cat /home/tracker/fastdfs/logs/trackerd.log
7.添加开机启动命令行:
vim /etc/rc.d/rc.local
/usr/local/FastDFS/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
六、配置storage server
1. vi /etc/fdfs/storage.conf
group_name=group1
bind_addr=39.108.192.61
base_path=/home/im/fastdfs/storage
store_path0=/home/im/fastdfs/storage
tracker_server=39.108.192.61:22122
http.server.port=80
2. cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
3. vi /etc/fdfs/mod_fastdfs.conf
base_path=/home/im/fastdfs/storage (实际值应该与storage 的base_path保持一致)
group_name=group1
store_path0=/home/im/fastdfs/storage
tracker_server=39.108.192.61:22122
url_have_group_name = true
group_count = 0
4. vi /usr/local/nginx/conf/nginx.conf
location /group1/M00 {
root /home/im/fastdfs/storage;
ngx_fastdfs_module;
}
同时需要将 #user那一行的注释去掉,改成 user root (因为我是在root用户下安装的),否则nginx会报错没有访问/home/im/fastdfs/storage的权限,具体可参考 http://blog.csdn.net/ricciozhang/article/details/49402273
然后将FastDFS安装目录下的conf目录下的http.conf 和mime.types拷贝至/etc/fdfs
可参考 http://blog.csdn.net/freewebsys/article/details/45150941
5.配置防火墙:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT
6.保存配置:
/etc/init.d/iptables save
7.启动 storage
/usr/local/FastDFS/bin/fdfs_storaged /etc/fdfs/storage.conf
8. 查看监听程序:
netstat -ntpl | grep fdfs
9. 查看日志文件:
cat /home/storage/fastdfs/logs/storaged.log
七、测试:
将/etc/passwd文件上传至fastdfs
/usr/local/FastDFS/bin/fdfs_test /etc/fdfs/client.conf upload /etc/passwd
结果如下:
This is FastDFS client test program v4.06
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2014-06-03 20:26:21] DEBUG - base_path=/home/client/fastdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=39.108.192.61, port=23000
group_name=group1, ip_addr=39.108.192.61, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851
source ip address: 39.108.192.61
file timestamp=2014-06-03 20:26:21
file size=1438
file crc32=218985275
file url: http://192.168./group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851_big
source ip address: 39.108.192.61
file timestamp=2014-06-03 20:26:21
file size=1438
file crc32=218985275
file url: http://192.168.227.130/group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851_big
在浏览器上打开http://39.108.192.61/group1/M00/00/00/wKjjglOOkd2AdZiiAAAFng0Nczs9728851_big
测试成功!!!
安装过程中参考了许多大侠的博客,在此表示感谢。只是按照别人的博客总是不能正确安装,因此本文将安装中可能遇到的问题进行了梳理,希望给需要的朋友一些帮助。
参考:http://www.cnblogs.com/zhoulf/archive/2013/02/09/2909653.html
http://blog.csdn.net/yl_wh/article/details/8784569
http://blog.csdn.net/ricciozhang/article/details/49402273
如果您习惯使用docker,建议还是使用docker安装,直接在机器上安装确实太麻烦了