Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇

前言

这几天学习,需要用nginx搭建fastdfs作为分布式文件管理系统。然后就是各种报错!我差不都整了1天,太难了,但最后找到了一个可以执行的解决方案,这里给大家分享一下。

其他报错地方我单独写成博客,方便大家找到这里来。

文章比较长,大家耐心看哈

报错关键

  • 自己的环境没有配置好
  • 没有用最新的软件

具体方法

1.在官网下载最新的安装包(所有的都下最新的) 官网

  • fastdfs官网 https://github.com/happyfish100
  • nginx官网 http://nginx.org/en/download.html

我们需要下载

  • libfastcommon | fastsds的库文件,需要先编译安装好
  • fastdfs | fastsds主文件
  • nginx | nginx服务器配合fastdfs 使转发更高效
  • fastdfs-nginx-module | fastdfs的nginx模块模块
    Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇_第1张图片

2. 因为这些文件都是编译安装的,所以需要确保我们编译的环境没有问题,具体需要安装以下内容(之前环境没安装好吃了大亏

sudo apt update
sudo apt upgrade

安装gcc,g++,make,cmake
sudo apt install gcc
sudo apt install g++
sudo apt install make
sudo apt install cmake

安装编译所需要的库

基本库
sudo apt install build-essential
sudo apt install libtool

安装pcre依赖库
sudo apt install libpcre3 libpcre3-dev

安装zlib依赖库
sudo apt install zlib1g-dev

安装openssl依赖库 
sudo apt install openssl
sudo apt install libssl-dev      // 未安装该库会报 SSL modules require the OpenSSL library.

3.环境安装好之后,我们就开始编译安装–我们先安装libfastcommonfastdfs

  • 检查现在最新的包,并先解压出来,我安装的版本,分别是,
fastdfs-6.06.tar.gz
fastdfs-nginx-module-1.22.tar.gz
libfastcommon-1.0.43.tar.gz
nginx-1.16.1.tar.gz
解压上面的包
tar -zxvf fastdfs-6.06.tar.gz
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
tar -zxvf libfastcommon-1.0.43.tar.gz
tar -zxvf nginx-1.16.1.tar.gz

在这里插入图片描述

  • 安装fastdfs依赖包—如果前面环境都安装好了的话,这一步一般不会报错
cd libfastcommon-1.0.43 #进入依赖包的目录
./make.sh
sudo ./make.sh install
  • 安装fastdfs—如果前面环境都安装好了的话,这一步应该也不会报错
cd fastdfs-6.06 #进入fastdfs的目录
./make.sh
sudo ./make.sh install
  • 配置跟踪服务器tracker
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

在/home/gm/fastdfs/  目录中创建目录 tracker || 我的名字是gm,你们的自己改一下
mkdir -p /home/gm/fastdfs/tracker

编辑/etc/fdfs/tracker.conf配置文件  
sudo vim /etc/fdfs/tracker.conf
修改 base_path=/home/gm/fastdfs/tracker
  • 配置存储服务器storage
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

在/home/gm/fastdfs/ 目录中创建目录 storage
mkdir -p /home/gm/fastdfs/storage

编辑/etc/fdfs/storage.conf配置文件 
sudo vim /etc/fdfs/storage.conf
base_path=/home/gm/fastdfs/storage
store_path0=/home/gm/fastdfs/storage
tracker_server=自己ubuntu虚拟机的ip地址:22122
  • 启动trackerstorage || 如果这一步不能启动,请自己寻找原因,我暂时没有遇到着问题
sudo service fdfs_trackerd start
sudo service fdfs_storaged start

如果上面两个报错,或者没有反应,就用下面的
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

查看进程状态
ps -aux | grep fdfs
  • 如果出现下面这个,我们基本就成功了一大半了
    在这里插入图片描述

  • 测试是否安装成功-安装client配置

sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

编辑/etc/fdfs/client.conf配置文件 
sudo vim /etc/fdfs/client.conf
base_path=/home/gm/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
  • 上传文件测试
fdfs_upload_file /etc/fdfs/client.conf 上传的图片

比如
fdfs_upload_file /etc/fdfs/client.conf ./1.png #这个是你要上传图片的路径
  • 要上传的图片文件 ,如果返回类似的文件id则说明文件上传成功–恭喜
group1/M00/00/00/wKiYhV5p-8OAdBJ7AACpY5yOGco970.png

4. 接下来,我们就安装nginxfastdfs-nginx-module------这一步是最难的,也是最重要的,我安装了几次都失败了

注意
这里分你之前有没有安装nginx。加入你之前已经安装了nginx请看4.2。没有安装nginx,请看4.1
4.1 没有安装nginx的前提下,安装nginx,并安装fastdfs-nginx-module。
cd nginx-1.16.1 #进入nginx的目录

sudo ./configure --prefix=<你nginx想要安装的目录> --with-http_ssl_module <这个是ssl模块,方便以后安装https> --add-module=<后面是你要安装的第三方模块/src>
具体
sudo ./configure --prefix=/usr/local/nginx/ --with-http_ssl_module --add-module=../fastdfs-nginx-module-1.22/src

保证configure没问题,生成makefile之后,我们继续进行编译和安装
sudo make
sudo make install
  • 如果这样安装没有报错,那么恭喜,你又成功了一大步。下面再说一下已经安装了nginx,怎么安装第三方模块。这一步可以直接跳到5.继续看下一步。
  • 如果报错了,请看后面的报错集锦,看能不能找到对应的方案
4.2 已经安装nginx的前提下,安装nginx,并安装fastdfs-nginx-module。
  • 这边具体可以参考nginx如何安装第三方模块
首先确认之前nginx的配置
sudo nginx -V   || 注意这里要看看你这个nignx的执行目录在哪儿,然后查看配置
sudo /usr/sbin/nginx -V
sudo /usr/local/ngix/sbin/nginx -V
  • 大概长这样,然后后面的configure arguments: ,就是我们下次再编译nginx时候要带的参数了
nginx version: nginx/1.14.0 (Ubuntu)
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-GkiujU/nginx-1.14.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
  • 首先要去官网下载自己版本的nginx,然后重新编译安装。因为nginx不支持动态添加模块
  • 如果前面你都做好了,下面就开始安装
sudo ./configure <前面查看的配置,所有的 都要复制过来> --add-module=<你要安装的模块>

编译之前请注意备份你的nginx和nginx 的配置文件
具体
sudo ./configure <前面查看的配置> --add-module=../fastdfs-nginx-module-1.22/src

注意,如果着一步说什么模块找不到了,请自行研究,因为我是重新卸载nginx安装的

然后
sudo make
有人说,不能直接install,而是复制make之后的二进制文件。这边建议都可以,
但注意,install之后确实会覆盖之前的所有文件们包括主程序和一些配置和日志之类的
sudo make install

5.下面是报错集锦—看看有没有你的错误吧

报错1.0–make出现错误common_define.h

Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇_第2张图片
参见:https://blog.csdn.net/zzzgd_666/article/details/81911892


报错2.0 --结构体找不到,error:request for member 'path' in something not a structure or union

在这里插入图片描述
参见:https://blog.csdn.net/GMCN__/article/details/104842793


报错3.0 libfdfsclient.so :对‘comm_pool_connect_server_ex'未定义的引用

Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇_第3张图片
参见:出现这个就是你的版本问题了,你更新最新版本就可以解决了

- ok,这就是就是我目前所遇见的报错,如果你的问题还没解决,请自己看报错日志,去百度,谷歌,或者去作者github提issue,

我是使用一个新的虚拟机,然后重新配置环境,ok的,下面贴张图
Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇_第4张图片

6.在上面都正常安装之后,我们就启动nginx,测试是否成功!------快见到曙光了

  • 成功之后还有做一些最后的部署
复制nginx_module下面的文件到etc/fastdfs下面
sudo cp ../fastdfs-nginx-module-1.22/src/mod_fastdfs.conf  /etc/fdfs/mod_fastdfs.conf

sudo vim /etc/fdfs/mod_fastdfs.conf
  • 修改内容
connect_timeout=10
tracker_server=自己ubuntu虚拟机的ip地址:22122
url_have_group_name=true
store_path0=/home/gm/fastdfs/storage
也是复制两个配置文件
sudo cp ../fastdfs-6.06/conf/http.conf /etc/fdfs/http.conf
sudo cp ../fastdfs-6.06/conf/mime.types /etc/fdfs/mime.types
  • 在nginx下面的配置文件配置第三方模块
这边要看你的nginx的目录文件放在哪儿了,找不到可以看下配置或者搜索一下
sudo vim /usr/local/nginx/conf/nginx.conf
sudo vim /etc/nginx/nginx.conf
  • 在http部分中添加配置信息如下:
server {
	listen 8888;
	server_name localhost;
	location ~/group[0-9]/ {
		ngx_fastdfs_module;
	}
	error_page  500 502 503 504 /50x.html;
	location = /50x.html {
		root  html;
	}
}
  • 大概是这个样子
    Ubuntu安装fastfds方法 liunx安装fastdfs方法 nginx安装fastdfs模块 终极篇_第5张图片

7. 最后一步–启动nginx—最终的胜利

这个也是,看你的nginx装在哪里了,自己启动一下就好了

sudo /usr/local/nginx/sbin/nginx

sudo /etc/nginx/sbin/nginx
sudo service nginx start

sudo /etc/init.d/nginx start

如果nginx无法启动

  • 看一下你的配置文件有没有错,就上面加的那个server,语法错误,缩进啥的
  • 具体可以看一下systemctl status nginx.service
  • 如果是找不到那个模块,可能是你在安装模块的时候没有编译成功。也可能是你的配置文件没有复制到位,那么你就自己再自己检查检查

如果nginx正常启动,那么你就可以访问你的文件了

http://你虚拟机的ip:8888/group1/M00/00/00/wKiYhV5p-8OAdBJ7AACpY5yOGco970.png #后面着个是你安装fastdfs上传图片成功的那个返回值。


ok,至此,我们的nignx安装fastdfs就完全成功了。希望大家的技术能有所提升!


最后


如果这边文章帮到你了,请给我点赞留言转载哦!
转载请注明出处,有什么问题可以留言!

你可能感兴趣的:(fasdfs,fastdfs,nginx,ubuntu,分布式)