自建图床服务并配置免费CDN全球加速 过程记录
个人有一些图片托管的需求,在很多场景下比如说在博客文章中插入图片,在社交网站上分享图片,抑或是个人开源项目中的图片等等,都需要在文档(特别是MarkDown)中嵌入一个URL直链来指向图片。对于一些免费的图床服务商,个人感觉并不是很信任。数据安全是一方面,另一方面如果服务商跑路了,那么很多原先我创建的链接都会失效。据我所知,这样的例子比比皆是。 网上还有一些教程将GitHub当成免费图床来用。这样做弊端也很明显,GitHub在国内的访问速度非常慢,图片加载很慢。另外,缺少很多图床该有的功能,比如说自动压缩,自动转换成Webp,自动重命名等等。这样做也是不太可行的。下面就是一个我将GitHub用作图床的例子。每次我还需要将图片移动到代码仓库里,然后commit,push,我个人感觉很麻烦。 还有一段时间我试过把WordPress的Midea库当作图床来使用,但是我发现图片链接中带有wp-content/upload这样的路径。然后链接中还会出现图片的名称。我感觉并不是很雅观,而且在隐私的保护中有一种说不好的感觉。就像是别人一看这个URL链接,就能获知一些图片以外的信息。下面就是用WordPress的Media库当图床例子。可以看到,产生的直链不是很美观,而且还能暴露一些信息。 所以,我这边产生了自建图床服务的想法。这种图床最好能自动转换jpg、png格式的图片为webp。这样图片就能比较高质量、快速地在用户浏览器中加载出来。有关WebP的简要介绍如下: WebP is a raster graphics file format developed by Google intended as a replacement for JPEG, PNG, and GIF file formats. It supports both lossy and lossless compression,[8] as well as animation and alpha transparency. Google announced the WebP format in September 2010, and released the first stable version of its supporting library in April 2018. 然后图床还要能够自动压缩图片,然后产生带有MD5或者SHA256的URL链接,能够不暴露我的图片原始信息。然后还能够配置CDN加速,毕竟对于图床来说CDN非常重要,载入速度很大程度上影响用户的终端体验。还有最好能够用PHP写成,因为这样我能够上传到我的网站托管服务商进行托管,不需要另外去单独为这个买VPS来部署。 搭建EasyImages2.0自建图床 经过查找,我发现一款叫做EasyImages2.0的图床项目比较符合我的上述需要。这款图床用PHP写成,理论上能够在我的服务商托管的规则容许下正常运行。而且不需要数据库,免去了额外的数据库的配置,节约时间。 话不多说,先进入项目仓库下载最新发布版本。 先解压检查目录,不出意外的话应该是这样。项目根路径下有index.php,这种结构就可以直接FTP上传到托管服务商FTP上。不需要额外的配置,应该就可以使用了。然后,我就将压缩包上传到托管服务商的FTP上,解压到网站根目录public_html下(有些托管服务商是根目录www目录) 上述步骤完成后,FTP目录应该是下面这样。这个时候我们记得提前去app目录下,将upload.php权限改为0755。 修改权限的操作详情如下。可以按照我这样来。 还需要注意,根据该项目的兼容性描述,PHP环境需要满足一定的要求。 最低PHP 5.6,推荐PHP≥7.0及以上版本,需要PHP支持fileinfo,iconv,zip,mbstring,openssl扩展,如果缺失会导致无法上传/删除图片 文件上传视图提供文件列表管理和文件批量上传功能,允许拖拽(需要HTML5支持)来添加上传文件,支持上传大图片,优先使用HTML5旧得浏览器自动使用Flash和Silverlight的方式兼容 请确保fileinfo,iconv,zip,mbstring,openssl这几个扩展已经安装妥当。找到下面这种界面,然后用浏览器搜索检查是否都安装了。 ...