centos7.4 下的 FastDFS5.11 和 tengine2.2.2(nginx1.8.1)的安装与使用
FastDFS 是一款开源的轻量级分布式文件系统,纯 C 实现,支持 Linux、FreeBSD 等 Unix 系统。
类 google FS,不是通用的文件系统,只能通过专有 API 访问。
FastDFS 服务端有两种角色:跟踪器(tracker)和存储节点(storage)。
tracker 主要做调度工作,在访问上起负载均衡的作用,在内存中记录集群中 group 和 storage 的状态信息,是连接 client 和 storage 的枢纽。
storage 存储服务器,文件和文件属性都保存到存储服务器上。
1. 安装 fastdfs
- 下载 libfastcommon 包
https://github.com/happyfish100/libfastcommon/releases
- 下载 fastdfs 源码包
https://github.com/happyfish100/fastdfs/releases
- 安装 libfastcommon
> tar xf libfastcommon-1.0.36.tar.gz > cd libfastcommon-1.0.36 > ./make.sh > ./make.sh install
- 安装 fastdfs
> tar xf fastdfs-5.11.tar.gz > cd fastdfs-5.11 > ./make.sh > ./make.sh install
如果出现 ioevent.h:82:2: #error port me 这样的错误,请下载最新版的 libfastcommon 并安装。
2. 环境说明
创建两台虚拟主机,IP 分别为 192.168.1.222 和 192.168.1.233,分别安装 fastdfs。
3. fastdfs 的配置文件
配置文件默认在/etc/fdfs 下
默认脚本在/etc/init.d 下
创建两个目录,用来存放数据
> mkdir -p /data/fdfs_tracker > mkdir -p /data/fdfs_storage
复制配置文件
> cd /etc/fdfs > cp storage.conf.sample storage.conf > cp tracker.conf.sample tracker.conf
跟踪器的配置文件 tracker.conf
#绑定IP bind_addr= #端口 port=22122 #连接超时时间 connect_timeout=30 #日志数据路径 base_path=/data/fdfs_tracker #上传文件时选择group的方法 #0:轮询,1:指定组,2:选择剩余空间最大 store_lookup=2 #如果上面的配置是1,那么这里必须指定组名 store_group=group2 #上传文件时选择server的方法 #0:轮询,1:按IP地址排序,2:通过权重排序 store_server=0 #storage上预留空间 reserved_storage_space = 10%
存储节点的配置文件 storage.conf
#storage server所属组名 group_name=group1 #绑定IP bind_addr= #storage server的端口 port=23000 #连接超时时间 connect_timeout=30 #日志数据路径 base_path=/data/fdfs_storage/base #storage path的个数 store_path_count=2 #根据store_path_count的值,就要有storage0到storage(N-1)个 store_path0=/data/fdfs_storage/storage0 store_path1=/data/fdfs_storage/storage1 #跟踪服务器 tracker_server=192.168.1.222:22122 tracker_server=192.168.1.233:22122
创建目录,不然会出错
> mkdir -p /data/fdfs_storage/base > mkdir -p /data/fdfs_storage/storage0 > mkdir -p /data/fdfs_storage/storage1
启动服务
> /etc/init.d/fdfs_trackerd start > /etc/init.d/fdfs_storaged start
查看服务是否启动
> ps -ef|grep fdfs > netstat -nltp
4. 测试 fastdfs
配置 client 文件
> cd /etc/fdfs > cp client.conf.sample client.conf > vi client.conf
#存放日志目录 base_path=/data/client #跟踪服务器 tracker_server=192.168.1.222:22122 tracker_server=192.168.1.233:22122
创建 client 目录
> mkdir -p /data/client
通过 fdfs_upload_file 来测试(如果发生错误,请查看防火墙)
> echo "12345678" >> /data/1.txt > fdfs_upload_file /etc/fdfs/client.conf /data/1.txt
通过 fdfs_download_file 下载我们刚上传的文件
> fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
查看文件信息
> fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
追加文件
> echo "hello" >> /data/2.txt > fdfs_upload_appender /etc/fdfs/client.conf /data/1.txt > fdfs_append_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3bxCEAcqhAAAAAIk0NhY869.txt /data/2.txt
删除文件
> fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgB3li3a2mAejYPAAAADok0NhY177.txt
查看集群
> fdfs_monitor /etc/fdfs/client.conf
5. 安装 tengine2.2.2 支持 fastdfs
下载 fastdfs-nginx-module:
http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压到:
[root@localhost modules]# ll 总用量 20 drwxrwxr-x. 3 500 500 47 5月 4 2014 fastdfs-nginx-module -rw-r--r--. 1 root root 17510 5月 5 2014 fastdfs-nginx-module_v1.16.tar.gz drwxr-xr-x. 3 128966 users 127 1月 26 15:32 ngx_debug_pool drwxr-xr-x. 9 128966 users 203 1月 26 15:32 ngx_http_lua_module drwxr-xr-x. 2 128966 users 134 1月 26 15:32 ngx_http_upstream_keepalive_module drwxr-xr-x. 3 128966 users 121 1月 26 15:32 ngx_slab_stat [root@localhost modules]# pwd /usr/local/src/tengine-2.2.2/modules [root@localhost modules]#
需要注意的是:
- 安装 libfastcommon,fastdfs 后需要 copy 头文件到 fastdfs-nginx-module 里面
cp -r /usr/include/fastdfs/ /usr/local/src/tengine-2.2.2/modules/fastdfs-nginx-module/src/ cp -r /usr/include/fastcommon/* /usr/local/src/tengine-2.2.2/modules/fastdfs-nginx-module/src/
- 编译命令,增加 ipv6
./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/usr/local/src/pcre-8.39 --with-openssl=/usr/local/src/openssl-1.0.2j --with-jemalloc=/usr/local/src/jemalloc-4.4.0 --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_concat_module --with-zlib=/usr/local/src/zlib-1.2.11 --with-ipv6 --add-module=/usr/local/src/tengine-2.2.2/modules/fastdfs-nginx-module/src make -j8 make install
- 查看 tengine 安装模块
[root@localhost nginx]# ./sbin/nginx -V Tengine version: Tengine/2.2.2 (nginx/1.8.1) built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/usr/local/src/pcre-8.39 --with-openssl=/usr/local/src/openssl-1.0.2j --with-jemalloc=/usr/local/src/jemalloc-4.4.0 --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_concat_module --with-zlib=/usr/local/src/zlib-1.2.11 --with-ipv6 --add-module=/usr/local/src/tengine-2.2.2/modules/fastdfs-nginx-module/src nginx: loaded modules: nginx: ngx_core_module (static) nginx: ngx_errlog_module (static) nginx: ngx_conf_module (static) nginx: ngx_dso_module (static) nginx: ngx_events_module (static) nginx: ngx_event_core_module (static) nginx: ngx_epoll_module (static) nginx: ngx_procs_module (static) nginx: ngx_proc_core_module (static) nginx: ngx_openssl_module (static) nginx: ngx_regex_module (static) nginx: ngx_http_module (static) nginx: ngx_http_core_module (static) nginx: ngx_http_log_module (static) nginx: ngx_http_upstream_module (static) nginx: ngx_http_static_module (static) nginx: ngx_http_gzip_static_module (static) nginx: ngx_http_autoindex_module (static) nginx: ngx_http_index_module (static) nginx: ngx_http_concat_module (static) nginx: ngx_http_auth_request_module (static) nginx: ngx_http_auth_basic_module (static) nginx: ngx_http_access_module (static) nginx: ngx_http_limit_conn_module (static) nginx: ngx_http_limit_req_module (static) nginx: ngx_http_realip_module (static) nginx: ngx_http_geo_module (static) nginx: ngx_http_map_module (static) nginx: ngx_http_split_clients_module (static) nginx: ngx_http_referer_module (static) nginx: ngx_http_rewrite_module (static) nginx: ngx_http_ssl_module (static) nginx: ngx_http_proxy_module (static) nginx: ngx_http_fastcgi_module (static) nginx: ngx_http_uwsgi_module (static) nginx: ngx_http_scgi_module (static) nginx: ngx_http_memcached_module (static) nginx: ngx_http_empty_gif_module (static) nginx: ngx_http_browser_module (static) nginx: ngx_http_user_agent_module (static) nginx: ngx_http_upstream_hash_module (static) nginx: ngx_http_upstream_ip_hash_module (static) nginx: ngx_http_upstream_consistent_hash_module (static) nginx: ngx_http_upstream_check_module (static) nginx: ngx_http_upstream_least_conn_module (static) nginx: ngx_http_upstream_keepalive_module (static) nginx: ngx_http_upstream_dynamic_module (static) nginx: ngx_http_stub_status_module (static) nginx: ngx_http_fastdfs_module (static) nginx: ngx_http_write_filter_module (static) nginx: ngx_http_header_filter_module (static) nginx: ngx_http_chunked_filter_module (static) nginx: ngx_http_range_header_filter_module (static) nginx: ngx_http_gzip_filter_module (static) nginx: ngx_http_postpone_filter_module (static) nginx: ngx_http_ssi_filter_module (static) nginx: ngx_http_charset_filter_module (static) nginx: ngx_http_userid_filter_module (static) nginx: ngx_http_footer_filter_module (static) nginx: ngx_http_trim_filter_module (static) nginx: ngx_http_headers_filter_module (static) nginx: ngx_http_upstream_session_sticky_module (static) nginx: ngx_http_reqstat_module (static) nginx: ngx_http_copy_filter_module (static) nginx: ngx_http_range_body_filter_module (static) nginx: ngx_http_not_modified_filter_module (static) [root@localhost nginx]#
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于