一. 安装一些工具和依赖
- yum install git (安装git)
- yum -y install gcc (安装gcc)
二. FastDFS安装与配置
1.
cd /usr/local/
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon/
./make.sh
./make.sh install
此处需要重新设置软链接(类似于Windows的快捷方式):
ln -s /usr/lib/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib/libfdfsclient.so /usr/lib/libfdfsclient.so
2.安装 fastdfs
cd /usr/local/
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs/
./make.sh
./make.sh install
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
3.配置 tracker
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
vim /etc/fdfs/tracker.conf
disabled=false(默认为false,表示是否无效)
port=22122(默认为22122)
base_path=/data/fdfs/tracker
4.配置 client.conf
cd /etc/fdfs
cp client.conf.sample client.conf
vim /etc/fdfs/client.conf
base_path=/data/fdfs/tracker
tracker_server=你的IP:22122
创建 tracker 目录
mkdir -pv /data/fdfs/tracker
启动方式
centos6 :
service fdfs_trackerd start
centos7:
/etc/init.d/fdfs_trackerd start
查看端口
ss -lntup|grep 22122
关闭tracker
/etc/init.d/fdfs_trackerd stop
注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server
5.配置 storage
cd /etc/fdfs
cp storage.conf.sample storage.conf
vim /etc/fdfs/storage.conf
disabled=false(默认为false,表示是否无效)
port=23000(默认为23000)
group_name=group1 #指定组名
base_path=/data/fdfs/storage # 用于存储数据
store_path_count=2 #设置设备数量
store_path0=/data/fdfs/storage/m0 #指定存储路径0
store_path1=/data/fdfs/storage/m1 #指定存储路径1
注意:同一组内存储路径不能冲突,例如:下一个节点的存储路径就是m2,m3….等
tracker_server=你的IP:22122 #指定tracker
http.server_port=8888(默认为8888,nginx中配置的监听端口那之一致)
mkdir -pv /data/fdfs/storage/m0 # 创建数据目录
mkdir -pv /data/fdfs/storage/m1 # 创建数据目录
启动 storage
必须先启动tracker,再启动storage
centos6 启动方式
service fdfs_storaged start
centos7 启动方式
/etc/init.d/fdfs_storaged start
查看端口
ss -lntup|grep 23000
关闭storage
/etc/init.d/fdfs_storaged stop
文件上传测试
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /test.png(原图片路径)
group1/M00/00/00/rBEADV4Cz-eAV-s0AAJ7gm6_Mww490.jpg
三.存储服务器(storage server)安装并配置nginx
1.安装 fastdfs-nginx-module 模块
cd /root
git clone https://github.com/happyfish100/fastdfs-nginx-module
cp /root/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
connect_timeout=10
base_path=/tmp(默认为/tmp)
tracker_server=你的IP:22122
storage_server_port=23000(默认配置为23000)
url_have_group_name = true (一定要配置否则不能用group)
store_path_count=2 # 设置设备数量
store_path0=/data/fdfs/storage/m0
store_path1=/data/fdfs/storage/m1
group_name=group1(默认配置为group1)
2.安装 nginx 依赖库
yum -y install pcre-devel zlib-devel
yum -y install openssl openssl-devel
3.安装 nginx
首先要安装 PCRE
#cd /usr/local/src/
#wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
#tar zxvf pcre-8.35.tar.gz
#cd pcre-8.35
#./configure
#make && make install
#pcre-config --version
安装 Nginx
# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.9.9.tar.gz
# tar zxvf nginx-1.9.9.tar.gz
cd nginx-1.9.9
编译//路径一定要正确
./configure --prefix=/application/nginx/ --with-pcre=/usr/local/src/pcre-8.35 --add-module=../fastdfs-nginx-module/src/
make && make install
cp /root/usr/local/fastdfs/conf/http.conf /etc/fdfs/
cp /root/usr/local/fastdfs/conf/mime.types /etc/fdfs/
注意:fastdfs安装目录下的配置文件
4.配置 nginx
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
vim /usr/local/webserver/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
/usr/local/webserver/nginx/sbin/nginx -t
检查配置文件nginx.conf的正确性命令;
启动 Nginx
/usr/local/webserver/nginx/sbin/nginx
四.访问图片
http://ip:9999/group1/M00/00/00/rBEADV4Cz-eAV-s0AAJ7gm6_Mww490.jpg
五.遇到的问题
nginx 400 Bad Request fastfds?
解决办法:
vi /etc/fdfs/mod_fastdfs.conf
将
url_have_group_name=false
改为
url_have_group_name=true