学习与交流:PHP技术交流
基于以上的考虑,我们希望的设计目标是:
(1)图片能进行分布式存储;
(2)图片服务器能实现负载均衡;
(3)能根据用户访问量及网站图片数据量的增加能动态添加图片服务器节点;
(4)图片服务器节点的动态调整对网站用户而言是透明的,并且不会中断系统的正常运行;
其中,(1)和(2)是针对系统的高可用和伸缩性,而(3)和(4)则是针对系统的高可用和可扩展而言的。
2系统架构设计系统整体架构如上图所示:包括客户端、Web服务器、数据库服务器、图片服务器集群4个部分。
(1)Web服务器部署网站的Web页面,用于响应客户端用户的请求。当用户浏览网页时,Web服务器响应请求并访问数据库服务器,获得网页中所有图片的URL路径,然后生成页面并返回给客户端;
(2)客户端接收该页面并根据页面中的图片URL路径自动从不同的图片服务器下载并显示相应图片。
(3)数据库服务器用于记录所有图片的编号以及图片的存放位置等信息,同时需要记录所有图片服务器的配置及当前状态信息。
(4)图片服务器集群用于存放网站的所有图片信息,该集群的服务器数量可以根据需要动态增加或删减。
下面是nginx通过反向代理来做一个简易的图片服务器
大致步骤:
1取消注释开启日志,便于出现问题排查
error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;
2修改nginx/conf/nginx.conf,存放图片的目录被我放在了/root/pics
server{listen80;server_name.61.41.64;#charsetkoi8-r;#access_loglogs/host.access.logmain;location^~/images/{alias/root/pics/;index1.txt;}
过程当中踩到的坑:
访问资源出现forbidden,查看日志出现错误:
forbidden(13:Permissiondenied)NginxforbiddenforbiddenPermissiondenied
原因是目录权限不够,解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决。
chmod-R/data
chmod-R/data/