最近给阿里云服务器配置fastdfs,通过外网访问,查询了许多资料,也走了一些坑,总结一下最方便的方法:
FastDfs
安装delron-fastdfs
docker pull delron/fastdfs
1.启动tracker
HOME为自己设置的服务器目录,在下一级再建一个tracker文件夹,默认http端口8080不用修改
docker run -d --network=host --name tracker -v HOME/tracker:/var/fdfs delron/fastdfs tracker
2.启动storage
HOME为自己设置的服务器目录,在下一级再建一个storage文件夹
docker run -d --network=host --name storage -e TRACKER_SERVER=自己的服务器ip:22122 -v HOME/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage
启动完成后,默认的http_port为8888,在这个版本的fastdfs里,这个端口不用和nginx监听的对应起来,不用管这个默认端口
docker exec -it storage /bin/bash
vi /etc/fdfs/storage.conf
文件最后把http_port改成80.
3.Nginx
最后访问效果类似:
因为nginx默认监听的端口为8888
xxxx:8888/group1/M00/00/00/rBoFwGDa6PaAIFhaAAAADVMSH0Y67.html
不太好看,一般访问不带端口号,在这里把8888改成80.
delron/fastdfs版本自带nginx,直接进入容器,把listen改成80:
docker exec -it storage /bin/bash
vi /usr/local/nginx/nginx.conf
server {
listen 80;
server_name 自己服务器ip;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.防火墙打开端口
开启防火墙
systemctl start firewalld
开启端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=23000/tcp --permanent
firewall-cmd --zone=public --add-port=22122/tcp --permanent
在阿里云的服务器上也要添加规则:
4.测试
docker exec -it storage bash
echo hello>a.txt
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf a.txt
group1/M00/00/00/rBoFwGDWrcCALOJJAAAABncc3SA472.txt