ubuntu16.04 FastDFS 环境搭建
机器:root,ubuntu16.04
gcc,g++编译器
apt-get install gcc
apt-get install g++
apt-get install build-essential
apt-get install libtool
Nginx安装和配置
准备工作
PCRE库安装
wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8. 44.tar.gz
tar -zxvf pcre-8.44.tar.gz
cd pcre-8.44/ 4 ./configure
make ; make install
zlib安装
wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zl ib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make ; make install
OpenSSL开发库安装
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g/
./config
make
make install
Nginx 安装与启动
编译安装Nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
nginx-1.16.1/
./configure
make
make install
启动与关闭
默认情况下,Nginx被安装在⽬录/usr/local/nginx中
cd usr/local/nginx
ls
显示:conf html logs sbin
其中,其中Nginx的配置⽂件存放于conf/nginx.conf,bin⽂件是位于sbin⽬录下的nginx⽂件。
-
默认⽅式启动Nginx服务器
/usr/local/nginx/sbin/nginx (需要sudo权限)
这时,会⾃动读取配置⽂件:/usr/local/nginx/conf/nginx.conf
-
查看nginx进程
ps -ef|grep nginx
打开浏览器访问此自己的机器的IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运⾏成功:
- 指定配置⽂件启动服务器
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- 测试配置信息
/usr/local/nginx/sbin/nginx -t
FastDFS 安装与配置
终于到FastDFS的安装配置啦。
版本:
-
libfastcommon 1.0.50
-
fastdfs 6.0.7
安装 libfastcommon
libfastcommon 的git下载地址:https://github.com/happyfish100/libfastcommon
安装FastDFS前,需要先安装libfastcommon ~
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
git checkout V1.0.50
./make.sh
./make.sh install
安装FastDFS
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
git checkout V6.07
./make.sh && ./make.sh install
FastDFS是啥,用来干啥的,功能原理是啥,前一篇都有说到【https://blog.csdn.net/qq_43058348/article/details/120486382】
配置 Tracker
# 创建 Tracker 的存储⽇志和数据的根⽬录
mkdir -p /home/fastdfs/tracker
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
# 配置 tracker.conf
vim tracker.conf
在这⾥,tracker.conf 只是修改⼀下 Tracker 存储⽇志和数据的路径
# 启⽤配置⽂件(默认为 false,表示启⽤配置⽂件)
disabled=false
# Tracker 服务端⼝(默认为 22122)
port=22122
# 存储⽇志和数据的根⽬录
base_path=/home/fastdfs/tracker
主要修改base_path路径。
配置storage
# 创建 Storage 的存储⽇志和数据的根⽬录
mkdir -p /home/fastdfs/storage
cd /etc/fdfs
cp storage.conf.sample storage.conf
# 配置 storage.conf
vim storage.conf
在这⾥,storage.conf 只是修改⼀下 storage 存储⽇志和数据的路径
# 启⽤配置⽂件(默认为 false,表示启⽤配置⽂件)
disabled=false
# Storage 服务端⼝(默认为 23000)
port=23000
# 数据和⽇志⽂件存储根⽬录
base_path=/home/fastdfs/storage
# 存储路径,访问时路径为 M00
# store_path1 则为 M01,以此递增到 M99(如果配置了多个存储⽬录的话,这⾥只 指定 1 个)
store_path0=/home/fastdfs/storage
# Tracker 服务器 IP 地址和端⼝,单机搭建时也不要写 127.0.0.1
# tracker_server 可以多次出现,如果有多个,则配置多个
tracker_server=120.27.131.197:22122
# 设置 HTTP 访问⽂件的端⼝。这个配置已经不⽤配置了,配置了也没什么⽤
# 这也是为何 Storage 服务器需要 Nginx 来提供 HTTP 访问的原因
http.server_port=8888
主要修改:base_path、store_path0、tracker_server
启动Tracker 和 Storage
#启动 Tracker 服务
# 其它操作则把 start 改为 stop、restart、reload、status 即可。Storage 服务相同
/etc/init.d/fdfs_trackerd start
# 启动 Storage 服务
/etc/init.d/fdfs_storaged start
# 可以通过 fdfs_monitor 查看集群的情况
# 查看 Storage 是否已经注册到 Tracker 服务器中
# 当查看到 ip_addr = 120.27.131.197 (localhost.localdomain) ACTIV E
# ACTIVE 表示成功
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
可以去查看/etc/init.d/fdfs_trackerd⽂件, fdfs_trackerd的实际执⾏程序 为:/usr/bin/fdfs_trackerd,配置⽂件为:/etc/fdfs/tracker.conf。
这样后续我们也可以单台机器通过修改端⼝的⽅式去启动多个tracker、storage。
测试上传文件
# 修改 Tracker 服务器客户端配置⽂件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
# 存储⽇志⽂件的基本路径
base_path=/home/fastdfs/tracker
# Tracker 服务器 IP 地址与端⼝号
tracker_server=120.27.131.197:22122
主要修改base_path和tracker_server
拷⻉⼀个⽂件到 root ⽬录下
# 存储到 FastDFS 服务器中
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/test.txt
当返回⽂件 ID 号,如 group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt 则表示上传成功
如果报错:tracker_query_storage fail, error no: 2, error info: No such file or directory,⼀般都是
因为路径没有设置对。可以查看日志
tail -f /home/fastdfs/storage/logs/storaged.log
下载文件测试
查看刚刚上传的文件路径为/home/fastdfs/storage/data/00/00
下载:
fdfs_download_file /etc/fdf s/client.conf group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt
root# ls
删除:
fdfs_delete_file /etc/fdfs/ client.conf group1/M00/00/00/eBuDxWCb2qmAQ89yAAAAKeR1iIo162.txt
可以进去/home/fastdfs/storage/data/00/00路径查看刚才的⽂件是否被删除。
接下来我们继续安装Nginx
-
Storage 安装 Nginx,为了提供 http 的访问和下载服务,同时解决 group 中 Storage 服务器的同步
延迟问题
-
Tracker 安装 Nginx,主要是为了提供 http 访问的反向代理、负载均衡以及缓存服务
fastdfs-nginx-module安装
下载fastdfs-nginx-module
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
cd fastdfs-nginx-module
git checkout V1.22
cd fastdfs-nginx-module/ 会发现⾥⾯有个INSTALL 和 src⽬录,这个不需要make⽽是需要重新编译 ⼀下storage的Nginx模块。
安装和编译Nginx 并添加FastDFS模块
#进⼊到nginx源码⽬录
cd nginx-1.16.1/ (本⼈路径:/home/user/work/nginx-1.16.1)
./configure --add-module=/home/user/work/fastdfs-nginx-module/src
其中/home/user/work/fastdfs-nginx-module/src是刚才下载的的fastdfs_nginx_module模 块的绝对路径,就是在编译Nginx时候,连同这个模块⼀起编译。
给 nginx ⽬录下的 objs/Makefile ⽂件中增加头⽂件⽬录
```shell
vim objs/Makefile
```
添加
ALL_INCS = -I src/core \
-I /usr/include/fastdfs \ #添加1
-I /usr/include/fastcommon \ #添加2
-I src/event \
-I src/event/modules \
重新编译及安装nginx
make ; make install
fastdfs-nginx-module配置
fastdfs-nginx-module配置⽂件
切换到fastdfs-nginx-module/src路径
将fastdfs-nginx-module/src/mod_fastdfs.conf 拷⻉到/etc/fdfs/下:
cp mod_fastdfs.conf /etc/fdfs/
fastdfs-nginx-module 和 FastDFS 配置⽂件修改# 复制 FastDFS 的部分配置⽂件到 /etc/fdfs
cd /home/usr/fastdfs 进入fastdfs目录
cp conf/http.conf /etc/fdfs/
cp conf/mime.types /etc/fdfs/
修改 vim /etc/fdfs/mod_fastdfs.conf
# Tracker 服务器IP和端⼝修改
tracker_server=120.27.131.197:22122
# url 中是否包含 group 名称,改为 true,包含 group
url_have_group_name = true
# 配置 Storage 信息,修改 store_path0 的信息
store_path0=/home/fastdfs/storage
# 其它的⼀般默认即可,例如
base_path=/tmp 9 group_name=group1
storage_server_port=23000
store_path_count=1
主要修改tracker_server、url_have_group_name、store_path0。
配置nginx
vim /usr/local/nginx/conf/nginx.conf
配置为⽀持 group0-group9,以及 M00-M99,以便于以后扩容
location ~/group([0-9])/M([0-9])([0-9]) {
ngx_fastdfs_module;
}
配置完fastdfs-nginx-module后需要重启nginx
/usr/local/nginx/sbin/nginx -s reload
如果nginx日志文件里出现错误,先停止nginx再启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
测试
服务器中测试上传。
fdfs_upload_file /etc/fdfs/client.conf 自己随便找个文件.txt
拿到存储位置:group1/M00/00/00/eBuDxWCeIFCAEFUrAAAAKTIQHvk462.txt
如果是group1开头,查看group1中storage⽂件是否存在
浏览器输⼊:
http://ip:80/group1/M00/00/00/eBuDxWCeIFCAEFUrAAAAKTIQHvk462.txt