FastDFS安装流程
前言 : 安装属实不易
- 自己摸索了一天才弄好,吐血。。。刚稳定情绪就来写避坑指南啦
- 希望有类似需求的小伙伴,能少走弯路。
- 先熟悉一下工作流程
- 上传流程
- 下载流程
- 上传流程
安装前准备
- 首先把相关资源上传到Linux上 : FastDFS资源地址 && 提取码 :
5fhy
终于要开始啦
- 安装相关依赖
- 安装GCC依赖 : 对C语言代码进行编译运行
- sudo yum -y install gcc (sudo意思以管理员身份运行,yum软件包管理命令)
- 安装unzip工具 : 压缩包进行解压
- sudo yum install -y unzip zip
- 安装libevent : 事件通知相关
- sudo yum -y install libevent
- 安装Nginx依赖包
- sudo yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
- 本次所有资源统一上传到
/usr/local
- 创建文件夹: /home/xiaolu/fdfs/
- 在下面创建tracker和storage
- 安装GCC依赖 : 对C语言代码进行编译运行
- 安装libfastcommon-master
1. unzip libfastcommon-master.zip
2. cd libfastcommon-master
3. sudo ./make.sh
4. sudo ./make.sh install - 安装FastDFS
- cd …/ (返回到FastDFS压缩包位置)
- tar -xvf FastDFS_v5.08.tar.gz
- cd FastDFS
- sudo ./make.sh
- sudo ./make.sh install
- 安装完查看进度
-
ll /etc/init.d/ | grep fdfs 如看到下边的内容,恭喜你离成功又近了一步
1. fdfs_trackerd # tracker启动脚本 2. fdfs_storaged # storage启动脚本
-
ll /etc/fdfs
1. tarcker.conf.sample # tracker的配置文件模板 2. storage.sample # storage的配置文件模板 3. client.sample # 客户端的配置文件模板
-
- 配置tracker
-
cd /etc/fdfs
-
sudo cp tracker.conf.sample tracker.conf (复制一份,以防配置错)
-
sudo vim tracker.conf : 修改base_path属性
1. base_path=/home/xiaolu/fdfs/tracker # tracker的数据和日志存放目录
-
启动服务
1. sudo service fdfs_trackerd start # 启动fdfs_trackerd服务,停止用stop 2. sudo chkconfig fdfs_trackerd on # tracker开机启动
-
- 启动storage
-
sudo cp storage.conf.sample storage.conf
-
sudo vim storage.conf
base_path=/home/xiaolu/fdfs/storage # storage的数据和日志存放目录 store_path0=/home/xiaolu/fdfs/storage # storage的上传文件存放路径 tracker_server=192.168.88.166:22122 # tracker的地址
-
sudo service fdfs_storaged start # 启动fdfs_storaged服务,停止用stop
-
sudo chkconfig fdfs_storaged on # storaged开机启动
-
ps -ef | grep fdfs 再次确认是否都已安装完成
-
- 来张图庆祝安装成功
别走,还没完
为什么? 我们实际生产环境中不管是tracker还是storage都是集群的,有时候会因为网络延迟导致访问从Storage时访问不到,这时nginx就派上用场啦。
-
安装Nginx及FastDFS模块
-
tar -xvf fastdfs-nginx-module_v1.16.tar.gz
-
配置config文件(进入到目录)
# 修改配置 vim config # 执行下面命令(将配置中的/usr/local改为/usr): :%s+/usr/local/+/usr/+g # 添加或修改,不然会编译报错 ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
-
配置mod_fastdfs.conf
# 将src目录下的mod_fastdfs.conf复制到 /etc/fdfs目录: sudo cp mod_fastdfs.conf /etc/fdfs/ # 编辑该文件 cd /etc/fdfs/ vimmod_fastdfs.conf
-
修改配置
connect_timeout=10 # 客户端访问文件连接超时时长(单位:秒) tracker_server=192.168.56.101:22122 # tracker服务IP和端口 url_have_group_name=true # 访问链接前缀加上组名 store_path0=/home/xiaolu/fdfs/storage # 文件存储路径
-
-
复制FastDFS配置到/etc/fdfs下
- cd /usr/local/FastDFS/conf/
- cp http.conf mime.types /etc/fdfs/
-
-
安装nginx
- tar -xvf nginx-1.10.0.tar.gz
- cd /usr/local/nginx-1.10.0
- sudo ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/fastdfs-nginx-module/src
- sudo make && sudo make install # 编译安装
-
nginx整合fastdfs-module模块
-
sudo vim /opt/nginx/conf/nginx.conf
server { listen 80; server_name image.xiaolu.com; # 监听域名中带有group的,交给FastDFS模块处理 location ~/group([0-9])/ { ngx_fastdfs_module; } location / { root html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
-
-
启动
- nginx # 启动
- nginx -s stop # 停止
- nginx -s reload # 重新加载配置
-
设置开机自启
- cd /etc/init.d/
- touch nginx
- 把下方内容复制进去
# Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/usr/bin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -n "$user" ]; then if [ -z "`grep $user /etc/passwd`" ]; then useradd -M -s /bin/nologin $user fi options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done fi } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop sleep 1 start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
- chmod 777 /etc/init.d/nginx # 修改权限
- chkconfig --add /etc/init.d/nginx # 添加到服务列表
- chkconfig nginx on 设置开机启动
大功告成啦
不!最后一步设置防火墙
- /sbin/iptables -I INPUT -p tcp --dport 22122 -j ACCEPT
- /sbin/iptables -I INPUT -p tcp --dport 23000 -j ACCEPT
- /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
- /etc/rc.d/init.d/iptables save
再送一个小Demo给你哦
- 请参考: FaseDFS入门小demo