安装Fastdfs,除了需要安装配置其本身以外,如果需要拿到文件,还需进行nginx的路由配置。
下载安装
安装git
sudo apt install git
下载Fastdfs依赖
如果无法克隆,将https改为git重新执行
git clone https://github.com/happyfish100/libfastcommon.git
进入libfastcommon 文件夹
cd libfastcommon
编译
sudo ./make.sh
安装
sudo ./make.sh install
下载fastdfs
git clone https://github.com/happyfish100/fastdfs.git
进入fastdfs文件夹
cd fastdfs
编译
sudo ./make.sh
安装
sudo ./make.sh install
安装问题:
如果出现:
In file included from /usr/include/fcntl.h:290:0,
from system_info.c:28:
In function ‘open’, 问题所在(下面蓝色字体)
inlined from ‘get_block_size_by_write’ at system_info.c:889:8:
/usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT or O_TMPFILE in second argument needs 3 arguments
__open_missing_mode ();
^~~~~~~~~~~~~~~~~~~~~~
Makefile:66: recipe for target 'system_info.o' failed
make: *** [system_info.o] Error 1
进入libfastcommon 文件夹中的 src
cd libfastcommon/src
编辑system.conf.c文件
vim system.conf.c
添加红色字迹的数据就ok了
"%s/.blksize-test.tmp", path);
if ((fd=open(tmp_filename, O_WRONLY | O_CREAT | O_DIRECT,0777)) < 0) {
result = errno != 0 ? errno : ENOENT;
logError("file: "__FILE__", line: %d, "
"open file %s fail, errno: %d, error info: %s",
__LINE__, tmp_filename, result, strerror(result));
free(buff);
return result;
配置Fastdfs
查看ip地址
sudo ifconfig
进入fdfs配置文件夹
cd /etc/fdfs
可删:复制配置文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
sudo cp /etc/fdfs/storage_ids.conf.sample /etc/fdfs/storage_ids.conf
创建tracker,storage 文件夹
sudo mkdir -p /home/fastdfs/tracker
sudo mkdir -p /home/fastdfs/storage
配置tracker.conf,storage.conf
cd /etc/fdfs/
sudo vim tracker.conf
按i进入编辑状态,修改base_path:
# the base path to store data and log files
base_path=/home/fastdfs/tracker
修改完成,按esc退出编辑状态,然后输入“:wq”保存退出(引号里面的)
sudo vim storage.conf
修改:
group_name=group1
store_path0=/home/fastdfs/storage
base_path=/home/fastdfs/storage
tracker_server=自己虚拟机的IP地址:22122
http.server_port=8888
配置client.config
sudo vim client.conf
修改:
# the base path to store log files
base_path = /home/fastdfs/tracker
tracker_server = 你的ip:22122
启动tracker ,storage
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
检查Fastfdfs是否可用
ps aux|grep fdfs
下载图片测试fdfs
sudo wget -O test.png https://www.baidu.com/img/bd_logo1.png
sudo /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.png
测试成功返回图片位置
group1/M00/00/00/rBO_tF5iCTiAGFzgAAAexZJI7KM796.png
配置nginx、fdfs-nginx-module
查看是否有nginx需要的依赖库:
dpkg -l | grep pcre
dpkg -l | grep zlib
dpkg -l | grep openssl
安装pcre
sudo apt-get install libpcre3 libpcre3-dev
安装zlib
sudo apt-get install zlib1g-dev
安装openssl(Ubuntu自带openssl,如果没有执行下面命令)
sudo apt-get install openssl libssl-dev
下载并配置fastdfs-nginx-module
cd /usr/local/
sudo git clone https://github.com/happyfish100/fastdfs-nginx-module.git
进入文件夹,拷贝出来配置文件
cd fastdfs-nginx-module/src
sudo cp mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
修改配置文件
sudo vim /etc/fdfs/mod_fastdfs.conf
connect_timeout=10 # 客户端访问文件连接超时时长(单位:秒)
tracker_server=你的ip:22122 # tracker服务IP和端口
url_have_group_name=true # 访问链接前缀加上组名
store_path0=/home/fastdfs/storage # 文件存储路径 要和storage的配置一致
返回根目录(注意有空格)
cd /
进入该目录修改config文件
cd /usr/local/fastdfs-nginx-module/src/
sudo vim config
修改如下:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
返回根目录
cd /
复制http.config,mime.type(在fastDFS安装包的目录里,找不到这两个文件就直接在文件搜索栏搜)到/etc/fdfs目录下
cd /fastdfs/conf
sudo cp mime.types /etc/fdfs/mime.types
sudo cp http.conf /etc/fdfs/http.conf
返回根目录
cd /
下载并配置nginx
sudo wget http://nginx.org/download/nginx-1.16.1.tar.gz
sudo tar -zxvf nginx-1.16.1.tar.gz
一定要先进入nginx目录!!!
cd nginx-1.16.1
然后执行下面命令
sudo ./configure --prefix=/usr/local/nginx/ --sbin-path=/usr/bin/nginx --add-module=/usr/local/fastdfs-nginx-module/src
sudo make && sudo make install
修改配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
在http里添加以下配置:
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
在server里添加以下配置:
server {
listen 80;
server_name localhost;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
add_header X-Frame-Options SAMEORIGIN;
client_max_body_size 8M;(配置请求体缓存区大小)
client_body_buffer_size 128k;(设置客户端请求体最大值)
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location ~ /group([0-9])/M00 {
root /home/fastdfs/storage/data;
ngx_fastdfs_module;
}
返回根目录
cd /
启动nginx并测试
sudo nginx
Ubantu18.04 nginx 安装启动_Bannings_的博客-CSDN博客
创建M00软链接
sudo ln -s /home/fastdfs/storage/data /home/fastdfs/storage/data/M00
上传图片测试
获取网络图片
sudo wget -O test.png https://www.baidu.com/img/bd_logo1.png
上传
sudo /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.png
返回的地址为:
group1/M00/00/00/rBO_tF5iLBaAJsCQAAAexZJI7KM663.png
通过url获取上传后的图片
sudo wget http://localhost/group1/M00/00/00/rBO_tF5iLBaAJsCQAAAexZJI7KM663.png
访问结果中的地址,如果在浏览器显示图片,则测试成功(一定要注意上面图片的名字,要和返回地址的名字一致)
多storage节点配置
新建一个storage 地址
sudo mkdir home/fastdfs2/
sudo mkdir home/fastdfs2/storage/
修改storage.config
cd /etc/fdfs
sudo vim storage.conf
# store_path_count改为2 ,改参数用来控制storage节点的数量,有两个时就改为2
store_path_count = 2
#新增路径
store_path1 = /home/fastdfs2/storage
修改mod_fastdfs.conf ,修改完成后重启tracker和storage
sudo vim mod_fastdfs.conf
修改部分与storage.conf保持一致
store_path_count = 2
store_path1 = /home/fastdfs2/storage
修改nginx 配置
sudo vim /usr/local/nginx/conf/nginx.confngi
红色部分为新增的
location ~ /group([0-9])/M00 {
root /home/fastdfs/data;
ngx_fastdfs_module;
}
location ~ /group([0-9])/M01 {
root /home/fastdfs2/storage/data;
ngx_fastdfs_module;
}
重启nginx
sudo nginx -s reload