CentOS 7.4 64位
FastDFS_v5.08.tar.gz
nginx-1.8.1.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon
服务器名称 | IP地址和端口 | 备注 |
---|---|---|
fastdfs-tracker | 192.168.25.133:22122 | 跟踪服务器/调度服务器 |
fastdfs-storage | 192.168.25.133:23000 | 存储服务器 |
[root@fastdfs-storage ~]# mkdir -p /home/oldcat/tools
[root@fastdfs-storage ~]# cd /home/oldcat/tools/
[root@fastdfs-storage tools]# wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
[root@fastdfs-storage tools]# unzip master
[root@fastdfs-storage tools]# cd libfastcommon-master/
[root@fastdfs-storage libfastcommon-master]# ls
HISTORY INSTALL libfastcommon.spec make.sh php-fastcommon README src
[root@fastdfs-storage libfastcommon-master]# ./make.sh
[root@fastdfs-storage libfastcommon-master]# ./make.sh install
-bash: unzip: command not found
则是命令没有找到,其原因肯定是没有安装unzip。
安装命令是:
yum install -y unzip zip
[root@fastdfs-tracker tools]# wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.08/FastDFS_v5.08.tar.gz
[root@fastdfs-tracker tools]# tar xf FastDFS_v5.08.tar.gz
[root@fastdfs-tracker tools]# cd FastDFS
[root@fastdfs-tracker FastDFS]# ./make.sh && ./make.sh install
采用默认方式安装后的文件及目录:
[root@fastdfs-tracker ~]# ll /etc/init.d/ |grep fdfs
-rwxr-xr-x. 1 root root 918 4月 22 22:08 fdfs_storaged
-rwxr-xr-x. 1 root root 920 4月 22 22:08 fdfs_trackerd
[root@fastdfs-tracker ~]# ll /etc/fdfs/
总用量 20
-rw-r--r--. 1 root root 1461 4月 22 22:08 client.conf.sample
-rw-r--r--. 1 root root 7927 4月 22 22:08 storage.conf.sample
-rw-r--r--. 1 root root 7200 4月 22 22:08 tracker.conf.sample
[root@fastdfs-tracker ~]# ll /usr/bin|grep fdfs
-rwxr-xr-x. 1 root root 252272 4月 22 22:08 fdfs_appender_test
-rwxr-xr-x. 1 root root 252225 4月 22 22:08 fdfs_appender_test1
-rwxr-xr-x. 1 root root 242449 4月 22 22:08 fdfs_append_file
-rwxr-xr-x. 1 root root 242013 4月 22 22:08 fdfs_crc32
-rwxr-xr-x. 1 root root 242508 4月 22 22:08 fdfs_delete_file
-rwxr-xr-x. 1 root root 243627 4月 22 22:08 fdfs_download_file
-rwxr-xr-x. 1 root root 243369 4月 22 22:08 fdfs_file_info
-rwxr-xr-x. 1 root root 255657 4月 22 22:08 fdfs_monitor
-rwxr-xr-x. 1 root root 863913 4月 22 22:08 fdfs_storaged
-rwxr-xr-x. 1 root root 258712 4月 22 22:08 fdfs_test
-rwxr-xr-x. 1 root root 257881 4月 22 22:08 fdfs_test1
-rwxr-xr-x. 1 root root 365232 4月 22 22:08 fdfs_trackerd
-rwxr-xr-x. 1 root root 243547 4月 22 22:08 fdfs_upload_appender
-rwxr-xr-x. 1 root root 244453 4月 22 22:08 fdfs_upload_file
[root@fastdfs-tracker ~]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
[root@fastdfs-storage ~]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
disabled=false(默认为false,表示是否无效)
port=22122(默认为22122)
base_path=/data/fastdfs/tracker
base_path=/data/fastdfs/tracker
tracker_server=192.168.25.133:22122
例:192.168.25.133
[root@fastdfs-tracker ~]# mkdir -p /data/fastdfs/tracker
[root@fastdfs-tracker ~]# cd /data/fastdfs/tracker/
[root@fastdfs-tracker tracker]# ls
[root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd start
Starting FastDFS tracker server:
[root@fastdfs-tracker tracker]# ss -lntup|grep 22122
tcp LISTEN 0 128 *:22122 *:* users:(("fdfs_trackerd",3785,5))
[root@fastdfs-tracker tracker]# ls
data logs
[root@fastdfs-tracker tracker]# /etc/init.d/fdfs_trackerd stop
waiting for pid [3785] exit ...
pid [3785] exit.
[root@fastdfs-storage ~]# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
disabled=false(默认为false,表示是否无效)
port=23000(默认为23000)
base_path=/data/fastdfs/storage
tracker_server=192.168.25.133:22122
store_path0=/data/fastdfs/storage
http.server_port=8888(默认为8888,nginx中配置的听端口那之一致)
例:192.168.25.133
[root@fastdfs-storage ~]# mkdir -p /data/fastdfs/storage
[root@fastdfs-storage ~]# cd /data/fastdfs/storage/
[root@fastdfs-storage storage]# ls
[root@fastdfs-storage storage]# /etc/init.d/fdfs_storaged start
Starting FastDFS storage server:
[root@fastdfs-storage storage]# ss -lntup|grep 23000
tcp LISTEN 0 128 *:23000 *:* users:(("fdfs_storaged",3786,5))
[root@fastdfs-storage storage]# ls
data logs
执行如下上传命令:
[root@fastdfs-tracker ~]#mkdir /home/oldcat/imgs
然后通过sftp传一张图片到服务器即可(改名为test.xxx);
[root@fastdfs-tracker ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg
group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg
返回文件ID即说明文件已经上传成功
注:FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
[root@fastdfs-storage tools]# wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
[root@fastdfs-storage tools]# tar xf fastdfs-nginx-module_v1.16.tar.gz
[root@fastdfs-storage tools]# cd fastdfs-nginx-module/src/
[root@fastdfs-storage src]# vim config
编辑config文件,执行如下命令进行批量替换并保存退出
:%s+/usr/local/+/usr/+g
[root@fastdfs-storage ~]# cp /home/oldcat/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
[root@fastdfs-storage ~]# vim /etc/fdfs/mod_fastdfs.conf
修改内容如下:
connect_timeout=10
base_path=/tmp(默认为/tmp)
tracker_server=192.168.25.133:22122(云服务器为公有IP)
storage_server_port=23000(默认配置为23000)
url_have_group_name = true
store_path0=/data/fastdfs/storage
group_name=group1(默认配置为group1)
[root@fastdfs-storage nginx-1.8.1]# yum install -y pcre-devel zlib-devel
[root@fastdfs-storage tools]# wget http://nginx.org/download/nginx-1.8.1.tar.gz
[root@fastdfs-storage tools]# tar xf nginx-1.8.1.tar.gz
[root@fastdfs-storage tools]# cd nginx-1.8.1
[root@fastdfs-storage nginx-1.8.1]# ./configure --prefix=/application/nginx/ --add-module=../fastdfs-nginx-module/src/
[root@fastdfs-storage nginx-1.8.1]# make && make install
[root@fastdfs-storage ~]# cp /home/oldcat/tools/FastDFS/conf/http.conf /etc/fdfs/
[root@fastdfs-storage ~]# cp /home/oldcat/tools/FastDFS/conf/mime.types /etc/fdfs/
[root@fastdfs-storage ~]# vim /application/nginx/conf/nginx.conf
user root;
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;
}
}
}
说明:
- "user root"是解决下载操作时报404的问题
- 8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应
- storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:
location ~/group[0-9]/ { ngx_fastdfs_module; }
[root@fastdfs-storage ~]# cp /application/nginx/sbin/nginx /etc/init.d/
[root@fastdfs-storage ~]# /etc/init.d/nginx
[root@fastdfs-storage ~]# ss -lntup|grep 8888
tcp LISTEN 0 128 *:8888 *:* users:(("nginx",7308,6),("nginx",7309,6))
例:IP:8888/group1/M00/00/00/rBGcBVqBZ_mAGl9oAAEfvSdB99w682.jpg
浏览器可以成功访问到上传的图片,说明使用FastDFS搭建的图片服务器成功完成!
注意:若是在远程服务器上此处IP应为公网IP,并且服务器需要设置安全组开放8888端口