Ubuntu18.04系统FastDFS+Nginx+fastdfs-nginx-module单机部署

01 下载安装 libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可

# 下载libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz

# 新建目录
mkdir -p /usr/local/libfastcommon

# 将下载V1.0.36.tar.gz压缩包拷贝到新建的目录下然后解压
cp V1.0.36.tar.gz /usr/local/libfastcommon
cd /usr/local/libfastcommon
tar -zxvf V1.0.36.tar.gz
cd libfastcommon-1.0.36


# 编译、安装
./make.sh
./make.sh install

02 下载安装FastDFS

# 下载FastDFS
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

# 新建目录
mkdir -p /usr/local/fastdfs

# 将下载好的V5.11.tar.gz文件拷贝到新建的目录中然后解压
cp V5.11.tar.gz /usr/local/fastdfs
cd /usr/local/fastdfs
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11

# 编译、安装
./make.sh
./make.sh install

从上面的安装过程中,我们可以看到libfastcommon.so和libfdfsclient.so文件都安装到了/usr/lib64/目录下,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接

# 创建libfastcommon.so软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

# 创建libfdfsclient.so软链接
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下,所以需要建立 /usr/bin 到 /usr/local/bin 的软链接

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/stop.sh       /usr/local/bin
ln -s /usr/bin/restart.sh    /usr/local/bin

03 FastDFS配置

创建存储目录

# 用于存储tracker server的数据和日志
mkdir -p /data/fastdfs/tracker

# 用于存储storage server的数据和日志
mkdir -p /data/fastdfs/storage

# 用于存储上传的资源文件
mkdir -p /data/fastdfs/res

# 用于存储client server的数据和日志
mkdir -p /data/fastdfs/client

# 临时目录
mkdir -p /data/fastdfs/temp

1. 配置跟踪服务器(tracker server)

# 切换路径,复制一份tracker.conf.sample文件并修改文件名
cd /etc/fdfs
cp tracker.conf.sample tracker.conf

# 编辑tracker.conf
vim tracker.conf

tracker.conf

# 修改内容如下
# 启用配置
disabled=false

# tracker服务器端口(默认22122)
port=22122

# Tracker 存储数据和日志根目录(根目录必须存在,子目录会自动创建)
base_path=/data/fastdfs/tracker

# HTTP 服务端口
http.server_port=80

2. 配置存储服务器(storage server)

# 切换路径,复制一份storage.conf.sample文件并修改文件名
cd /etc/fdfs
cp storage.conf.sample storage.conf

# 编辑storage.conf
vim storage.conf

storage.conf

# 修改内容如下
# 启用配置
disabled=false

# storage服务器端口(默认23000)
port=23000

# 将base_path路径改为刚新建的storage目录
# 数据和日志存储的根目录
base_path=/data/fastdfs/storage

# 指定第一存储目录
# 逐一配置 store_path_count 个路径,索引号基于0
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样
store_path0=/data/fastdfs/res

# 指定tracker服务器地址,此处是上面预定好的IP
tracker_server=192.168.8.66:22122

# HTTP 访问文件的端口,此处需要与后面Nginx监听的端口保持一致
http.server_port=80

3. 配置客户端服务器(client server)

注意:此处仅为测试上传,后面会使用代码来上传文件

# 切换路径,复制一份client.conf.sample文件并修改文件名
cd /etc/fdfs
cp client.conf.sample client.conf

# 编辑client.conf
vim client.conf

client.conf

# 将base_path路径改为刚新建的client目录
base_path=/data/fastdfs/client

# 指定tracker服务器地址(我的是在本机,所有是本机ip和端口号)
tracker_server=192.168.8.66:22122

4. 启动tracker和storage

# 启动tracker和storage
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

# 也可以通过以下命令启动
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start

# 查看tracker和storage启动是否成功
netstat -unltp |grep fdfs

5. 测试文件上传功能

若将/home/qq.jpg图片上传上去,则切换路径到home/下,执行以下命令即可上传

# 上传图片
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf qq.jpg

上传成功后,会返回如下类似的fileId:

group1/M00/00/00/rBrBnV4JyuWAMX1hAAB8sNyL4fU595.jpg

通过上面的步骤,我们可以上传文件了,但是不能够将上传的文件下载下来。因此我们需要Nginx作为服务器支持Http方式访问文件,同样的后面安装FastDFS模块页需要用到Nginx环境。Nginx只需要安装在storage server所在的服务器即可,用于访问文件。而我这里由于是单机,tracker server和storage server都在同一台服务器上

04 安装Nginx

1. 安装nginx所需环境

# nginx 所需依赖的库
apt-get install libpcre3 libpcre3-dev
apt-get install openssl libssl-dev
apt-get install zlib1g-dev

2. 安装nginx

# 下载Nginx
wget https://nginx.org/download/nginx-1.12.1.tar.gz

# 新建目录
mkdir -p /usr/local/nginx

# 复制并切换路径
cp nginx-1.12.1.tar.gz /usr/local/nginx
cd /usr/local/nginx

# 解压
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1

# 使用默认配置
./configure

# 编译、安装
make
make install

如果在make的时候出现这个错误:

在这里插入图片描述

解决方法:找到对应的Makefile文件,将gcc参数中的-Werror去掉

vim objs/Makefile

在这里插入图片描述

3. 启动nginx

# 启动Nginx
cd /usr/local/nginx/sbin/
./nginx

# 或者可以直接输入以下命令
/usr/local/nginx/sbin/nginx

# 其他命令
./nginx -s stop
./nginx -s reload
./nginx -s quit

4. 访问上传的文件

修改nginx配置文件nginx.conf

vim /usr/local/nginx/conf/nginx.conf

# 添加如下行,将 /group1/M00 映射到 /data/fastdfs/res/data
location /group1/M00 {
    alias /data/fastdfs/res/data;
}

# 重新加载nginx配置
/usr/local/nginx/sbin/nginx -s reload

在浏览器访问之前上传的图片

http://192.168.8.66/group1/M00/00/00/rBrBnV4JyuWAMX1hAAB8sNyL4fU595.jpg

05 在所有的storage节点安装fastdfs-nginx-module

1. fastdfs-nginx-module作用说明及资源下载

FastDFS通过tracker服务器,将文件放在storage存储服务器中,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。若Tracker服务器将文件上传到了192.168.61.129,上传成功后文件fileID已经返回给客户端。此时FastDFS存储集群机制才会将这个文件同步到同组存储192.168.61.130,在文件还没有复制完成的情况下,客户端如果用这个返回的fileID在192.168.61.130上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

  # 切换目录
  cd /usr/local

  # 下载fastdfs-nginx-module
  wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

  # 解压
  unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

  # 重命名解压后的文件
  mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1/ fastdfs-nginx-module-master

2. 配置nginx,在nginx中添加模块

  # 先将nginx停掉
  /usr/local/nginx/sbin/nginx -s stop
  
  # 进入解压包目录
  cd /usr/local/nginx/nginx-1.12.1

  # 添加模块
  ./configure --add-module=../../fastdfs-nginx-module-master/src

  # 重新编译、安装(编译报错同上)
  make && make install

3. 修改配置文件

添加模块成功后,需要将fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改

 cp /usr/local/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
 vim /etc/fdfs/mod_fastdfs.conf

mod_fastdfs.conf

  # 客户端访问文件连接超时时长(单位:秒)
  connect_timeout=10

  # 临时目录
  base_path=/data/fastdfs/temp

  # tracker服务IP和端口
  tracker_server=192.168.8.66:22122

  # storage服务端口
  storage_server_port=23000

  # 组名
  group_name=group1

  # 访问链接前缀加上组名 eg:group1
  url_have_group_name=true

  # 文件存储路径
  store_path0=/data/fastdfs/res

4. 复制 FastDFS 的部分配置文件到/etc/fdfs 目录

 cd /usr/local/fastdfs/fastdfs-5.11/conf/
 cp http.conf mime.types anti-steal.jpg /etc/fdfs/

5. 配置nginx访问storage文件,修改nginx.conf

  vim /usr/local/nginx/conf/nginx.conf
  
  # 修改配置,其它的默认,在80端口下添加fastdfs-nginx模块
  location ~/group([0-9])/M00 {
      ngx_fastdfs_module;
  }

  # 启动nginx
  /usr/local/nginx/sbin/nginx
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值