开发者社区> tonyxx> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

函数计算搬站新利器---Custom Runtime演示

简介: 功能介绍 今天在函数计算上实现一个Web站点是比较简单的,比如: 部署基于 python wsgi web 框架的工程到函数计算 介绍的用WSGI框架结合函数计算部署Python的Web App。最近函数计算发布了一个新功能,使得搬站进一步简化了。
+关注继续查看

功能介绍

今天在函数计算上实现一个Web站点是比较简单的,比如: 部署基于 python wsgi web 框架的工程到函数计算 介绍的用WSGI框架结合函数计算部署Python的Web App。最近函数计算发布了一个新功能,使得搬站进一步简化了。
之前可能有同学有个困惑,我有一个网站,想用Serverless减成本,但是也不想改现有的代码,这个之前没办法直接跑在函数计算上。而利用Custom Runtime,我们真正可以做到不改一行代码搬站。
什么是Custom Runtime,顾名思义就是自定义Runtime,也就是说它不限制用户代码使何种语言或者何种框架,只要它能运行在Debian 9下即可。它和之前的Java, Python等runtime显著的不同就是用户的自主权更大了。在http 触发器场景下,只要你的WebApp监听在9000端口,你就可以把整个站点运行在函数计算中。下面我们介绍如何用CustomRuntime来运行一个wagtail CMS系统 (基于Django http://wagtail.io)

准备包含wagtail的代码包

由于对用户代码有极大的灵活性,CustomRuntime 要求在官方提供的fun 工具里的custom runtime image里编译用户代码,确保其线上运行环境和本地编译环境是一致的,这样最大程度减少系统差异带来的bug。
因此我们第一步就是用fun工具启动custom runtime image

  1. 在本地启动函数计算Custom Runtime的docker image,并将一个本地目录/local_directory映射到image的/code,如下所示

    cd /local_directory/
    fun install sbox --runtime custom --interactive
  2. cd /code
  3. pip install wagtail -t .
  4. ./bin/wagtail start mysite
  5. cd mysite
  6. pip install -r requirements.txt
  7. python manage.py migrate
  8. python manage.py createsuperuser
    设定管理员密码
  9. python manage.py runserver 0.0.0.0:9000
    用浏览器访问127.0.0.1:9000,你就可以得到如下界面

wagtail_sample
OK,至此我们在本地能够运行一个最简单的wagtail站点。
说明: 可以用docker ps列出当前运行的image,然后手动启动custom image,将本地9000端口和docker的9000绑定,如下所示。

run -v /local_directory:/code -ti -p 9000:9000 --entrypoint sh aliyunfc/runtime-custom:build-1.6.0

退出docker,在本地进行下列操作。
10.接下来我们需要修改wagtail的配置文件,使其能运行在函数计算线上环境中,
在mysite/settings/base.py中修改database path, 并将本地的db.sqlite3文件copy到对应的NAS目录中(/mnt/disk为您函数计算服务中设置的NAS挂在点)

# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join("/mnt/disk", 'db.sqlite3'),
    }
}

另外,还需修改MEDIA_ROOT目录为NAS目录,如下面所示:

MEDIA_ROOT = os.path.join("/mnt/disk", 'media')

11.准备bootstrap文件为如下内容,且将bootstrap文件设置为可执行(chmod +xxx bootstrap):

#!/bin/bash
export PYTHONPATH=/code
./mysite/manage.py runserver 0.0.0.0:9000

12.在/local_directory目录下将整个文件夹打包:

zip -r code.zip *

创建函数计算custom_demo服务并配置NAS

请参考:https://help.aliyun.com/document_detail/87401.html
注意在NAS挂载点本地目录一栏配置为/mnt/disk, 此处和上述配置修改中的NAS目录一致。
UID和GID可以都设置为10001。

创建Custom Runtime函数并配置http trigger

1.将code.zip上传到OSS Bucket中,假定为Bucket和object名分别为bucket1, code.zip.
2.创建函数
./fcli function create --code-bucket bucket1 -o code.zip -f wagtail_demo -h "test handler" -s custom_demo -t custom
注意: 此处runtime参数为-t custom,-h "test handler"在本示例中不起作用,随便填一下就好。原因是整个逻辑都由用户提供的代码包来接管了,因而不需要handler。
3.创建http trigger
./fcli trigger create -f wagtail_demo -s custom_demo -t httpaccess -c /tmp/trigger.json --type http
其中/tmp/trigger.json内容如下:

{
  "triggerConfig":{
       "authType":"anonymous",
       "methods":["GET","POST”, “PUT”, “DELETE”, “HEAD”]
  }
}

至此,我们已经创建了一个Custom Runtime的函数。为了能运行wagtail,我们还需要配置域名。

为Custom Runtime函数配置自定义域名

参考文档:https://help.aliyun.com/document_detail/90722.html
Screen_Shot_2019_09_02_at_7_17_48_AM
访问绑定的域名,就可以出现wagtail的测试页面。

使用Custom Runtime小贴士

1.强烈推荐配置SLS日志服务,这对于诊断错误非常有用。
2.一定要正确编写bootstrap内容,该文件必须可执行。如果是脚本文件则需要加上#!/bin/bash提示。
3.代码的生成一定要用fc fun工具提供的image (fun install sbox --runtime custom --interactive) ,从而保证其内容和线上真实环境兼容。
比如用image里提供的gcc来编译C++代码,或者用Pip安装python代码。
4.在正式上线前,可以用fun工具提供的image进行测试,确保本地能跑通。

总结

以上步骤展示了如何利用函数计算Custom Runtime + NAS 来运行wagtail的例子。对于其他应用,其大致步骤是一致的。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
用Java实现计算器功能
###### 程序解析: 使用Scanner进行导包,抓取用户数据,进行强制转换,转换成float类型,进行 计算创建一个方法,使用这个方法进行工作处理数据,再创建一个流程方法,使用 equals判断比较数据,使代码更严谨,使用break;和continue;增加程序的复用性 ,使程序更加的灵活。使用Switch语句判断符号,进行传参计算,使用while(){} 语句增加一个死循环,使程序更复用,不浪费数据,增加一些严禁判断,让程序更 完美一点。
28 0
连续三年入围 Gartner 容器竞争格局,阿里云容器服务新布局首次公开
近日,国际知名信息技术咨询机构 Gartner 发布 2021 年容器竞争格局报告,阿里云成为国内唯一连续三年入选的中国企业,产品丰富度与成熟度持续保持全球领先水平。
598 0
连续三年入围 Gartner 容器竞争格局,阿里云容器服务新布局首次公开
阿里云连续三年国内唯一入围Gartner容器竞争格局,解读业界‘顶流’的产品布局。
1277 0
.Net Core 2.1 MVC Web应用迁移到函数计算 custom runtime
前言 Custom Runtime 就是自定义的执行环境, 用户基于 Custom Runtime 可以完成以下目标: 可以随心所欲持定制个性化语言执行环境(例如 golang、lua、ruby)以及各种语言的小版本(例如python3.7、Nodejs12)等,打造属于自己的自定义runtime; 现有的 web 应用或基于传统开发 web 项目基本不用做任何改造,即可将项目一键迁移到函数计算平台。
1080 0
2019中央国家机关云计算采购目录公布,阿里云等企业入围
8月21日,《中央国家机关2019年软件协议供货采购项目》招标公告正式发布。软件协议采购项目包括传统软件(1-36包)和云计算(37-41包)两部分。阿里云成功入围了全部云计算服务,采购内容涉及:虚拟主机、对象存储、块存储、负载均衡、web防火墙等云服务产品。
1628 0
函数计算新功能-----支持C#函数
函数计算作为新兴的事件驱动serverless平台正受到越来越多开发者的欢迎,之前已支持Java, Python, Nodejs, Php四种语言。现在函数计算正式支持C#。
1664 0
函数计算 php runtime - 如何加载卸载内置扩展
在本文中,我们根据一个具体的问题的抛出以及解决的过程,来讲解php runtime 中怎么对 内置的扩展进行加载和卸载。
3296 0
计算器
import tkinter as tk from tkinter import ttk import pandas as pd from prettytable import PrettyTable '''号码投注方案计算器''' # 程序界面 class AppWindow(tk.
564 0
+关注
tonyxx
OSS开发团队
3
文章
0
问答
来源圈子
更多
专注 Serverless、微服务、函数计算、Serverless 应用引擎、云原生技术
+ 订阅
相关文档: Serverless应用引擎SAE 函数计算FC
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载