腾讯SCF免费搭建Onedrive网盘

avatar 2020年1月28日19:52:21腾讯SCF免费搭建Onedrive网盘已关闭评论

原文

本搭建方法用腾讯云的无服务器云函数配合API网关实现, 不需要自己的服务器,0成本搭建, 实测运行机器的配置 8核16G内存(可以运行 system命令链接shell看), 因此此方法搭建自己的大型网站完全够用。

目前无服务器云函数 SCF 处于公测阶段,并未正式收费,所有用户均可以放心使用。

演示地址(非个人的个人网盘,公开的演示地址)

SCF 简介

腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码,是实时文件处理和数据处理等场景下理想的计算平台。您只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。

无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

腾讯云 SCF 目前仍在 公测 阶段,所有用户可免费使用,结束日期待定。公测结束后,每月仍可享受足量的 免费资源使用量和免费调用次数,但收取 外网出流量 费用。

资源类型 每月免费额度
资源使用量 40 万 GBs
调用次数 100 万次

所谓外网出流量,即程序通过 SCF 访问外部网络的流量,对于本程序即请求微软 API 的流量,每次调用从几 B 到几 KB 不等;文件上传下载直接与微软交互,不经过 SCF。

下图(老图可能与描述不符)是我一天的使用量,大概调用了 10000 次,如果是 30 天就是 30 万次,还不到免费额度的 1/3。资源使用量 1000 GBs,30 天就是 3 万 GBs,远低于 40 万 GBs。外网出流量 0.05G ,一个月大概是 1.5 G,按照 正式收费标准 0.8 元 / G,每月要支付 1.2 元的出流量费用,完全可以接受(目前不会收取)。

获取 Onedrive 账号

既然是利用 Onedrive,首先要获取一个账号,支持个人、企业和教育版。打个广告,我的 杂货铺 里有含 5T 空间的 Onedrive 教育账号,限时优惠 1 元 / 个,购买后可直接使用。

创建函数服务

有了账号后就可以创建函数了。登录 腾讯云 SCF 控制台(在此之前要完成腾讯云 实名认证),点击左侧菜单栏的 函数服务,接着点击顶栏的地区选择下拉框,选择 香港,因为大陆区域在绑定域名时需要备案,如果你拥有已备案的域名,则可以选择国内,当然不绑定域名也可以使用。接着点击蓝色的 新建 按钮,创建函数。

随后在新建函数页面填写 函数名称,名字随意;运行环境 选择 Php 7.2创建方式 选择 模板函数;选择 helloworld 模板,最后点击最下方的 下一步。进入 ② 函数配置 页面后不做任何修改,直接点击 完成

上传函数代码

下载并解压 Tai7sy 大佬的项目 OneDrive_SCF。随后,进入 SCF 函数代码 面板,将 提交方法下拉框 的值改为 本地上传文件夹,随后点击 上传,选择 解压好的文件夹,最后点击 保存。注意,解压后查看一下是否包含两层文件夹,如果是,上传内层。

添加触发方式

进入函数服务的 触发方式 面板,点击 添加触发方式。选择触发方式下拉框中的 API网关触发器,勾选下方的 启用集成响应,点击 保存

稍等片刻,下方会出现一个 访问路径,点击打开它。

获取并填写 refresh_token

打开 函数 API 网关访问路径 后,点击其中的 Get a refresh_token,在打开的微软账号登录页面中,填写你的 Onedrive 账号和密码,完成登录。

![5}RT]W_6)TC%RBYPYG8UV.png](https://img10.360buyimg.com/img/jfs/t1/49067/32/9406/43409/5d6b9617Eeacb072b/2c65ab509bb73465.png)

登录完毕后会跳转到 localhost,并提示无法访问此网站。

将网址栏的 localhost 替换为 函数 API 网关访问路径 后回车。

稍等片刻便会返回 refresh_token,复制它备用。

进入 SCF 函数代码 面板,选中 index.php,将得到的 refresh_token 粘贴进,下图所示的单引号之间,最后点击靠近左下方的 保存

配置环境变量

进入 函数配置 面板,点击靠近右上角的 编辑 按钮。

在新面板中,将 内存 修改为 最大值,当然 64M 也是可以运行的,需要说明的是,内存越大可用的免费时长越少,不过一般是够用的;超时时间 填写 30,随后添加 5 个环境变量,它们的功能如下:

key value intro
sitename 站点名称
public_path 公开展示的 Onedrive 根路径 未绑定自定义域名时使用
private_path 公开展示的 Onedrive 根路径 绑定了自定义域名时使用
passfile 密码文件名称 在某目录下添加该文件,里面写入密码即可加密文件夹,可以是’.password’,也可以是’aaaa.txt’等等;
admin 管理员密码 管理员登录后功能更多
adminloginpage 管理员登陆路径 如果设置,管理登录的页面不再是’?admin’,而是此设置的值,登录按钮及页面隐藏;
imgup_path 公开图床 设置图床路径,不设置这个值时该目录内容会正常列文件出来,设置后只有上传界面,不显示其中文件(登录后显示)

所有信息填写完毕后点击保存,刷新 函数 API 网关访问路径,即可访问你的 Onedrive 网盘。

自定义域名(可选)

进入函数服务的 触发方式 面板,点击打开 SCF_API_SERVICE

打开服务界面的 自定义域名 面板,点击 新建

在添加域名对话框中,填写你的 域名协议 选择 http,如果你想使用 https,则必须在腾讯云 申请或上传 SSL 证书,如果你已经在其他平台申请过推荐直接上传,因为申请一般要等待数小时才能完成。未进行上述操作你看到的 证书下拉框 里将会是。网络类型勾选 外网。选择 自定义路径映射,添加一条记录,路径为 /,指向 发布 环境。

打开你的域名解析服务商控制台,在域名解析列表里添加一条 CNAME 记录,值便是图中上方的 外网二级域名。最后点击 提交

进入 管理 API 面板,点击 编辑

在 前端配置 面板中,将路径改为 /,点击下一步。

在 后端配置 中,保证已勾选 启用集成响应 后点击 下一步

在 响应结果 面板,将 返回类型 改为 HTML,点击 完成

在弹出的对话框中,点击 前往发布服务

在 服务信息 面板,点击靠近 右上角 的 发布 按钮。

在弹出的 发布服务 对话框中,将 发布环境 改为 发布备注 随意填写,最后点击 提交

现在就可以通过自定义域名访问你的网盘了。

http 转 https(可选)

如果你使用了 https,可以通过在 html 头部添加 js 的方式实现 http 跳转 https

复制以下 js 代码,粘贴到 函数代码 面板里的 index.php 文件的 609 行左右,点击靠近左下方的 保存

copy

<script>
  if (location.protocol === "http:") {
    location.href = location.href.replace(/http/, "https");
  }
</script>

现在使用 http 协议访问,查看是否自动跳转 https

感谢:https://github.com/qkqpttgf/OneDrive_SCF

avatar