Ubuntu安装FastDFS

1.安装依赖

Ubuntu16.04

$ sudo apt-get install unzip

$ sudo apt-get install libpcre3 libpcre3-dev

$ sudo apt-get install zlib1g zlib1g-dev

$ sudo apt-get install openssl libssl-dev

2.下载必要的包

$ mkdir sofware

$ cd software

# FastDFSV5.11源码包

$ wget https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11

$ tar -zxvf V5.11

# libfastcommon依赖库源码包

$ wget https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.36

$ tar -zxvf V1.0.36

# fastdfs-nginx-module模块源码包

$ wget https://codeload.github.com/happyfish100/fastdfs-nginx-module/zip/master

$ unzip master

$ wget http://nginx.org/download/nginx-1.12.2.tar.gz

$ tar -zxvf nginx-1.12.2.tar.gz

3.安装包

# 安装FastDFS依赖包

$ cd libfastcommon-1.0.36/

$ ./make.sh

$ sudo ./make.sh install

# libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以此处需要重新设置软链接:

$ sudo ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

$ sudo ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

$ sudo ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

# 安装FastDFS

$ cd ..

$ cd fastdfs-5.11/

$ ./make.sh

$ sudo ./make.sh install

$ cd ..

编译安装nginx

① 下载nginx

# wget http://nginx.org/download/nginx-1.12.2.tar.gz

② 解压
# tar -zxvf nginx-1.12.2.tar.gz
# cd nginx-1.12.2

③ 使用默认配置
# ./configure

④ 编译、安装
# make
# make install

⑤ 启动nginx
# /usr/local/nginx/sbin/nginx

其它命令
# /usr/local/nginx/sbin/nginx -s stop
# /usr/local/nginx/sbin/nginx -s quit
# /usr/local/nginx/sbin/nginx -s reload
————————————————

4.配置包
tracker配置

$ sudo mkdir -p /FastDFS/tracker

$ sudo mkdir -p /FastDFS/storage

$ cd /etc/fdfs/

$ sudo cp client.conf.sample client.conf

$ sudo cp storage.conf.sample storage.conf

$ sudo cp tracker.conf.sample tracker.conf

# 配置tracker

$ sudo gedit /etc/fdfs/tracker.conf

#设置tracker的数据文件和日志目录

base_path=/FastDFS/tracker

# 启动tracker服务

$ sudo /etc/init.d/fdfs_trackerd start

# 查看服务状态

$ sudo netstat -unltp|grep fdfs

tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 14628/fdfs_trackerd

服务运行的22122端口正常

storage配置

$ sudo vim /etc/fdfs/storage.conf

#设置storage数据文件和日志目录

base_path=/FastDFS/storage

store_path0=/FastDFS/storage

#存储路径个数,需要和store_path个数匹配

store_path_count=1

#tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功

$ tracker_server=192.168.184.132:22122

$ sudo /etc/init.d/fdfs_storaged start

$ sudo netstat -unltp|grep fdfs

tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 15063/fdfs_storaged

tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 14628/fdfs_trackerd

# 查看:storage服务器是否已经登记到 tracker服务器,运行以下命令:

$ sudo /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

测试

# 编辑/etc/fdfs/client.conf配置文件

$ sudo vim /etc/fdfs/client.conf

# 修改内容:

base_path=/FastDFS/tracker

tracker_server=192.168.184.132:22122

# 上传文件测试:

$ fdfs_upload_file /etc/fdfs/client.conf /home/ubuntu/1.jpg

# 如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功

配置nginx


# 拷贝配置文件

$ sudo cp/home/ubuntu/software/fastdfs-5.11/conf/http.conf /etc/fdfs/

$ sudo cp /home/ubuntu/software/fastdfs-5.11/conf/mime.types /etc/fdfs/

$ sudo cp /home/ubuntu/software/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

# 编辑mod_fastdfs.conf文件,

$ sudo vim /etc/fdfs/mod_fastdfs.conf

#保存日志目录

base_path=/FastDFS/storage

#tracker服务器的IP地址以及端口号

tracker_server=192.168.184.132:22122

#文件 url 中是否有 group 名

url_have_group_name = true

# 存储路径

store_path0=/FastDFS/storage


# 配置nginx

# sudo vim /usr/local/nginx/conf/nginx.conf


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

# 重启nginx
# /usr/local/nginx/sbin/nginx -s reload

在这里插入图片描述
FastDFS 配置 Nginx 模块
1、安装配置Nginx模块
① fastdfs-nginx-module 模块说明
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.2.125,上传成功后文件 ID已经返回给客户端。
此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.2.126,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.51.126 上取文件,就会出现文件无法访问的错误。
而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
② 下载 fastdfs-nginx-module、解压

# 这里为啥这么长一串呢,因为最新版的master与当前nginx有些版本问题。
# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

# 解压
# unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
# 重命名
# mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1  fastdfs-nginx-module-master

③ 配置Nginx
在nginx中添加模块

# 先停掉nginx服务
# /usr/local/nginx/sbin/nginx -s stop


进入解压包目录
# cd ~/nginx-1.12.1/


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


重新编译、安装
# make && make install

④ 查看Nginx的模块

# /usr/local/nginx/sbin/nginx -V

⑤ 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改

# cd ~/fastdfs-nginx-module-master/src 
# sudo cp mod_fastdfs.conf /etc/fdfs/ 
# sudo gedit /etc/fdfs/mod_fastdfs.conf

修改如下配置,其它默认

# 连接超时时间
connect_timeout=10  --根据需要修改--


# Tracker Server
tracker_server=192.168.2。125:22122  --修改为自己的ip--


# StorageServer 默认端口
storage_server_port=23000


# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name = true   --需要修改--


# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/home/fastdfs/file  --需要修改--

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

# cd ~/fastdfs-5.05/conf/ 
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

⑦ 配置nginx,修改nginx.conf

# sudo gedit /usr/local/nginx/conf/nginx.conf

在80端口下添加fastdfs-nginx模块

location ~/group([0-9])/M00 {
     ngx_fastdfs_module; 
}

在这里插入图片描述
注意:
listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成80了)相对应。如果改成其它端口,则需要统一,同时在防火墙中打开该端口。
location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group。
⑧ 在/home/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略

# ln -s /home/fastdfs/file/data/ /home/fastdfs/file/data/M00/

在这里插入图片描述

外网服务器安装注意事项!!!

下面的操作是在已经搭建好fastdfs和配置好nginx代理情况下解决的

原来在虚拟机上配的,一切正常,只是虚拟机用的不是云服务器分的公网IP,都是局域网玩耍,上传下载一点问题都没。昨天刚搬到ECS云服务器上,配了公网IP一直上传不了,后来配了私网IP,在虚拟机上上传都没问题的,但是到java程序中就蒙圈了,总不能tracker_server写私网IP吧,昨天网上找了各种答案,都不行,fastdfs的issues翻遍了,还是不行,最后看了一篇文章启发了,下面是解决方法:

cd /etc/fdfs

vi tracker.conf 或 vim tracker.conf

port=22122 #设置tracker的端口号,通常采用22122这个默认端口

添加端口

firewall-cmd --permanent --zone=public --add-port=22122/tcp

firewall-cmd --permanent --zone=public --add-port=8080/tcp

service fdfs_trackerd restart

cd /etc/fdfs
vim storage.conf
tracker_server=公网IP:22122
添加端口
firewall-cmd --permanent --zone=public --add-port=23000/tcp
firewall-cmd --permanent --zone=public --add-port=8888/tcp
重启
service fdfs_storaged restart

cd /etc/fdfs
vim client.conf

tracker_server=公网IP:22122

如果还有nginx做代理(fastdfs-nginx-module)
vim /etc/fdfs/mod_fastdfs.conf
tracker_server=公网IP:22122

最后才是重点,如果是ECS,要添加安全组规则
允许 自定义 TCP 23000/23000 地址段访问 0.0.0.0/0
允许 自定义 TCP 22122/22122 地址段访问 0.0.0.0/0
允许 自定义 TCP 8080/8080 地址段访问 0.0.0.0/0
允许 自定义 TCP 8888/8888 地址段访问 0.0.0.0/0

StorageClient1 无论在哪个网段都可以上传

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值