这几天学习,需要用nginx
搭建fastdfs
作为分布式文件管理系统。然后就是各种报错!我差不都整了1天,太难了,但最后找到了一个可以执行的解决方案,这里给大家分享一下。
其他报错地方我单独写成博客,方便大家找到这里来。
文章比较长,大家耐心看哈
自己的环境没有配置好
没有用最新的软件
libfastcommon
| fastsds的库文件,需要先编译安装好fastdfs
| fastsds主文件nginx
| nginx服务器配合fastdfs 使转发更高效fastdfs-nginx-module
| fastdfs的nginx模块模块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.
libfastcommon
和fastdfs
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
tracker
和 storage
|| 如果这一步不能启动,请自己寻找原因,我暂时没有遇到着问题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
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 #这个是你要上传图片的路径
group1/M00/00/00/wKiYhV5p-8OAdBJ7AACpY5yOGco970.png
nginx
及fastdfs-nginx-module
------这一步是最难的,也是最重要的,我安装了几次都失败了nginx
。加入你之前已经安装了nginx
请看4.2。没有安装nginx
,请看4.1cd 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
.继续看下一步。如果报错了,请看后面的报错集锦,看能不能找到对应的方案
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
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
common_define.h
参见:https://blog.csdn.net/zzzgd_666/article/details/81911892
error:request for member 'path' in something not a structure or union
参见:https://blog.csdn.net/GMCN__/article/details/104842793
对‘comm_pool_connect_server_ex'未定义的引用
参见:出现这个就是你的版本问题了,你更新最新版本就可以解决了
我是使用一个新的虚拟机,然后重新配置环境,ok的,下面贴张图
复制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的目录文件放在哪儿了,找不到可以看下配置或者搜索一下
sudo vim /usr/local/nginx/conf/nginx.conf
sudo vim /etc/nginx/nginx.conf
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;
}
}
这个也是,看你的nginx装在哪里了,自己启动一下就好了
sudo /usr/local/nginx/sbin/nginx
sudo /etc/nginx/sbin/nginx
sudo service nginx start
sudo /etc/init.d/nginx start
如果nginx无法启动
systemctl status nginx.service
http://你虚拟机的ip:8888/group1/M00/00/00/wKiYhV5p-8OAdBJ7AACpY5yOGco970.png #后面着个是你安装fastdfs上传图片成功的那个返回值。
ok,至此,我们的nignx安装fastdfs就完全成功了。希望大家的技术能有所提升!