Ubuntu20.04中fastdfs,nginx的安装和配置
环境准备:
编译环境:
Ubuntu20.04
使用的系统软件:
fastdfs-6.07
fastdfs-nginx-module-1.22
libfastcommon-1.0.53
nginx-1.18.0
安装libfastcommon:
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #编译安装
安装FastDFS:
cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #编译安装
配置跟踪服务器tracker:
#配置文件准备
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf#在/home/目录中创建目录 fastdfs/tracker
mkdir –p /home/fastdfs/tracker#编辑/etc/fdfs/tracker.conf配置文件
vim /etc/fdfs/tracker.conf
#需要修改的内容如下
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/home/faster/tracker # 存储日志和数据的根目录
配置跟踪服务器tracker:
#配置文件准备
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf#在/home/目录中创建目录 fastdfs/storage
mkdir –p /home/fastdfs/storage#编辑/etc/fdfs/storage.conf配置文件
vim /etc/fdfs/storage.conf#需要修改的内容如下
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/home/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/home/fastdfs/storage # 第一个存储目录
tracker_server=192.168.154.130(ubuntu虚拟机的ip):22122 # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
配置client:
#配置文件准备
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf编辑/etc/fdfs/client.conf配置文件
vim /etc/fdfs/client.conf#需要修改的内容如下
base_path=/home/fastdfs/tracker
tracker_server=192.168.154.130(ubuntu虚拟机的ip):22122 #tracker服务器IP和端口
上传文件测试:
#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
或者
fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件路径
如果返回类似group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg的文件id则说明文件上传成功如果报错 connect refuse 可以先把tracker,storage进程关闭再依次打开,重新上传
安装nginx和fastdfs-nginx-module(建议使用第二种apt-get安装):
方式一:通过下载的nginxan安装包进行安装
wget http://nginx.org/download/nginx-1.18.0.tar.gz #下载nginx压缩包(可以直接去官网下载)
tar -zxvf nginx-1.18.0.tar.gz #解压
cd nginx-1.18.0/
#添加fastdfs-nginx-module模块
./configure --prefix=/usr/local/nginx/ --add-module=/usr/local/src/fastdfs-nginx-module/src/ #根据自己的 fastdfs-nginx-module路径填写
make && make install #编译安装
方式一配置nginx访问
cp fastdfs-nginx-module-1.22(路径要填完整,可以右键属性查看)/src下的mod_fastdfs.conf /etc/fdfs/mod_fastdfs.confvim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=192.168.154.130(ubuntu虚拟机的ip):22122 #tracker服务器IP和端口
url_have_group_name=true
store_path0=/home/fastdfs/storagecp 解压缩的fastdfs-master目录中的http.conf /etc/fdfs/http.conf
cp 解压缩的fastdfs-master目录中的mime.types /etc/fdfs/mime.types#配置nginx.config
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;}
}#测试下载,用外部浏览器访问刚才已传过的nginx安装包或图片,引用返回的ID
http://192.168.154.130:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz
#弹出下载或图片单机部署全部跑通
方式二:通过apt-get进行安装
1.通过apt-get 安装nginx
apt-get install nginx
apt-get安装nginx的文件位置
/usr/sbin/nginx #主程序
/etc/nginx #存放配置文件
/usr/share/nginx #存放静态文件
/var/log/nginx #存放日志
2.查看安装的nginx版本
nginx -V
#复制configure arguements:后的内容,这些是已经安装的模块,其中没有fastdfs-nginx-module
3.去官网下载一个相同版本的源码包,解压,与方式一相同
4.进入解压后的源码包,编译
./configure 之前所复制configure arguements:后的内容 --add-module=/usr/local/src/fastdfs-nginx-module/src/ #根据自己的 fastdfs-nginx-module路径填写
5.执行可能遇到的问题
– the HTTP XSLT module requires the libxml2/libxslt libraries
#解决办法
apt-get install libxml2 libxml2-dev libxslt-dev
the HTTP image filter module requires the GD library.
#解决办法
apt-get install libgd-dev libgd2-xpm-dev
the GeoIP module requires the GeoIP library.
#解决办法
apt-get install geoip-database libgeoip-dev
the HTTP rewrite module requires the PCRE library.
#解决办法
apt-get install libpcre3 libpcre3-dev
6.编译完成后执行make,注意不要执行make install ,不然会覆盖安装原来的或导致虚拟机中存在两个nginx,引起各种bug
make
7.替换nginx二进制文件(建议备份niginx,失败后可以退回来):
cp /usr/sbin/nginx /usr/sbin/nginx.bak #备份cp ./objs/nginx /usr/sbin/ #make编译过后的nginx,替换系统安装
8.测试
#再次查看版本
nginx -V
#复制configure arguements:后的内容,除了之前安装的模块,最后会有fastdfs-nginx-module
方式二配置nginx访问
vim /etc/nginx/nginx.confserver {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;}
}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
}
9.启动nginx,打开浏览器测试
service nginx start
#测试下载,用外部浏览器访问刚才已传过的nginx安装包或图片,引用返回的ID
http://192.168.154.130:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz
#弹出下载或图片单机部署全部跑通
写在最后:
fastdfs,nginx本身的安装不难,但是很容易出现各种各样的问题。
建议在测试前查看tracker,storage,nginx是否运行
ps -ef | grep tracker
ps -ef | grep storage
ps -ef | grep nginx
如果一次没有访问到上传的资源,建议关掉tracker,storage,nginx
#可以通过fastdfs自带的stop.sh来关闭
fastdfs所在目录下/stop.sh 要关掉的进程(查看进程时后面有)
如果关不掉,可以使用kill 强行关闭(本人使用)
kill -9 端口号
然后依次开启tracker,storage,nginx
另外,如果还是没有访问到上传的资源,建议查看一下8888端口是否开了
netstat -luntp } grep 8888
如果没反应就是没开,建议百度,我最开始因为没卸载干净又进行重装导致又两个nginx,8888端口也没反应,百度试了后8888端口突然就开了,最后成功访问,但是我最后还是将nginx完全卸载了,将与nginx相关的全部删除后通过方式二重新安装nginx,一次成功。
参考:
#fastdfs开发者yuqing老师的安装过程
https://github.com/happyfish100/fastdfs/wiki/%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4
#apt-get 安装nginx 添加 fastdfs-nginx-module模块
https://blog.csdn.net/Fffhhas/article/details/106450214