项目比较老旧,自己修改了一下,跑在mac上,用的IDEA和centos7 64位系统,记录下来,以后上传图片都可以用。

使用场景:图片上传

如果我们把图片全都放在上传到webapp路径下显然是一种非常low的行为,当项目逐渐增大,可能会布置到多个tomcat上,这时对于图片这种资源的处理最好就是集中存放在一起,便于存储和访问。

FastDFS

FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等。
FastDFS主要的有两个角色:tracker和storage。详细的就不在介绍了,网上有很多资料,我们就来布置一个最简单的一个tracker和一个storage的dfs。

工具

mac系统

  • helm是一个可以修改mac hosts文件的工具
  • virtualbox centos7 虚拟机
  • FileZilla 是mac上的一个ftp服务器,可以方便的操作虚拟机,对于linux指令不是很熟悉的同学可以使用,但不要依赖,指令才是王道

安装好虚拟机 大约就是这个样子

图片描述

先别启动,点设置看一下网络连接,应该是这个样子的,然后在开启虚拟机
图片描述

为了方便,可以使用root的账号密码,这样可以方便很多。


输入ip addr 查看IP地址,如果是安装的最小版的cent,应该是没有ifconf这些指令的,可以使用yum install net-tools 前提是你的电脑能上网
图片描述

可以发现是没有ipv4的地址的,没有地址外网就无法访问。但是这时是可以下载东西的,我们先现在一些必要的依赖包

yum install vim(个人习惯,可以不装)
yum -y install libevent
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
yum install zip unzip

最后我们要访问服务器 首先要通过防火墙,最简单的方法直接关闭防火墙,暴露所有接口,当然也可以选择暴露你要用的接口,这里我们选择最简单的,直接关闭,先查看一下是不是开启了。
firewall-cmd --state #查看默认防火墙状态
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
最后在查看一下状态是否确定关闭了,简单暴力,当然仅限于懒人开发,真实环境肯定不能这么做

准备妥当之后关闭虚拟机,打开设置->网络
图片描述

修改为桥接网卡在开机,输入ip addr
图片描述

哒哒,IP地址出来了,没有ip地址的虚拟机就像没有梦想的U盘!

安装程序

这时我们安装Filezilla这个软件
图片描述

像这样一顿操作以后,就可以看到虚拟机下的文件路径了,这里我们需要FastDFS和nginx的压缩包
nginx-1.8可以自行下载,我提供了fastdfs所需要的包,这些不太好找。点这里密码uc1p
全部放在/usr/local/路径下面。

安装libfastcommonV1.0.7工具包

  1. 解压缩
  2. ./make.sh
  3. ./make.sh install

安装Tracker

  1. 解压缩FastDFS_V5.05
  2. ./make.sh
  3. ./make.sh install

这时在你解压缩的路径下会有一个fastdfs-5.05的文件夹
cd /fastdfs-5.05/conf,拷贝这里的所有配置文件
cp * /etc/fdfs,去查看一下
图片描述

cd /etc/fdfs
vi tracker.conf 

这时我们修改一下配置文件
图片描述

回到之前的解压目录下,将tracker.conf做同样的修改

cd /usr/local/fastdfs-5.05/conf
vi tracker.conf 

启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
可以通过 ps aux|grep tracker 查看进程是否启动

配置Storage

cd /usr/local/fastdfs-5.05/conf
vi storage.conf 

图片描述
图片描述
图片描述

到/etc/fdfs下,将storage.conf文件做同样的修改

cd /etc/fdfs
vi storage.conf

启动storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
测试

vi /etc/fdfs/client.conf

图片描述

cd /etc/fdfs
/usr/bin/fdfs_test /etc/fdfs/client.conf upload anti-steal.jpg

如果成功,这时会将会看到一串url地址,这就是图片在服务器上的存放地址,就表示成功啦
图片描述
既然是一串url,我们就需要一个nginx为我们解析请求

安装Nginx

解压fastdfs-nginx-module_v1.16.tar.gz
解压nginx-1.8

 vi fastdfs-nginx-module/src/config 把其中的local去掉

clipboard.png

cd /nginx-1.8.0


*./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src* 这里就是刚刚你配置的路径



make

make install

将fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下,并修改

clipboard.png
图片描述
clipboard.png
图片描述

去nginx中新建一个server

cd /usr/local/nginx/conf
vi nginx.conf

添加如下代码并保存
server {
    listen : 80
    servername : 自己的ip
    localtion /group1/M00{
        ngx_fastdfs_module;
    }
}

cd /usr/local/nginx/sbin
./nginx

启动服务器就好啦

测试

打开本机的浏览器,输入虚拟机的IP地址
图片描述

如果看到Nginx的欢迎页说明就配置成功啦
今天太晚了,明天写一写在java端maven配置和具体的上传操作代码还有一些后续的小trick


Charlie
86 声望6 粉丝

身怀利器,杀心自起,慎而重之