FastDFS6.0.6在腾讯云单机上部署
文章目录
由于未知原因始终无法在腾讯云上部署
FastDFS5.0.5
查看trackerd.log发现
INFO - file: tracker_relationship.c, line: 389, selecting leader…
storaged.log报错:
ERROR - file: tracker_proto.c, line: 48, server: 1.15.170.166:22122, response status 2 != 0
ERROR - file: tracker_client_thread.c, line: 2377, fdfs_recv_response fail, result: 2
经过漫长的摸索得知:需要更换新版本
Fastdfs6.0.6
。具体原因没搞清楚,麻烦知道的大佬在评论区指点指点。
1.下载所需的包
libfastcommon-1.0.43
:https://github.com/happyfish100/libfastcommon/releases/tag/V1.0.43fastdfs-6.06
:https://github.com/happyfish100/fastdfs/releases/tag/V6.06fastdfs-nginx-module-1.22
:https://github.com/happyfish100/fastdfs-nginx-module/releases/tag/V1.22nginx-1.20.1
:http://nginx.org/download/nginx-1.20.1.tar.gz
使用xftp将文件上传到/home/apk/fastdfs_install
目录下
2.安装依赖&开放相关端口号
2.1 安装依赖
-
gcc gcc-c++
yum -y install gcc gcc-c++
-
pcre-devel
yum -y install pcre-devel
-
zlib-devel
yum -y install zlib-devel
2.2 开放端口号
#tracker默认端口号22122
firewall-cmd --zone=public --add-port=22122/tcp --permanent
#storage默认端口号23000
firewall-cmd --zone=public --add-port=23000/tcp --permanent
#nginx访问端口号8888
firewall-cmd --zone=public --add-port=8888/tcp --permanent
3.安装FastDFS
3.1 安装libfastcommon
cd /home/apk/fastdfs_install
tar -zxvf libfastcommon-1.0.43.tar.gz
cd libfastcommon-1.0.43
./make.sh
./make.sh install
检查,出现libfastcommon.so
即成功
ls /usr/lib64|grep libfastcommon
ls /usr/lib|grep libfastcommon
3.2 安装fastdfs
cd /home/apk/fastdfs_install
tar -zxvf fastdfs-6.06.tar.gz
cd libfastcommon-1.0.43
./make.sh
./make.sh install
在配置tracker和storage之前先将/home/apk/fastdfs_install/fastdfs-5.11/conf
下的文件全都复制到/etc/fdfs
下(因为fastDFS启动的时候默认使用这个位置的配置文件)
cp /home/apk/fastdfs_install/fastdfs-5.11/conf/* /etc/fdfs/
为了更清晰的管理tracker和storage,我们可以设计如下的文件目录来记录运行时产生的数据和日志:
/home/fastdfs #(需手工创建,base_path)
|_data #运行期间产生的数据,包括用户上传的文件(自动产生,无需我们创建)
|_logs #运行期间产生的日志(自动产生,无需我们创建)
mkdir /home/fastdfs
3.3 单机部署
3.3.1 配置tracker
打开/etc/fdfs/tracker.conf
进行编辑:
vim /etc/fdfs/tracker.conf
编辑如下内容:
#注意服务器是 NAT 方式所以此处绑定的是内网 IP
# 可以使用命令查看 ifconfig -a 没有公网的IP
bind_addr = 172.xxx.xxx.xxx
# tracker 服务器端口(默认22122,一般不修改)
port=22122
# 存储日志和数据的根目录
base_path=/home/fastdfs
# use_storage_id 设置为 true 后需要在 storage_ids.conf 设置双 IP
use_storage_id = true
配置 storage_ids.conf
vim /etc/fdfs/storage_ids.conf
#这里有两行,注释后面一行
#一个内网 IP 一个公网 IP
100001 group1 172.XXX.XXX.XXX,123.XXX.XXX.XXX
#100002 group1 172.XXX.XXX.XXX,123.XXX.XXX.XXX
3.3.2 配置storage
打开/etc/fdfs/storage.conf
进行编辑:
vim /etc/fdfs/storage.conf
编辑如下内容:
# storage服务端口(默认23000,一般不修改)
port=23000
# 数据和日志文件存储根目录
base_path=/home/fastdfs
# 第一个存储目录
store_path0=/home/fastdfs
# 重点是这个,一定注意格式 内网,外网:端口号
# 这里同样注释掉后面一行
tracker_server = 172.XXX.XXX.XXX,123.XXX.XXX.XXX:22122
#tracker_server = 172.XXX.XXX.XXX,123.XXX.XXX.XXX:22122
# http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
http.server_port=8888
3.3.3 启动、关闭与测试
service fdfs_trackerd start #stop/restart(修改配置一定要restart)
service fdfs_storaged start #stop/restart(修改配置一定要restart)
查看是否成功启动tracker和storage:
netstat -unltp|grep fdfs
成功状态下应显示如下信息:
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 3322/fdfs_storaged
tcp 0 0 172.17.0.17:22122 0.0.0.0:* LISTEN 3258/fdfs_trackerd
测试tracker和storage是否在通讯:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
4.安装Nginx
4.1 安装nginx
cd /home/apk/fastdfs_install
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
make.sh
make.sh install
4.2 启动与关闭
/usr/local/nginx/sbin/nginx #启动
/usr/local/nginx/sbin/nginx -s reload #重启
/usr/local/nginx/sbin/nginx -s stop #快速关闭
/usr/local/nginx/sbin/nginx -s quit #优雅关闭
/usr/local/nginx/sbin/nginx -v #查看nginx版本
在浏览器地址栏输入nginx服务器地址即可看到nginx首页:
#公网IP
http://192.168.0.104
4.3 添加fastdfs-nginx-module
在这之前先关闭nginx
/usr/local/nginx/sbin/nginx -s quit
首先解压fastdfs-nginx-module
cd /home/apk/fastdfs_install
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
编辑fastdfs-nginx-module-1.22/src/目录下的config文件(没有后缀)
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
拷贝fastdfs-nginx-module模块的配置文件mod_fastdfs.conf到/etc/fdfs目录中并编辑
cp /home/apk/fastdfs_install/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
修改内容如下,此处的store_path0
应该与storage.conf
中的store_path0
一致。
base_path=/home/fastdfs
store_path0=/home/fastdfs
# 公网 IP
tracker_server=123.123.1.23:22122
storage_server_port=23000(默认配置为23000)
url_have_group_name = true
进入到nginx解压后的文件中,添加fastdfs-nginx-module模块
cd /home/apk/fastdfs_install/nginx-1.20.1
./configure --add-module=/root/fastdfs-nginx-module-1.20/src
make
make install
查看fastdfs-nginx-module是否安装成功:
#注意是大写“V”,查看ngix版本、编译器版本和configure参数(添加的模块信息在这里可以看到)
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.20.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --add-module=/home/apk/fastdfs_install/fastdfs-nginx-module-1.22/src
4.4 配置Nginx
vim /usr/local/nginx/conf/nginx.conf
添加下面的内容
server {
listen 8888; #该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
5. 测试
开启所有服务:
service fdfs_trackerd start
service fdfs_storaged start
/usr/local/nginx/sbin/nginx
编辑上传测试所用的client.conf文件
vi /etc/fdfs/client.conf
修改如下为:
base_path=/home/fastdfs
tracker_server=123.123.1.23:22122
上传文件
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/x.jpg
上传成功的话,控制台会输出上传文件的fileId,类似于
group1/M00/00/00/oYYBAGCwdn-AePvEAAD77_Ecb0w534.jpg
得到fileId以后,在主机浏览器地址栏输入以下完整URL即可查看文件
http://123.123.1.23:8888/group1/M00/00/00/oYYBAGCwdn-AePvEAAD77_Ecb0w534.jpg