使用FastDFS文件服务器分为三步。
第一步·FastDFS系统环境搭建
第二步·开启端口
第三步·配置 Nginx 模块及访问测试
其实本地服务器和云服务器的安装方式是一样的就是配置ip的时候 云服务器需要写成公网ip
FastDFS 系统有三个角色,跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
话不多说开始吧!
对了如果发生了什么错误可以在文章尾部查看有没有类似错误!!!
以下软件在安装fastdfs都可能用的到,为了防止安装时报错我们全部安装。
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
2 开放端口
开放22122和23000端口,如果是云服务器那就用云服务的开放端口方式开放。
#开放端口
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=22122/tcp --permanent
sudo firewall-cmd --add-port=23000/tcp --permanent
sudo firewall-cmd --add-port=80/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#查看端口开放状态
sudo firewall-cmd --list-all
3 下载安装包并安装
建议把这些安装包放在统一的位置用来管理。
创建一个安装包的目录
mkdir /usr/soft
cd /usr/soft
3.1 libfastcommon
下载libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
解压到 /usr/local 目录下
tar -zxvf V1.0.7.tar.gz -C /usr/local/
编译并安装
cd /usr/local/libfastcommon-1.0.7 #切换目录
./make.sh #编译
./make.sh install #安装
编译成功:
安装成功:
下载FastDFS安装包
cd /usr/soft/
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
解压FastDFS
tar -zxvf V5.05.tar.gz -C /usr/local/
编译并安装
cd /usr/local/fastdfs-5.05 #切换目录
./make.sh #编译
./make.sh install #安装
编译成功,后部分截图:
安装成功:
cd /etc/fdfs/ #进入目录
cp tracker.conf.sample tracker.conf #拷贝一份文件
vi tracker.conf #编辑拷贝后的文件
编辑内容(这里教大家如何快速的找到这些配置,进入命令模式 输入斜杆后面接上搜索内容 回车就可以帮你找了,n是下一个 N是上一个)
#配置安装位置
base_path=/home/yuqing/fastdfs
#配置端口
http.server_port=8070
创建Tracker 工作目录
mkdir -p /home/yuqing/fastdfs
启动Tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start #启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart #重新启动
查看Tracker启动是否启动
ps -ef|grep fdfs
netstat -lnpt|grep fdfs
4.2 Storage 服务
cd /etc/fdfs/ #切换目录
cp storage.conf.sample storage.conf #拷贝配置文件
vi storage.conf #修改拷贝后的文件
修改内容(这里的ip就别跟着我写了,根据自己的ip来填)
#数据和日志的存放位置
base_path=/home/yuqing/fastdfs
#配置组名
group_name=group1
#此处可以配置多个路径,如:store_path0=xx, store_path1=xx,store_path2=xx
#多个项目的文件按照文件夹分割,通过/usr/bin/fdfs_upload_file [storage_ip:port] [store_path_index]
#选择storage服务器和store_path角标上传到相应的项目下
store_path0=/home/yuqing/fastdfs
#配置ip和端口(如果是云服务器就写公网ip)
tracker_server=192.168.130.4:22122
#修改端口
http.server_port=8888
运行Storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
查看运行状态
netstat -lnpt|grep fdfs
4.3 配置client,测试上传文件
cd /etc/fdfs/
cp client.conf.sample client.conf
vi client.conf
修改内容
#基本路径
base_path=/home/yuqing/fastdfs
#配置ip和端口(跟配置Storage服务的时候一样的)
tracker_server=192.168.130.4:22122
5 测试fastdfs
我这边在/usr/soft/ 下放了一个dog.jpg的图片
添加图片
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/soft/dog.jpg
看到下图,表示我们添加图片成功了,红线处表示保存的路径!
安装gcc
yum -y install gcc
安装pcre 和 pcre-devel
yum install -y pcre pcre-devel
安装zlib 和 zlib-devel
yum install -y zlib zlib-devel
安装openssl 和 openssl-devel
yum install -y openssl openssl-devel
切换目录到usr/soft
cd /usr/soft
拉取安装包
wget http://nginx.org/download/nginx-1.9.9.tar.gz
解压到/usr/local/ 目录下
tar -zxvf nginx-1.9.9.tar.gz -C /usr/local/
找到解压目录,编译并安装(可以先不执行)
cd /usr/local/nginx-1.9.9/
./configure
make
make install
启动nginx(可以先不执行)
cd /usr/local/nginx/sbin #切换目录
./nginx #启动
./nginx -s stop #停止
./nginx -s reload #重启
7 fastdfs-nginx-module插件
下载fastdfs-nginx-module_v1.16.tar.gz
cd /usr/soft/
wget https://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
解压fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/
修改fastdfs-nginx-module的配置文件
#进入目录
cd /usr/local/fastdfs-nginx-module/src/
vi config
config的修改内容,把包含local目录全删了
ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
将mod_fastdfs.conf拷贝到 /etc/fdfs
cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
编辑 mod_fastdfs.conf
vi /etc/fdfs/mod_fastdfs.conf
修改内容
base_path=/home/yuqing/fastdfs
#tracker_server=192.168.130.5:22122 #(多个tracker配置多行)
tracker_server=192.168.130.4:22122
#url中包含group名称
url_have_group_name=true
#指定文件存储路径(上面配置的store路径)
store_path0=/home/yuqing/fastdfs
将/usr/lib64/libfdfsclient.so 复制到 /usr/lib/
cp /usr/lib64/libfdfsclient.so /usr/lib/
配置 nginx 安装,加入fastdfs-nginx-module模块
#切换目录
cd /usr/local/nginx-1.9.9/
#配置 nginx 安装
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src/
编译并安装
make #编译
make install #安装
将解压后的nginx启动器复制到生成的nginx目录中(肯定有重复的,它提示你就输入 yes 然后回车)
cp /usr/local/nginx-1.9.9/objs/nginx /usr/local/nginx/sbin/nginx
修改--------------------------------------开头
启动nginx
/usr/local/nginx/sbin/nginx
修改-------------------------------------结尾
我们需要把fastdfs-5.05下面的配置中还没有存在/etc/fdfs中的拷贝进去
cd /usr/local/fastdfs-5.05/conf/
cp anti-steal.jpg http.conf mime.types /etc/fdfs/
编辑nginx.conf
cd /usr/local/nginx/conf
vi nginx.conf
修改内容,data这个位置根据自己配置的来
pid /usr/local/nginx/logs/nginx.pid;
location /group1/M00 {
root /home/yuqing/fastdfs/data;
ngx_fastdfs_module;
}
重新启动nginx
cd /usr/local/nginx/sbin
./nginx -s stop #停止
./nginx #启动
在拿取刚才保存文件成功的路劲去我们浏览器访问一下,可以看到成功了!
如果图片上传不成功报:
如果你的也是这个错误,你可以去看看日志。日志路劲就是在我们Storage服务的配置文件中时候填写进去的store_path0=/***/***
我的在/home/yuqing/fastdfs ,就打开这个目录
cd /home/yuqing/fastdfs
#可以查看到两个目录,一个data一个logs(日志在logs)
ls
#进入日志目录
cd logs
查看trackerd日志
cat trackerd.log #查看所有
tail trackerd.log #查看后面部分
可以看到日志中在报ip的错误 ,经过我们确认Storage.conf 和client.conf它们ip都是写的192.168.130.5
怎么会是192.168.130.4呢?
这个时候我们去data目录下看看 .data_init_flag 这个隐藏文件
#进入目录
cd /home/yuqing/fastdfs/data/
#查找隐藏文件 .data_init_flag
ls -la |grep .data_init_flag
找到了文件
查看文件,大家看到我标红的哪里,假如ip跟配置的不一致,我们就删除掉.data_init_flag
(我这里是改正过的所以ip是192.168.130.5 ,我这里之前是192.168.130.4 ,然后我删除了这个隐藏文件 重新运行了一下Storage服务和Tracker服务,然后添加图片就成功了)
cat .data_init_flag
8.2 访问文件错误
我也是根据下面的方案来解决的:
如果保存图片成功了,访问失败了;
第一先检查端口是否该开放的是否开放;
第二检查nginx配置是否正确,就那个访问路径;
第三检查mod_fastdfs.conf配置文件;
第三重启nginx,建议彻底停止在重启一遍。
结尾
好了结束了,关于这方面我找了很多资料,他们的都不怎么完整,于是我才想自己写一篇