nginx+vsftp搭建图片服务器
前言:
在分布式架构中,往往会有多个tomcat,然后你上传的图片只是在其中的某一个tomcat,你访问时是由集群的tomcat随机提供服务。当你访问的tomcat是有图片的那个时,图片能正常显示,如果恰巧是那个没有图片的tomcat时,图片就不能正常显示。这就完成了访问同一个图片,可能你刷新一次可以访问,再刷新一次图片就访问不到了。这时,我们就需要一个服务器用来专门存储图片,一般我们都用nginx。
1、nginx+vsftp:
上面分别介绍了nginx和vsftp,那么这两个东西怎么组合起来用呢?怎么实现这个图片服务器呢?我们知道,tomcat安装好启动后,在浏览器输入localhost:8080,就会出现tomcat的欢迎页,nginx也一样。比如linux的ip是192.168.50.122,那么启动nginx后,在浏览器访问这个地址也会出现nginx的欢迎页,其实是因为它有个默认的访问页面,完整的地址应该是192.168.50.122/index.html,那么我们就可以根据这个,把它默认的访问页面改成我们上传的图片的保存路径,比如上传了一张pic.jpg图片到linux的/home/ftpuser/images中,如果我们把默认访问页面改成/home/ftpuser,那么在浏览器中输入192.168.50.122/images/pic.jpg,就可以访问到这张图片了。下面就来介绍nginx、vsftp的安装以及配置。
vsftp的安装:
1、安装:
yum -y install vsftpd
2、添加ftp用户:
useradd ftpuser
3、给ftp用户添加密码:
passwd ftpuser
输入两次密码后修改密码。
4、修改selinux:
①查看状态:
getsebool -a | grep ftp
执行这个命令可以看到
allow_ftpd_full_access --> off
ftp_home_dir --> off
这两个都off,执行如下命令设置为on:
[root@localhost ~]# setsebool -P ftpd_full_access on
[root@localhost ~]# setsebool -P ftp_home_dir on
再次执行getsebool -a | grep ftp
看到那两个状态是on就行了。
5、关闭匿名访问:
执行
vim /etc/vsftpd/vsftpd.conf
命令:
还要在vsftp.conf文件最下面添加以下内容:
然后保存退出即可。
6、设置开机启动:
[root@localhost ~]# chkconfig vsftpd on
7、测试:
打开filezilla工具,输入虚拟机的ip,21端口,用户名和密码,点击快速连接,连接vsftp服务:
如图所示则连接成功。
配置nginx为图片服务器:
按照以上步骤安装好nginx和vsftp后,还是不能访问上传的图片的,需要进行如下配置:
执行
vim /usr/local/nginx/conf/ nginx.conf
命令,打开nginx的配置文件:
按道理这样就可以了,但是我访问却报错:
403 forbidden,最后发现是因为ftpuser文件夹没有可读权限,执行如下命令:
chmod -R 755 /home/ftpuser
再次访问即可成功!
至此图片服务器搭建完成!至于在Java中如何使用这个图片服务器,请参考Java实现把图片上传到图片服务器。
总结:
在搭建的过程中,遇到很多坑,因为我参考的教程是centos 6,防火墙是iptables,而centos 7是firewall,