FastDFS单机版安装教程

安装清单如下:

一、安装FastDFS

1. 安装libfastcommon

先解压安装包到目录

# unzip libfastcommon-1.0.36.zip 

安装编译工具及环境(后面Nginx也会用到这些依赖环境)

# yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-deve
# yum -y install pcre-devel openssl openssl-devel
# yum -y install zlib zlib-deve

编译libfastcommon软件并安装

# ./make.sh && ./make.sh install

为libcommon 创建软链接到/usr/local/lib目录下

# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

2. 安装FastDFS

解压安装包

# tar -xvf FastDFS_v5.01.tar.gz

编译并安装

# cd FastDFS
# ./make.sh && ./make.sh install

安装成功后,FastDFS会安装在/etc/fdfs目录下:

[root@localhost FastDFS]# ll /etc/fdfs/
total 56
-rw-r--r--. 1 root root  1461 Aug 13 06:39 client.conf
-rw-r--r--. 1 root root   858 Aug 13 06:39 http.conf
-rw-r--r--. 1 root root 31172 Aug 13 06:39 mime.types
-rw-r--r--. 1 root root  7535 Aug 13 06:39 storage.conf
-rw-r--r--. 1 root root  6990 Aug 13 06:39 tracker.conf

FastDFS安装结束

二、安装Tracker

1. 创建tracker工作目录

此目录用于保存tracker 的data和log

# mkdir -p /data/fastdfs_tracker

2.配置tracker

配置 /etc/fdfs目录下tracker.conf

主要实现以下4个配置内容:

disabled=false 
port=22122 #默认端口号 
base_path=/data/fastdfs_tracker #我刚刚创建的目录 
http.server_port=8080 #默认端口是8080
bind_addr=0.0.0.0 #监听地址

完整tracker.conf 文件信息如下:

disabled=false
bind_addr=0.0.0.0
port=22122
connect_timeout=30
network_timeout=60
base_path=/opt/fastdfs_tracker
max_connections=512
accept_threads=1
work_threads=4
min_buff_size=8KB
max_buff_size=128KB
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space=10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval=10
check_active_interval=120
thread_stack_size=64KB
storage_ip_changed_auto_adjust=true
storage_sync_file_max_delay=86400
storage_sync_file_max_time=300
use_trunk_file=false
slot_min_size=256
slot_max_size=16MB
trunk_file_size=64MB
trunk_create_file_advance=false
trunk_create_file_time_base=02:00
trunk_create_file_interval=86400
trunk_create_file_space_threshold=20G
trunk_init_check_occupying=false
trunk_init_reload_from_binlog=false
trunk_compress_binlog_min_interval=0
use_storage_id=false
storage_ids_filename=storage_ids.conf
id_type_in_filename=ip
store_slave_file_use_link=false
rotate_error_log=false
error_log_rotate_time=00:00
rotate_error_log_size=0
log_file_keep_days=0
use_connection_pool=false
connection_pool_max_idle_time=3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html

3. 将Tracker加入开机启动项

# cp /usr/fastdfs/FastDFS/init.d/fdfs_trackerd /etc/init.d/
# chkconfig --add fdfs_trackerd
# chkconfig fdfs_trackerd on

启动Tracker Server

# service fdfs_trackerd start

4. 查看一下tracker的端口监听情况

# netstat -unltp|grep fdfs

三、安装Storage

1. 配置storage工作目录

由于storage还需要一个目录用来存储数据,因此多建了两个目录fastdfs_storage_data,fastdfs_storage

# mkdir -p /data/fastdfs_storage
# mkdir -p /data/fastdfs_storage_data

2. 配置storage文件

修改 /etc/fdfs 目录下 storage.conf 文件

修改要点如下:

disabled=false
group_name=group1 #组名,根据实际情况修改 
port=23000 #设置storage的端口号,同一个组的storage端口号必须一致 
base_path=/data/fastdfs_storage #设置storage数据文件和日志目录 
store_path_count=1 #存储路径个数,需要和store_path个数匹配 
store_path0=/data/fastdfs_storage_data #实际文件存储路径 
tracker_server=192.168.78.132:22122 #我CentOS7的ip地址 
file_distribute_path_mode=1 # 存储方式 0:轮询 1:Hash
http.server_port=8888 #设置 http 端口号

完整信息如下:

disabled=false
group_name=group1
bind_addr=0.0.0.0
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/opt/fastdfs_storage
max_connections=256
buff_size=256KB
accept_threads=1
work_threads=4
disk_rw_separated=true
disk_reader_threads=1
disk_writer_threads=1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/opt/fastdfs_storage_data
subdir_count_per_path=256
tracker_server=192.168.78.132:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log=false
rotate_access_log=false
access_log_rotate_time=00:00
rotate_error_log=false
error_log_rotate_time=00:00
rotate_access_log_size=0
rotate_error_log_size=0
log_file_keep_days=0
file_sync_skip_invalid_record=false
use_connection_pool=false
connection_pool_max_idle_time=3600
http.domain_name=
http.server_port=8888

3. 将Storage加入开机启动项

# cp /usr/fastdfs/FastDFS/init.d/fdfs_storaged /etc/init.d/
# chkconfig --add fdfs_storaged
# chkconfig fdfs_storaged on

启动Storage Server(默认产生255*255个目录)

# service fdfs_storaged start

4. 查看一下Storage的端口监听情况

# netstat -unltp | grep fdfs

5. 校验整合

到这里,fastdfs的东西都已安装完成,最后我们还要确定一下,storage是否注册到了tracker中去。

查看命令:

# /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf

成功后可以看到:

ip_addr = 192.168.78.132 ACTIVE

四、测试

1. 配置客户端

修改 /etc/fdfs/目录下的client.conf 文件

修改要点为:

base_path=/data/fastdfs_tracker #tracker服务器文件路径 
tracker_server=192.168.78.132:22122 #tracker服务器IP地址和端口号 
http.tracker_server_port=8080 # tracker 服务器的 http端口号,必须和tracker的设置对应起来

完整client.conf 文件信息如下:

connect_timeout=30 
network_timeout=60 
base_path=/data/fastdfs_tracker 
tracker_server=192.168.78.132:22122 
log_level=info 
use_connection_pool = false 
connection_pool_max_idle_time = 3600 
load_fdfs_parameters_from_tracker=false 
use_storage_id = false 
storage_ids_filename = storage_ids.conf 
http.tracker_server_port=8080

2. 模拟上传

从个人用户目录上传一个图片,进行测试

# /usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /df.png
group1/M00/73/38/wKhOhFt0uRqAIWxDAAAQKuWUya0709.png

组名:group1

磁盘:M00

目录:73/38

文件名称:wKhOhFt0uRqAIWxDAAAQKuWUya0709.jpg

定位上传的文件位置如下:

[root@localhost FastDFS]# ll /data/fastdfs_storage_data/data/73/38
total 8
-rw-r--r--. 1 root root 4138 Aug 15 16:36 wKhOhFt0uRqAIWxDAAAQKuWUya0709.png

实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。

如果要访问刚上传的图片,我们得需要结合nginx来实现

五、安装Nginx并实现配置

1. 安装Nginx依赖环境

第一步已经安装完成。

2. 安装nginx并添加fastdfs-nginx-module

解压nginx和fastdfs-nginx-module

# tar -xvf nginx-1.14.0.tar.gz 
# tar -xvf fastdfs-nginx-module_v1.16.tar.gz

解压后进入nginx目录编译安装nginx,并添加fastdfs-nginx-module

# ./configure --prefix=/usr/local/nginx --add-module=/usr/fastdfs/fastdfs-nginx-module/src #解压后fastdfs-nginx-module所在的位置

之后进行编译和安装

# make && make isntall

安装成功后,nginx会安装在/usr/local/nginx,安装后查看

[root@localhost nginx-1.14.0]# ll /usr/local/nginx/
total 16
drwxr-xr-x. 2 root root 4096 Aug 15 16:57 conf
drwxr-xr-x. 2 root root 4096 Aug 15 16:57 html
drwxr-xr-x. 2 root root 4096 Aug 15 16:57 logs
drwxr-xr-x. 2 root root 4096 Aug 15 16:57 sbin

3. 配置Storage Nginx

修改Nginx 目录下 conf 的配置文件nginx.conf,新增location信息,具体如下:

server {listen       9991;server_name  localhost;location / {root   html;index  index.html index.htm;}location ~/group1/M00 {root /data/fastdfs_storage_data;ngx_fastdfs_module;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

需要把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录下:

# cp /usr/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

对刚刚拷贝的mod_fastdfs.conf文件进行修改:

base_path=/data/fastdfs_storage #保存日志目录 
tracker_server=192.168.78.132:22122 #tracker服务器的IP地址以及端口号 
storage_server_port=23000 #storage服务器的端口号 
url_have_group_name = true #文件 url 中是否有 group 名 
store_path0=/data/fastdfs_storage_data #存储路径 
group_count = 1 #设置组的个数

在文件的最后,设置group

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs_storage_data

创建M00至storage存储目录的符号连接:

ln -s /data/fastdfs_storage_data/data/ /data/fastdfs_storage_data/data/M00

启动Nginx:

# /usr/local/nginx/sbin/nginx

访问Nginx是否启动

[root@localhost fdfs]# curl localhost:9991
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

4. 配置Tracker Nginx

在nginx.conf 文件添加一个虚拟机

upstream fdfs_group1{server 127.0.0.1:9991;
}
server {listen 80;server_name localhost;location /group1/M00 {proxy_pass http://fdfs_group1;
    }error_page 500 502 503 504 /50x.htmllocation = /50x.html {root html;}
}

完整nginx.conf配置文件如下:

worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;server {listen       9991;server_name  localhost;location / {root   html;index  index.html index.htm;}location ~/group1/M00 {root /data/fastdfs_storage_data;ngx_fastdfs_module;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}upstream fdfs_group1{server 127.0.0.1:9991;}server {listen 80;server_name localhost;location /group1/M00 {proxy_pass http://fdfs_group1;
        }error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}

将Nginx重新启动

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

访问Nginx是否已经启动

[root@localhost conf]# curl localhost:9991
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

5. HTTP访问图片资源

http://192.168.78.132/group1/M00/AD/73/wKhOhFt0xNmAN7XbAAAQKuWUya0565.png

转载于:https://www.cnblogs.com/yifanSJ/p/9467766.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【原创】Chrome最新版(53-55)再次爆出BUG!

2019独角兽企业重金招聘Python工程师标准>>> 前言 今年十月份&#xff0c;我曾发布一篇文章《Chrome53 最新版惊现无厘头卡死 BUG&#xff01;》&#xff0c;不过那个BUG在最新的 Chrome 54 中已经修正。 而今天即将发布的Chrome弱智BUG&#xff1a; 仅 Chrome 53 -…

进程kswapd0与events/0消耗大量CPU的问题

http://www.nowamagic.net/librarys/veda/detail/2539 今天下午网站宕了两次机&#xff0c;发工单给阿里云&#xff0c;发现原因是服务器的CPU 100%了。 重启服务器后&#xff0c;使用 top 命令看看是哪些进程消耗那么大的 CPU 使用。盯了有好十几分钟&#xff0c;主要消耗 CPU…

跑三小时的monkey测试该怎么算_浅谈App测试(下)~带音频

文 | Vicky采编&#xff5c;Emily浅谈App测试(上)&#xff5e;带音频一、功能测试​二、性能测试(1)耗电量影响因素&#xff1a;定位、传感器、蓝牙&#xff0c;其中CPU、持续定位是两个平台造成耗电的主要因素。(2)流量也就是常说的耗流量&#xff0c;影响因素有重复请求&…

2016-2017-2 《Java程序设计》课程学生博客和代码托管链接

2016-2017-2 《Java程序设计》课程学生博客和代码托管链接 博客 1552 20155201 李卓雯20155202 张 旭20155203 杜可欣20155204 王 昊20155205 郝博雅20155206 赵 飞20155207 王雪纯20155208 徐子涵20155209 林虹宇20155210 潘滢昊20155211 解雪莹20155212 江振思20155213 陆忠民…

回顾一年的工作历程_【设备管理公司】召开20202021年度总结计划表彰暨工作述职会议...

点击上方蓝字关注我们2020年即将过去&#xff0c;为了总结2020年各项工作开展情况&#xff0c;同时做好2021年工作计划与部署&#xff0c;2020年12月30日-31日&#xff0c;设备管理公司组织召开了2020-2021年度总结计划表彰暨工作述职会议。公司领导、各部门经理、部门主管、车…

注册验证的时候一直出现的报错问题,终于解决了

今天再注册验证表单的时候一直报错&#xff0c;但是什么都没有改&#xff0c;就报错了&#xff0c;后面才知道原来是和我上次上传图片的时候&#xff0c;导入的2个js的顺序有关系的&#xff0c; 45行和41行互相换一下位置就好了 转载于:https://www.cnblogs.com/likeji/p/61433…

重排序

一、重排序。 1、为什么需要重排序&#xff1f; 现在的CPU一般采用流水线来执行指令。一个指令的执行被分成&#xff1a;取指、译码、访存、执行、写回、等若干个阶段。然后&#xff0c;多条指令可以同时存在于流水线中&#xff0c;同时被执行。 指令流水线并不是串行的&#x…

tableau三轴该怎么做_如何用tableau绘制城市地铁线路图?

在用tableau绘制地铁线路图之前&#xff0c;当然是要获取相关的数据啦我们以郑州目前已开通的地铁为例&#xff0c;分别是1、2、5号线经度、维度可在 网页上自行搜索哦&#xff08;以谷歌地图为准&#xff09;有了这些下面我们就要开始啦将Excel中你所需要的数据直接导入到tabl…

哲学到编程:思想的实例化

万古长江水&#xff0c;千年儒释道。历史的长流中&#xff0c;芸芸众生&#xff0c;参差不齐&#xff0c;但总是能够总结出一个“生旦净末丑”来。儒、释、道&#xff0c;五千年的中华文化&#xff0c;却总是围绕着这三种主流思想交相演绎。千年间&#xff0c;豪士俊杰&#xf…

python 字符串交集_Python序列--集合(set)

集合集合用于保存不重复元素。- 集合和列表非常相似- 不同点&#xff1a;1.集合中只能存储不可变对象2.集合中存储的对象是无序(不是按照元素的插入顺序保存)3.集合中不能出现重复的元素集合的所有元素都放在一对”{ }” 中&#xff0c;两个相邻的元素之间用”,”分隔。集合最好…

【Python开发】Python的GUI用法总结

引用模块&#xff08;tkinter&#xff09;&#xff1a; 1 from tkinter import * 主窗口设置&#xff1a; 1 # 主窗口 2 tk Tk() # 主窗口实例化 3 tk.title("文本处理工具") # 主窗口标题 4 tk.geometry("700x4001001…

JAVA 环境变量配置

JAVA 环境变量配置 1. 安装JDK 2.配置系统变量 新建          JAVA_HOME&#xff1a;D:\Program Files\Java\jdk1.8.0_65 Path添加       %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 新建CLASSPATH  .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 3.完成…

8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验

1)资料下载:点击资料即可下载2)对正点原子Linux感兴趣的同学可以加群讨论&#xff1a;9354467413&#xff09;关注正点原子公众号&#xff0c;获取最新资料更新上一章我们向大家介绍了如何利用 STM32F4 的 USB HOST 接口来驱动 U 盘&#xff0c;本章&#xff0c;我们 将利用 ST…

CF815C Karen and Supermarket [树形DP]

题目传送门 Karen and Supermarket On the way home, Karen decided to stop by the supermarket to buy some groceries. She needs to buy a lot of goods, but since she is a student her budget is still quite limited. In fact, she can only spend up to b dollars. Th…

6工程文件夹作用_data_dragon数据工程小工具收集

最近在GitHub上创建了一个新工程&#xff0c;收集个人在数据工程工作的小工具集合&#xff0c;命名为data_dragon (数据一条龙)。取这个名字的是希望这些脚本或代码能够复用&#xff0c;端到端地减少临时数据处理的时间。最近因为工作上的一些变化&#xff0c;写作节奏有点被打…

暑假第十七测

题解&#xff1a; 第一题 #include<bits/stdc.h> using namespace std; #define ll long long const int M 1e5 10; ll a[M], b[M], ans; priority_queue <ll, vector<ll> , greater<ll> > Q; int main(){freopen("buy.in","r",…

Nginx搭建flv视频点播服务器

Nginx搭建flv视频点播服务器前一段时间使用Nginx搭建的多媒体服务器只能在缓冲过的时间区域内拖放, 而不能拖放到未缓冲的地方. 这就带来了一个问题: 如果视频限速的速率很小, 那么客户端观看视频时肯定不流畅, 而且用户不能向前拖放, 用户体验很不好. 如果视频限速的速率很大或…

编码拾遗

1 #!/usr/bin/env python32 #-*- coding:utf-8 -*-3 4 Administrator 5 2018/8/16 6 7 8 # fopen("demo","r",encoding"utf8")9 # dataf.read() 10 # print(data) 11 # f.close() 12 13 14 # print("沈哲子") 15 16 s"中国&qu…

mybatis 不生效 参数_Mybatis-日志配置

日志Mybatis 的内置日志工厂提供日志功能&#xff0c;内置日志工厂将日志交给以下其中一种工具作代理&#xff1a;SLF4JApache Commons LoggingLog4j 2Log4jJDK loggingMyBatis 内置日志工厂基于运行时自省机制选择合适的日志工具。它会使用第一个查找得到的工具(按上文列举的顺…

PS通过滤色实现简单的图片拼合

素材如下&#xff1a; 素材一&#xff1a; 雪山 素材二&#xff1a; 月亮 效果&#xff1a; 实现步骤 1、在PS中打开雪山素材一 2、将月亮素材直接拖入雪山所在的图层中 3、锁定置入素材的高宽比&#xff08;点击一下链状按钮&#xff09; 4、调整月亮到合适大小合适位置 5、…