为什么?

在我们很多业务中都涉及到图片的上传。对于这种业务,我们通常想到的是将上传的图片写入到项目的某个相对路径,然后数据库中保存图片的相对路径地址。但是这种情况会使得我们的项目变得越来越大,也会占用大量的磁盘的IO性能。我们何不尝试使用图片服务器呢?数据库中就可以保存图片的URL,再显示在网页上。这样就可以将图片单独拿出来放在某个服务器上,可以提高性能。

如何搭建呢?

没有自己服务器的可以上七牛云,注册免费10G空间,个人使用完全够用。有服务器的话,就可以自己搭建一个图片服务器了。Alibaba工程师开源的FastDFS是专门为大流量文件服务的,而一个普通的APP网站并不需要这么大的图片服务,因此这里我们使用VSFTP服务器作为图片服务器,VSFTP理论上能支持4000并发,对于一般的图片服务已经足够。下面我们开始搭建VSFTP图片服务器。

  1. 安装nginx
    此步骤自行百度。(https://blog.csdn.net/qq_37345604/article/details/90034424)

  2. 安装VSFTP组件

    • yum install -y vsftpd
    • 查看VSFTP的启用状态:
      systemctl status vsftpd.service
    • 若Active为inactive,因此需要手动启动VSFTP服务
      systemctl start vsftpd.service
    • 添加VSFTP用户以及为其设置密码
      useradd ftpuser
      passwd ftpuser
    • 开启SELinux
      vim /etc/selinux/config
      将SELINUX设置为1,然后使用reboot重启linux
    • 开启上传文件
      ftpd_full_access on
      tftp_home_dir on
  3. 修改nginx.conf配置文件
    添加一个server节点,监听80端口,在server节点下添加一个映射:

    server {
      listen       80;
      server_name  localhost;
    
      location /ftp/images {
          alias  /home/ftpuser/images/;
          autoindex on;
      }
    }

    意思是会将 ip地址/ftp/images的请求映射到服务器的/home/ftpuser/images文件夹上。

  4. 重启nginx
    进入到nginx安装目录下的sbin目录,执行./nginx -s reload命令。

  5. 测试
    图片说明