FastDFS V4.06 安装部署
1. 系统环境说明
部署环境 ubuntu 12.0.4 server 32 位 or 64 位,本文以 64 部署做说明。
最小化系统安装,除 openssh-server 服务外不安装任何服务 , 我们的 client , tracker server , storage server 用同一台物理机, iP为192.168.0.22
2 .分区设置
根据部署的服务要求选择合理的分区,根据公司现有生产环境的分区划分这里做一下分区。
/boot 200M
/ 1G
Swap 2 倍内存
/www 剩余空间,数据,部署程序, log ,备份主要存放地。
3. 初始化部署环境
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
安装编译环境
sudo apt-get install build-essential # 配置编译器和库文件
sudo dpkg-reconfigure tzdata
或者 sudo tzselect
然后在 crontab 设置服务器时间同步 , 比如每天凌晨 1 点 15 分同步一次网络时钟
15 1 * * * /usr/sbin/ntpdate 210.72.145.44;/sbin/hwclock -w > /dev/null 2>&1 &
4. 安装 libevent
下载并安装
#cd /usr/src
wget https://github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz
$sudo su -
#tar zxvf libevent-1.4.14b-stable.tar.gz
# cd libevent-1.4.14b-stable
# ./configure --prefix=/usr
# make && make install
5. 安装 FastDFS
这里我们选择的 FDFS 新版本 , 这里的 FASTDFS 本身没有了 http server 的功能。
5.1
#cd /usr/src
#wget http://fastdfs.googlecode.com/files/FastDFS_v4.06.tar.gz
#tar zxvf FastDFS_v4.06.tar.gz
# cd FastDFS/
由于一些库文件的存放位置,和编译脚本中的不一致,需要根据系统的实际情况进行调整。
#vim make.sh
查找:
if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] || [ -f /lib64/libpthread.so ] || [ -f /usr/lib64/libpthread .so ] || [ -f /usr/lib/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] || [ -
f /lib64/libpthread.a ] || [ -f /usr/lib64/libpthread.a ] ;
注意替换成:(以你服务器的编辑器格式和实际路径为准)
if [ -f /usr/lib/libpthread.so ] || [ -f /usr/local/lib/libpthread.so ] || [ -f /lib64/libpthread.so ] || [ -f /usr/lib64/libpthread .so ] || [ -f /usr/lib/x86_64-linux-gnu/libpthread.so ] || [ -f /usr/lib/libpthread.a ] || [ -f /usr/local/lib/libpthread.a ] || [ -f /lib64/libpthread.a ] || [ -f /usr/lib64/libpthread.a ] || [ -f /usr/lib/x86_64-linux-gnu/libpthread.a ];
保存退出
#vim /usr/src/FastDFS/client/fdfs_link_library.sh.in (64 bit 需要修改 )
查找 :
ln -fs $TARGET_LIB/libfastcommon.so.1 /usr/lib64/libfastcommon.so
ln -fs $TARGET_LIB/libfdfsclient.so.1 /usr/lib64/libfdfsclient.so
替换成 :
ln -fs $TARGET_LIB/libfastcommon.so.1 /usr/lib/x86_64-linux-gnu/libfastcommon.so
ln -fs $TARGET_LIB/libfdfsclient.so.1 /usr/lib/x86_64-linux-gnu/libfdfsclient.so
保存退出
# sudo ./make.sh
sudo ./make.sh install
#cp init.d/* /etc/init.d/
注 : 如果报 perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
错 , 需要设置
vim /root/.bashrc
export LC_ALL=C
保存退出
#source /root/.bashrc
6. 配置 tracker server
安装完成后 , 在默认
cd /etc/fdfs 下
#vim tracker.conf
port=22122
base_path=/www/book_tracker
保存退出
#mkdir /www/book_tracker
# /etc/init.d/fdfs_trackerd start
检查 tracker server
#netstat -antpul |grep 22122 或者 lsof -i:22122
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 23275/fdfs_trackerd
7. 配置及启动 Storage Server
#/www/book_storage
#vim /etc/fdfs/storage.conf
# port=23000
base_path=/www/book_storage
#base_path , 指定 data 和 log 所在目录 , 根目录必须存在 , 子目录会自动创建
store_path0=/www/book_storage
# 文件的存储位置 , 在一台 Storage Server 上可以指定多个存储位置
group_name=group1
tracker_server=192.168.0.22:22122 #tracker_server 的 ip
保存退出
启动 storage server
#/etc/init.d/fdfs_storaged start
#netstat -antpul |grep 23000 或者 lsof – i:23000 查看进程。
可以查看相关日志排错
#tail -f /www/book_storage/logs/storaged.log
验证验证上传下载
首先配置好客户端
#mkdir /www/book_client
#base_path=/www/book_client
tracker_server=192.168.0.22:22122
保存设置
测试上传
fdfs_test /etc/fdfs/client.conf upload /etc/fstab
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.
[2013-06-03 15:45:41] DEBUG - base_path=/www/book_client, 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=192.168.0.22, port=23000
group_name=group1, ip_addr=192.168.0.22, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157
source ip address: 192.168.0.22
file timestamp=2013-06-03 15:45:41
file size=1012
file crc32=3455471064
file url: http://192.168.0.22/group1/M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
source ip address: 192.168.0.22
file timestamp=2013-06-03 15:45:42
file size=1012
file crc32=3455471064
file url: http://192.168.0.22/group1/M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
下载
#cd /usr/src
查看
# fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
source storage id: 0
source ip address: 192.168.0.22
file create timestamp: 2013-06-03 15:45:42
file size: 1012
file crc32: 3455471064 (0xCDF64DD8)
# fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
-rw-r--r-- 1 root root 1012 Jun 3 15:59 AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
删除
fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/AQEBjFGsSaWAOjeUAAAD9M32Tdg9524157_big
8.Fdfs 和 Nginx 的整合
8.1 因为 FastDFS 默认自带的 http 服务器性能不好 , 所以一般建议用外置的 apache 或者 nginx 来解决 http 下载 , 以应付大并发的情况 .
#cd /usr/src/
#wget http://fastdfs-nginx-module.googlecode.com/files/ fastdfs-nginx-module_v1.15.tar.gz
#wget http://nginx.org/download/nginx-1.3.9.tar.gz
#tar zxvf fastdfs-nginx-module_v1.15.tar.gz
#tar zxvf nginx-1.3.9.tar.gz
# apt-get install libssl-dev zlib1g-dev libpcre3-dev
# cd nginx-1.3.9/
#./configure --prefix=/usr/local/nginx --with-http_gzip_static_module --add-module=/usr/src/fastdfs-nginx-module/src/
#make && make install
8.2 修改相关配置文件
修改 nginx 扩展模块的配置文件
#cd ../usr/src/fastdfs-nginx-module/src
#cp mod_fastdfs.conf /etc/fdfs/
#vim /etc/fdfs/mod_fastdfs.conf
base_path=/www/logs
# 存放 log 的路径
tracker_server=192.168.0.22:22122
# 指定 tracker 服务器及端口
url_have_group_name = true
# 这个很重要 , 在 URL 中包含 group 名称
store_path0=/www/book_storage
# 存储文件的路径
storage_server_port=23000
# 与 storage 的配置端口保持一致
保存后退出
!!!!!查看 /www/logs 目录是否存在
做 M00 的链接
sudo ln -s /www/book_storage/data /www/book_storage/data/M00
修改 nginx 的配置文件
#vim /usr/local/nginx/conf/nginx.conf
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /www/book_storage/data;
index index.html index.htm;
}
location /group1/M00 {
root /www/book_storage/data;
ngx_fastdfs_module;
}
保存退出
#cp /usr/local/nginx/sbin/nginx /etc/init.d/nginx
#/etc/init.d/nginx -t
ngx_http_fastdfs_set pid=23580
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
检查配置文件语法
#/etc/init.d/nginx ## 启动 nginx
检查端口
# lsof -i:8888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3770 root 6u IPv4 11231 0t0 TCP *:8888 (LISTEN)
nginx 3771 nobody 6u IPv4 11231 0t0 TCP *:8888 (LISTEN)
# netstat -antpul |grep tcp
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 23275/fdfs_trackerd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 22917/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2117/sshd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 23325/fdfs_storaged
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 22917/nginx
tcp 0 0 192.168.0.22:22122 192.168.0.22:48515 ESTABLISHED 23275/fdfs_trackerd
tcp 0 0 192.168.0.22:22 1.1.1.24:1558 ESTABLISHED 16381/sshd: boo
tcp 0 0 192.168.0.22:48515 192.168.0.22:22122 ESTABLISHED 23325/fdfs_storaged
tcp6 0 0 :::22 :::* LISTEN 2117/sshd
测试上传和下载
#fdfs_test /etc/fdfs/client.conf upload /etc/fstab
#cd /usr/src
#wget http://192.168.0.22:8888/group1/M00/00/00/AQEBjFGsVESARdlrAAAD9M32Tdg0763076_big
--2013-06-03 16:32:40-- http://192.168.0.22:8888/group1/M00/00/00/AQEBjFGsVESARdlrAAAD9M32Tdg0763076_big
Connecting to 192.168.0.22:8888... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1012
Saving to: `AQEBjFGsVESARdlrAAAD9M32Tdg0763076_big'
100%[======================================================================================>] 1,012 --.-K/s in 0s
2013-06-03 16:32:40 (309 MB/s) - `AQEBjFGsVESARdlrAAAD9M32Tdg0763076_big' saved [1012/1012]
9. 添加新的 tracker server Storage Server 同步设置
sudo vi /etc/fdfs/storage.conf
修改以下内容
sync_start_time=0:00
sync_end_time=23:59
# 设置允许同步时间 , 设置的时候考虑避开业务高峰时段
tracker_server=:192.168.1.216:22122
tracker_server=192.168.1.217:22122
# 这里我们举例 192.168.1.216 是原 tracker_server , 192.168.1.217 是本身的 tracker_server , 只要添加原来的 tracker_server 就行 , 实际配置中 , ip 地址按实际需求来配置
保存后退出
如何查看并删除无效的 storage server
#dfs_monitor /etc/fdfs/client.conf 可以查看当前 group 信息 , 以及一些统计信息。
再使用 fdfs_monitor 来删除。命令行如下 :
fdfs_monitor delete
例如 :
fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.0.100
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com