*FastDFS图片服务器搭建准备:
1.需要libfastcommon安装包 选择最新稳定版(libfastcommon-1.0.36.tar.gz)
2.需要FastDFS安装包 选择最新稳定版(fastdfs-5.11.tar.gz)
3.需要Nginx安装包 选择最新稳定版(nginx-1.12.2.tar.gz)
4.需要fastdfs-nginx-modual模块安装包 选择最新版(fastdfs-nginx-module-master.zip 版本1.20,对应fastdfs-5.11)
注意:--------fastdfs-nginx-module-master.zip版本1.19对应fastdfs-5.11---------
-------------- 常见的fastdfs-nginx-module_v1.16.tar.gz在这里不推荐安装,安装过程有可能出问题 --------------------
*安装依赖环境*:命令安装:
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。
命令 yum -y install gcc gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装
pcre库。
命令:yum install -y pcre pcre-devel
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
命令:yum install -y zlib zlib-devel
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
命令:yum install -y openssl openssl-devel
libevent
命令:yum -y install libevent
1.安装fastdfs
1.1上传依赖包(xftp上传):
1.1.1 libfastcommon-1.0.36.tar.gz
1.1.2 fastdfs-5.11.tar.gz
1.1.3 nginx-1.12.2.tar.gz
1.1.4 fastdfs-nginx-module-master.zip --版本1.20
1.2 安装libfastcommon-1.0.36.tar.gz工具包
1.2.1解压libfastcommon-1.0.36.tar.gz
命令:tar zxvf libfastcommon-1.0.36.tar.gz
完成之后会在libfastcommon-1.0.36文件夹下多出一个make.sh文件,供编译使用
1.2.2编译libfastcommon-1.0.36
命令:./make.sh
1.2.3安装libfastcommon-1.0.36
命令:./make.sh install
安装完成之后会在 /usr/lib64和/usr/lib下生成 libfastcommon.so;如果是比较低的版本只会在lib64下面生成;如果是32位系统就应该copy一份
libfastcommon.so到lib文件夹下(先进入lib64文件夹执行命令:cp libfastcommon.so ../lib)
1.3安装fastdfs-5.11.tar.gz
1.3.1解压fastdfs-5.11.tar.gz
命令:tar zxvf fastdfs-5.11.tar.gz
解压完成之后会解压到astdfs-5.11文件夹下,进入之后会看到make.sh文件,供编译使用
1.3.2编译astdfs-5.11
命令:./make.sh
1.3.3安装FastDFS
命令:./make.sh install
1.3.4如果没有报错那么就成功了安装log中会提示astdfs-5.11安装到了/etc/fdfs目录下,查看安装目录
命令:ll /etc/fdfs/
会看到client.conf.sample,storage.conf.sample,tracker.conf.sample这三个文件
我们需要把这三个示例文件复制一份,去掉.sample作为后续配置文件
命令:cp client.conf.sample client.conf
命令:cp storage.conf.sample storage.conf
命令:cp tracker.conf.sample tracker.conf
而且安装完成之后会在/usr/bin文件下面多出一些fdfs_*的命令,进入查看
命令:ll fdfs_*
-----------------显示如下--------------------------------------------
-rwxr-xr-x. 1 root root 314463 Apr 1 14:07 fdfs_appender_test
-rwxr-xr-x. 1 root root 310144 Apr 1 14:07 fdfs_appender_test1
-rwxr-xr-x. 1 root root 297016 Apr 1 14:07 fdfs_append_file
-rwxr-xr-x. 1 root root 296716 Apr 1 14:07 fdfs_crc32
-rwxr-xr-x. 1 root root 297083 Apr 1 14:07 fdfs_delete_file
-rwxr-xr-x. 1 root root 297810 Apr 1 14:07 fdfs_download_file
-rwxr-xr-x. 1 root root 297392 Apr 1 14:07 fdfs_file_info
-rwxr-xr-x. 1 root root 315309 Apr 1 14:07 fdfs_monitor
-rwxr-xr-x. 1 root root 320303 Apr 1 14:07 fdfs_test
-rwxr-xr-x. 1 root root 319520 Apr 1 14:07 fdfs_test1
-rwxr-xr-x. 1 root root 298002 Apr 1 14:07 fdfs_upload_appender
-rwxr-xr-x. 1 root root 303126 Apr 1 14:07 fdfs_upload_file
---------------------------------------------------------------------
1.4安装tracker服务
1.4.1配置tracker
1.4.1.1首选使用mkdir -p递归创建目录命令,创建了/usr/local/fast/fastdfs-5.11/data/tracker目录来保存tracker的data和log 根据个人习惯
命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/tracke
1.4.1.2修改tracker.conf
命令:vim /etc/fdfs/tracker.conf
打开后重点关注下面4个配置:
1.disabled=false
2.port=22122 #默认端口号
3.base_path=/usr/local/fast/fastdfs-5.11/data/tracke #我刚刚创建的目录
4.http.server_port=8080 #默认端口是8080
----------------------------------------保存退出-----------------------------------------------
1.4.1.3给firewalld添加开放tracker.conf配置文件中的22122和8080两个端口。在firewall正常运行的情况下输入以下命令:
命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent #添加8080端口
命令:firewall-cmd --zone=public --add-port=22122/tcp --permanent #添加22122端口
------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
如果想检查相应端口是否开启,先重启firewalld
命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
命令:firewall-cmd --query-port=8080/tcp --zone=public #查询8080端口是否开启
命令:firewall-cmd --query-port=22122/tcp --zone=public #查询22122端口是否开启
------------返回no既未开启,显示Yes为已开启-----------------------------------------
1.4.1.4保存配置后启动tracker,命令如下
命令:service fdfs_trackerd start
成功后可以看到: Starting fdfs_trackerd (via systemctl): [ OK ]
并且,发现刚刚创建的目录中多了data和log两个目录,命令查看
命令:ll /usr/local/fast/fastdfs-5.11/data/tracke
1.4.1.5设置tracker开机启动
命令:echo "service fdfs_trackerd start" |tee -a /etc/rc.d/rc.local
1.4.1.6查看tracker的端口监听情况
命令:netstat -unltp|grep fdfs
---------------------------------------------------------------------------------
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 70382/fdfs_trackerd
---------------------------------------------------------------------------------
1.5安装storage服务
1.5.1配置storage
1.5.1.1首选使用mkdir -p递归创建目录命令,创建了/usr/local/fast/fastdfs-5.11/data/storage/0目录在/usr/local/fast/fastdfs-5.11/data/storage
下保存storage的data和log ,/usr/local/fast/fastdfs-5.11/data/storage/0下保图片文件
命令:mkdir -p /usr/local/fast/fastdfs-5.11/data/storage/0
1.5.2修改storage.conf
命令:vim /etc/fdfs/storage.conf
打开后重点关注下面9个配置:
1.disabled=false
2.group_name=group1 #组名,根据实际情况修改
3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
4.base_path=/usr/local/fast/fastdfs-5.11/data/storage #设置storage数据文件和日志目录
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配
6.store_path0=/usr/local/fast/fastdfs-5.11/data/storage/0 #实际图片文件存储路径
7.#store_path1=/home/yuqing/fastdfs2 #如果挂载了不同的磁盘就可以配置store_path1 .. 等等
8.tracker_server=192.168.153.201:22122 #我CentOS7的ip地址
9.http.server_port=8888 #设置 http 端口号,默认8888
----------------------------------------保存退出----------------------------------------------
1.5.3给firewalld添加开放storage.conf配置文件中的23000和8888两个端口。在firewall正常运行的情况下输入以下命令:
命令:firewall-cmd --zone=public --add-port=23000/tcp --permanent #添加23000端口
命令:firewall-cmd --zone=public --add-port=8888/tcp --permanent #添加8888端口
------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
如果想检查相应端口是否开启,先重启firewalld
命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
命令:firewall-cmd --query-port=23000/tcp --zone=public #查询23000端口是否开启
命令:firewall-cmd --query-port=8888/tcp --zone=public #查询8888端口是否开启
------------返回no既未开启,显示Yes为已开启-----------------------------------------
1.5.4保存配置后启动storage,命令如下
命令:service fdfs_storaged start
成功后可以看到: Starting fdfs_storaged (via systemctl): [ OK ]
并且,发现刚刚创建的目录/usr/local/fast/fastdfs-5.11/data/storage 下多了data和log两个目录。
(重点注意:/usr/local/fast/fastdfs-5.11/data/storage/0下多了个data,在data下有很多二进制文件夹,用来存储图片文件)
命令:ll /usr/local/fast/fastdfs-5.11/data/storage/0/data
1.5.5设置storage开机启动
命令:echo "service fdfs_storaged start" |tee -a /etc/rc.d/rc.local
1.5.6查看storage的端口监听情况
命令:netstat -unltp|grep fdfs
---------------------------------------------------------------------------------
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2231/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2323/fdfs_storaged
---------------------------------------------------------------------------------
1.6确定一下,storage是否注册到了tracker中去
命令/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
成功后可以看到其中有一下字样:
id = 192.168.153.201
ip_addr = 192.168.153.201 ACTIVE
1.7测试上传:
1.7.1同样的,需要修改客户端的配置文件:
命令:vim /etc/fdfs/client.conf
打开后重点关注下面3个配置:
1.base_path=/usr/local/fast/fastdfs-5.11/data/tracker #tracker服务器文件路径
2.tracker_server=192.168.153.201:22122 #tracker服务器IP地址和端口号
3.http.tracker_server_port=8080 #tracker 服务器的 http端口号,必须和tracker的设置对应起来
----------------------------------------保存退出---------------------------------------------------------------------------------
1.7.2上传图片:
1.7.2.1输入上传图片命令:
命令: /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /图片路径/1.png #这后面放的是图片的位置
成功后会返回图片的路径:group1/M00/00/00/wKiZyVrGEhmAWotNAAQedSwYknA415_big.png
--------------------------------------------------------------------------------------------------------------------------------
组名:group1
磁盘:M00
目录:00/00
文件名称:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
--------------------------------------------------------------------------------------------------------------------------------
1.7.2.2我们上传的图片会被上传到我们创建的/usr/local/fast/fastdfs-5.11/data/storage/0/data/00/00目录下,让我们去看看
应该会有:wKiZyVrGEhmAWotNAAQedSwYknA415_big.jpg
我们仔细看一下,实际文件存储路径下有创建好的多级目录。data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件,新写的文件会以
hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。
---------------------------------------------------------------------------------------------------------------------------------
1.8访问上传的图片:
1.8.1如果要访问刚上传的图片,我们得需要结合nginx来实现原因如下:
1.我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP
服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者——淘宝的架构师余庆同学,为我们提供了Nginx上使用的FastDFS
模块(也可以叫FastDFS的Nginx模块)。
2.FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组之间的服务器需要复制文件,有延迟的问题.假设Tracker服务器将文件上传到了172.20.132.57,
文件ID已经返回客户端,这时,后台会将这个文件复制到172.20.132.57,如果复制没有完成,客户端就用这个ID在172.20.132.57取文件,肯定会出现错误。这个
fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。 正是这样,FastDFS需要结合nginx,所以取消原来对HTTP的
直接支持。
------------------------------------------------------------------------------------------------------------------------------------
1.8.2安装nginx并添加fastdfs-nginx-module
1.8.2.1解压nginx-1.12.2.tar.gz,和fastdfs-nginx-module-master.zip
命令:tar -zxvf nginx-1.12.2.tar.gz
命令:unzip fastdfs-nginx-module-master.zip
1.8.2.2解压后进入nginx-1.12.2目录编译安装nginx,并添加fastdfs-nginx-module:fastdfs-nginx-module-master模块
命令:./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module-master/src #解压后fastdfs-nginx-module所在的位置
(执行完之后会在nginx-1.12.2目录下生成Makefile文件,为下一步编译使用)
1.8.2.2 编译:
命令:make
1.8.2.3 安装:
命令:make install
1.8.2.4 nginx的安装目录是/usr/local/nginx,安装成功后查看
命令:ls /usr/local/nginx/
应该会有:conf html logs sbin 这几个文件夹,其中nginx.conf在/usr/local/nginx/conf目录下
1.8.2.5 修改nginx.conf配置:
命令:vim /etc/fdfs/tracker.conf
1.8.2.5.1跟server节点评级配置反向代理fdfs_group1
upstream fdfs_group1 { #配置反向代理fdfs_group1
server 127.0.0.1:9991; #监听 9991
}
1.8.2.5.2打开后新添加一个如下server节点:
server {
listen 9991;
server_name localhost;
location / { #9991端口拦截的URL:9991/
root html;
index index.html index.htm;
}
location ~/group1/M00 { #重点:9991端口拦截的请求路径
root /usr/local/fast/fastdfs-5.11/data/storage/0/data; #重点:图片文件存储路径
ngx_fastdfs_module; #nginx-fastdfs-modual的名字:ngx_fastdfs_module
} #只要不在它的confrgure中改动,不管那个版本都叫:
error_page 500 502 503 504 /50x.html; #ngx_fastdfs_module
location = /50x.html {
root html;
}
}
1.8.2.5.3编辑Nginx原有80端口的server节点,添加反向代理的URL
server {
listen 80;
server_name localhost;
location /group1/M00 { #80端口拦截的URL:80/group1/M00
proxy_pass http://fdfs_group1; #反向代理的URL
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
----------------------------------------保存退出-------------------------------------------------
1.8.2.5.4在此给firewalld添加开放nginx.conf配置文件中的9991端口。在firewall正常运行的情况下输入以下命令:
命令:firewall-cmd --zone=public --add-port=9991/tcp --permanent #添加9991端口
------------显示success的话就代表已成功加入,重启firewalld既可-----------------------
如果想检查相应端口是否开启,先重启firewalld
命令:systemctl restart firewalld #重启firewalld,要不然下一步查询会返回NO
命令:firewall-cmd --query-port=9991/tcp --zone=public #查询9991端口是否开启
------------返回no既未开启,显示Yes为已开启-----------------------------------------
1.8.2.5.5重启nginx
命令:/usr/local/nginx/sbin/nginx -s reload
1.8.2.5.6现在我们再去访问一下,原来我们上传过的文件:
http://192.168.153.201/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
或者:
http://192.168.153.201:9991/group1/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
或者:
http://192.168.153.201:80/group1/M00/00/00/wKiZyVrQkrKAfBRmAAQedSwYknA095.png
--------------------------------------------------------测试成功-----------------------------------------------------------