typecho对接腾讯COS对象存储

服务商

市场上有很多的云提供商可以选择,七牛云、又拍云,百度云、阿里云、腾讯云等等,而且这些提供的Bucket

免费额度也差不多少。个人推荐下腾讯云的COS对象存储,每个月免费50G空间,10G的CDN。(ps:虽然老马挺

抠门的,这个免费额度足够我们小搏客使用了,到时候在底部给他加个友情图标作为回报吧。)

简介COS

对象存储(Cloud Object Storage,COS)是腾讯云提供的面向非结构化数据,支持 HTTP/HTTPS 协议访

问的分布式存储服务,它能容纳海量数据并保证用户对带宽和容量扩充无感知,可以作为大数据计算与分析

的数据池。腾讯云 COS 提供网页端管理界面、多种语言的 SDK 以及命令行和图形化工具,并且完全兼容

S3 的 API 接口,方便用户直接使用社区工具和插件,COS 还可以和其他云产品结合,比如利用 CDN 的全

球节点提供加速服务,利用数据万象的图片处理能力提供一站式图片解决方案等。

食用方法

首先,当然要有个腾讯云的账号了,一般都是用QQ登陆的,如果你没有QQ的话,那我只能告诉你,重新申请吧。

进入后按照如图下所指示找到COS存储面板。

20181201235845.png

这里在官方给出的免费额度,如果不懂的话可以资源腾讯云客服。

20181202000556.png

接下来,我们要创建我们的COS对象存储。如下图:

20181202000819.png

接下来我们开始配置我们的COS对象存储,首先我们要保存一些基本数据,然后在配置COS。如图用记事本保存下列
数据:

20181202001339.png

接下来我们点击左边菜单栏的密钥管理,去获取我们的API密钥,此密钥包括三个数据,分别为APPID,SecretId,

SecretKey。这三个数据其中SecretKey需要短信验证才可以观看,这三条数据也要存起来备用。这里就不做图片

展示了。

防盗链配置

这个配置最好配置下,官方文档说明,如果本站域名配置过CDN的话,那么会优先执行CDN的防盗链规则,在解释下什么

是防盗链,通俗的讲,就是别人恶意访问你的静态资源,而这些静态资源需要走你的CDN流量或者COS流量,从而照成你

的经济损失,本身就是用免费资源的我们最好还是配置下防盗链规则,如果CDN配置过防盗链的话这步可以省略。

20181202001921.png

如上图,*号为通配符,它可以自动匹配我们一级域名下的所有二级域名,并且设置为白名单,非此一级域名下的二级域名

如果访问COS存储的文件则会返回403.

配置插件

本人所用的插件是开源的,cosUploadV5。在这里首先感谢开源插件的开发者,点击这里下载

下载的方式可以用GitClone,也可以用Zip下载,推荐GitClone。

下载后上传到你空间的plugins插件目录里,并且返回到网站后台插件管理点击开启插件,然后进入设置来配置。

把刚才所存储的数据填写到插件里,点击保存就可以了。

设置后插件并且保存后,要做一处修改,在Plugin.php 148行左右可以修改上传的默认目录:
本插件默认上传目录:$filePath = '/' . date('Y') . '/' . date('m') . '/' . date('d') . '/';
typecho默认上传目录:$filePath = '/' . 'usr' . '/' . 'uploads' . '/' . date('Y') . '/' . date('m') . '/';
修改$filePath变量即可

免费额度只适用于中国大陆,所以创建存储桶的时候要选择北京、上海、广州、成都和重庆,具体的可以参考这里

常见问题

如果遇到上传失败的话可以查看下自己服务器的upload文件夹的权限是否是777,给好权限后,在重启Nginx或者Apache,

刷新页面在试下,如果服务器环境是SAE,BAE,ACE以及是否是国内常见的虚拟主机,如果是的话,上传附件也会失败,

如何处理呢?在服务里找到这个文件var/Typecho/Common.php。的第99行。或者搜索下面的函数 isAppengine。

 public static function isAppEngine()
{
    return !empty($_SERVER['HTTP_APPNAME'])                     // SAE
        || !!getenv('HTTP_BAE_ENV_APPID')                       // BAE
        || !!getenv('SERVER_SOFTWARE')                          // BAE 3.0
        || (ini_get('acl.app_id') && class_exists('Alibaba'))   // ACE
        || (isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],
           'Google AppEngine') !== false) // GAE
        ;
}

将其改成:

public static function isAppEngine()
{
    return false;
}

然后重启Nginx或Apache即可。

以上总结来源各大博主的经验,本人只是作为总结,如有侵权,请联系本站,本站会及时删除
最后修改:2019 年 04 月 16 日 03 : 44 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

3 条评论

  1. 黑桃三

    用腾讯云存储了还挂着又拍的logo干嘛,搞公益啊

    1. 洛小依
      @黑桃三

      没办法 东西太多

    2. 洛小依
      @黑桃三

      腾讯云只是给我提供的cos对象存储,又拍云为我提供的静态加速