
能力说明:
了解Python语言的基本特性、编程环境的搭建、语法基础、算法基础等,了解Python的基本数据结构,对Python的网络编程与Web开发技术具备初步的知识,了解常用开发框架的基本特性,以及Python爬虫的基础知识。
阿里云技能认证
详细说明总结和思考 阿里云视觉平台是基于阿里巴巴视觉智能技术实践经验,面向视觉智能技术的开发与应用用户,为其提供好用、易用、普惠的视觉智能API服务,帮助企业、开发者快速建立视觉智能技术的应用能力的综合性视觉AI能力平台。 阿里巴巴集团为了更好的帮助开发者快速对接视觉AI算法,免费开放了100余种视觉AI算法服务的使用权限,包括了新冠病毒肺炎辅助诊断和人脸比对1:N等热门算法,服务调用不收取任何费用。这些算法覆盖了人脸人体、文字识别、商品理解以及内容安全等多项类目。 总结 Day 1 了解阿里云视觉平台,阿里云视觉平台是基于阿里巴巴视觉智能技术实践经验,面向视觉智能技术企业和开发商(含开发者),为其提供高易用、普惠的视觉API服务,帮助企业快速建立视觉智能技术的应用能力的综合性视觉AI能力平台。 Day 2 通过阿里云视觉平台实现身份证识别,身份证识别系统可以识别二代身份证关键字段内容,关键字段包括:姓名、性别、民族、身份证号、出生日期、地址信息、有效起始时间、签发机关,同时可输出身份证区域位置和人脸位置信息。 Day 3 通过阿里云视觉平台实现电子相册,上传图片,对上传的图片进行表情分析,场景分析并分类。获取图片分类,通过分类以及标签获取图片。 Day 4 通过阿里云视觉平台实现车型识别、车牌识别、机动车检测、车辆部件识别、车辆损伤识别、车辆仪表盘识别、车险图片分类等多种车辆鉴定功能。 Day 5 关爱环境卫生,人人有责,通过阿里云视觉平台实现快速识别垃圾的种类,快速识别垃圾分类。 思考 通过几天的学习,我收获了很多,对于视觉生产也有了更多的了解,对视觉AI有了一定的理解。AI视觉应用前景广阔,发展迅速,本次学习让我对视觉AI技术有了更深的了解,对我帮助很大。
垃圾分类识别 关爱环境卫生,人人有责,怎么快速识别垃圾的种类扔进相应的垃圾桶中,那接下来看如何快速识别垃圾分类。 功能描述 利用ClassifyingRubbish可以对图片中的物品垃圾进行分类,并给出具体的物品名称。 开通图像识别服务 阿里云控制台获取accesskey 安装SDK 安装Python SDK核心库。执行如下命令,安装阿里云SDK核心库。pip install aliyun-python-sdk-core安装视觉智能API相关服务Python SDK。pip install aliyun-python-sdk-imagerecog 编写代码 导入需要使用的模块,以及阿里云视觉相关的模块 import os import json from urllib import request import numpy as np import cv2from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkimagerecog.request.v20190930.ClassifyingRubbishRequest import ClassifyingRubbishRequest 配置AccessKey 将阿里云的AccessKey和AccessSecret写入配置文件,需要的时候通过函数调用,代码如下。 #获取accesskeyId和accessSecret def get_access(): with open(r'accesskey.conf', 'r') as f: KeyId, Secret = f.read().split() #split切割 return accessKey, accessSecret 编写代码调用阿里云视觉平台的垃圾分类功能 def Rubbish_Check(accessKeyId, accessSecret, oss_url): client = AcsClient(accessKeyId, accessSecret, 'cn-shanghai') request = ClassifyingRubbishRequest() request.set_accept_format('json') request.set_ImageURL(oss_url) response = client.do_action_with_exception(request) return response print(str(response, encoding='utf-8')) 程序测试 使用下图测试程序 测试结果 { "RequestId": "7C8AFC06-3A25-4DE4-A52E-6676D45F9B0C", "Data": { "Sensitive": false, "Elements": [ { "Rubbish": "果蔬", "Category": "湿垃圾", "CategoryScore": 1, "RubbishScore": 1 } ] } } } 识别结果是否存在敏感信息:不存在敏感信息垃圾是否可回收:否垃圾识别置信度:100%具体物品名称:果蔬物品名称置信度:100% 结语 欢迎小伙伴们一起讨论。
车辆保险应用 阿里云视觉智能平台能完成车型识别、车牌识别、机动车检测、车辆部件识别、车辆损伤识别、车辆仪表盘识别、车险图片分类等多种车辆鉴定功能。 开通OSS服务 登录阿里云官网。将鼠标移至产品,单击对象存储 OSS,打开OSS 产品详情页面。在OSS 产品详情页,单击立即开通。开通服务后,在OSS 产品详情页单击管理控制台直接进入OSS管理控制台界面。 创建存储空间 开通阿里云OSS服务后,您需要首先创建存储空间(Bucket)来存储文件。请根据以下步骤,使用OSS管理控制台创建存储空间。登录OSS管理控制台。单击Bucket列表,之后单击创建Bucket。您也可以单击概览,之后单击右侧的创建Bucket。在创建Bucket页面配置Bucket参数。选择区域时,需要选择与视觉智能开放平台对应服务能力相同的区域,当前视觉智能开放平台各服务支持的区域为华东2(上海)。关于配置Bucket参数的详细说明请参见创建存储空间。单击确定。 上传文件 创建了存储空间(Bucket)之后,您可以上传任何类型的文件(Object)到存储空间中。请根据以下步骤,使用OSS管理控制台将您的文件上传至OSS。登录OSS管理控制台。单击Bucket列表,之后单击目标Bucket名称。单击文件管理 > 上传文件。在上传文件页面,设置上传文件的参数。关于上传文件参数的设置,请参见上传文件。在上传任务页面等待任务完成,之后关闭对话框 查看文件URL地址 文件上传完成后,您可以在OSS中查看已上传文件的URL链接。详细步骤如下所示。 登录OSS管理控制台。单击Bucket列表,之后单击目标Bucket名称。单击文件管理。在上传文件页面,单击目标文件后的详情按钮。在详情页面复制文件URL。 开通目标检测服务 登录https://vision.aliyun.com 开通目标检测服务 车辆损伤识别 针对常见小汽车车型,识别车辆外观受损部件及损伤类型,可识别数十种车辆部件、五大类外观损伤。(刮擦、凹陷、开裂、褶皱、穿孔)RecognizeVehicleDamage函数可以检测图片中车辆损伤的位置以及类型。 输入限制 图片格式:JPEG、JPG。图片分辨率:不限制图片分辨率,但图片分辨率太高可能会导致API识别超时,超时时间为5秒。图片大小:图片大小不超过10M。图片URL地址中不能包含中文字符。可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 程序 #!/usr/bin/env python #coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkobjectdet.request.v20191230 import RecognizeVehicleDamageRequest client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai') request = RecognizeVehicleDamageRequest() request.set_accept_format('json') request.set_ImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/sanjiye-meizi/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/%E8%BD%A6%E8%BE%86%E6%8D%9F%E4%BC%A4%E8%AF%86%E5%88%AB%20.jpg") response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) 识别结果 01 损伤类型:轻微刮擦 概率值:69.3559% 损伤坐标:[167,132,252,213] 02 损伤类型:轻微刮擦 概率值:55.8149% 损伤坐标:[4,78,116,136] 03 损伤类型:轻微刮擦 概率值:30.995% 损伤坐标:[44,83,156,149] 04 损伤类型:轻微刮擦 概率值:30.437199999999997% 损伤坐标:[262,189,410,277] 05 损伤类型:重度刮擦 概率值:65.2305% 损伤坐标:[259,190,415,276] 车险图片分类 对输入的车险图片进行分类。ClassifyVehicleInsurance对输入的车险图片进行分类。可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 输入限制 图片格式:JPEG、JPG。图片分辨率:不限制图片分辨率,但图片分辨率太高可能会导致API识别超时,超时时间为5秒。图片大小:图片大小不超过10M。图片URL地址中不能包含中文字符。 示例代码 #!/usr/bin/env python #coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkobjectdet.request.v20191230 import lassifyVehicleInsuranceRequest client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai') request = ClassifyVehicleInsuranceRequest() request.set_accept_format('json') request.set_ImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/sanjiye-meizi/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/%E8%BD%A6%E9%99%A9%E5%9B%BE%E7%89%87.jpg") response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) 识别结果 标签名称:其他 置信度:0.35000000000000003% 标签名称:细节图 置信度:0.74% 标签名称:汽车部件图 置信度:2.44% 标签名称:人物 置信度:0.02% 标签名称:发动机 置信度:0.05% 标签名称:半车图 置信度:19.89% 标签名称:全车图 置信度:0.05% 标签名称:CT-扫描 置信度:0.01% 标签名称:拆解件 置信度:24.64% 标签名称:现场图 置信度:51.790000000000006
电子相册搭建(人脸、表情识别) 项目分为前端和后端两个部分 后端 1.controller 获取图片、分类等,上传文件。 2.ResourceService 存储数据,资源管理 3.VisionService 上传图片,识别图片中的表情和场景 Application:启动的入口函数,common:一般就是存放公共的类或者常量,或者枚举值,config:装载或者是数据库的配置。Controller:用于接收外部的请求,通过接口调用或得到的数据返回给前端Service: 把不同的请求 , 不同的服务抽象成一个 service。Utils: 用于存放公共的类或者工具函数。 在控制台开通相应功能 图片文件需要上传到对象存储oss中,新的版本的 SDK支持通过本地上传图片来进行识别ResourceService 是一个资源的管理器allImg 将所有上传的图片,放在数组里面。cateMap 之后又分成两个场景 expression、scene,可以看到不同的分类,表情识别,场景识别,里面存放所有识别出来的表情,比如说惊讶、生气、开心,场景识别,存放运动、户外,这样存储是为了我们能够快速的进行查询,比如说可以通过分类,快速的找到某一个分类下面的所有的识别。expressionMap 是表示某类标签下面都包括哪些图片,senceMap 也是同样的意思。imgLabels 是一个反向的查找的过程,即通过一个图片,识别出来了哪些场景,比如说我们可以看到它可能这张图片它可能直接识别出来了,它是属于人物场景,属于运动场景,然后属于生气的表情,属于演出等场景。VisionService,识别场景,表情。我们上传图片流,我们把整个图片流传到接口里面,然后从服务端去识别这个场景。新的版本的 SDK支持通过本地上传图片来进行识别 前端 1.利用上传的组件实现图片上传 2.实现轮播图、列表 3.实现自定义的标签 前端采用视频所述方法前端页面通过 vue,然后加上 element-ui 这个两个组件来实现前端的逻辑。大概可以看一下整个的结构,它可以分成三部分。 第一部分是通过一个上传的组件来实现拖拽上传以及点选。 找到一个图片,可以看到两种方式,一种拖拽,一种是点击上传,这是通过一个组件来实现的。action是在上传图片要去访问后端的 upload 接口,之后有一个事件,是在成功之后应该做哪些事情,也就是对应的要执行的函数。 比如 UploadSuccess 指上传成功之后,刷新页面,添加下面的标签分类等。 第二部分是实现轮播图部分 通过vue 的一个组件。vue-gallery, 实现自定义的标签名,之后定义了一个属性:photos。photos 从后台去取回数据,之后把它渲染到前端的 html 页面当中。由于我们这是一个组件,它会有对应的自己一个模板,这个就是我们整个的模板部分,之后对它进行背景图片的处理,然后以及一些事件的定义。vue,它的整个是一个事件的数据流,通过数据的不同的变化,然后我们就可以去触发它的渲染,比如上传一张图片,它是可以对应不同的组件进行交互,利用不同的标签,事件来驱动数据的变化。mounted定义一些事件,比如图片变化,怎么调用,以及监听按下不同的键,应该做哪些操作,然后是前张图片还是后一张图片等。el 是一个 ID 的绑定,比如 #app, 在这个标签上层父级,定义了一个 ID 叫 app,这时候可以把组件放在父级 div 下面,然后在这个里面去根据模板进行渲染。 第三部分是自定义标签的组件。 V-tag 对应的是这块,我们把它分成不同的分类,下面有不同的标签是组件来实现的。Data 是指在初始化的时候,需要进行哪些渲染。这里面自定义了不同的颜色。cateMap,将返回的英文转化成汉字去显示出来。去取一个不同的 ID,然后给它选成不同的颜色,通过取一个随机的下标,然后去把它选成不同的颜色。Tag 是一个两层 map 结构。就是第一层这里面某比每层结构,表情,下面有几种表情,场景下面有几种场景,这是一个两层的 map 结构。所以在渲染的时候,会对两层的 map 进行渲染,第一层完成之后,再渲染第二层数据。实现不同的触发,上传文件,成功之后要进行不同的事件操作。因为要实现不同的组件之间进行通信,自定义了一个虚拟的 Event 的 vue 的实例,然后通过 Event 将所有的不同的 vue 实例串联起来。比如 uploadSuccess 去发送一个事件。通过 upload vue 实例去给其他的实例去发事件,在上传成功之后加载到轮播图里面。on 就对应去接收 emit 传过来的事件。如果我们得到了 uploadSuccess 事件 ,那么就会通过从后端去获取数据,对这个页面进行一个刷新操作。refresh 也是同样的道理,上传成功之后,要对整个的 tag 进行一个刷新,把新识别出来的不同的场景,不同标签,进行一个刷新。
身份证识别系统搭建 获取视觉智能开放平台提供的 SDK 进入到视觉智能开放平台的官网 https://vision.aliyun.com/ 后,我们可以发现平台已经开放了包括人脸识别、文字识别、商品理解等在内的多项视觉 AI 能力,点击文字识别菜单,可以找到身份证识别项,然后我们点击进入。身份证识别包括识别二代身份证关键字段内容,关键字段包括:姓名、性别、民族、身份证号、出生日期、地址信息、有效起始时间、签发机关,同时可输出身份证区域位置和人脸位置信息。 体验调试 在这里我们可以先上传图片进行试用 上传成功后点击发起调用查看结果识别结果 { "success": true, "data": { "data": { "RequestId": "23C9D339-63FD-43E9-814B-BC19EE1EECD1", "Data": { "FrontResult": { "Address": "华盛顿特区宜宾法尼亚大道1600号白宫", "FaceRectVertices": [ { "X": 0, "Y": 0 }, { "X": 0, "Y": 0 }, { "X": 0, "Y": 0 }, { "X": 0, "Y": 0 } ], "FaceRectangle": { "Center": { "X": 0, "Y": 0 }, "Angle": 0, "Size": { "Height": 0, "Width": 0 } }, "CardAreas": [ { "X": 7, "Y": 40 }, { "X": 460, "Y": 36 }, { "X": 463, "Y": 311 }, { "X": 10, "Y": 316 } ], "Gender": "", "Nationality": "肯尼亚", "Name": "奥巴马", "IDNumber": "", "BirthDate": "" } } }, "url": "https://ocr.cn-shanghai.aliyuncs.com/", "during": 560, "headers": { "response": { "date": "Fri, 30 Oct 2020 12:07:13 GMT", "content-type": "application/json;charset=utf-8", "content-length": "464", "connection": "keep-alive", "access-control-allow-origin": "*", "access-control-allow-methods": "POST, GET, OPTIONS", "access-control-allow-headers": "X-Requested-With, X-Sequence, _aop_secret, _aop_signature", "access-control-max-age": "172800", "x-acs-request-id": "23C9D339-63FD-43E9-814B-BC19EE1EECD1" } } }, "requestId": "303f05d1-e59a-477a-8641-e13dab8b0a12" } 示例代码,这个代码有错误,后文有改正的代码 #!/usr/bin/env python #coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkocr.request.v20191230.RecognizeIdentityCardRequest import RecognizeIdentityCardRequest client = AcsClient('<accessKeyId>', '<accessSecret>', 'cn-shanghai') request = RecognizeIdentityCardRequest() request.set_accept_format('json') request.set_Side("face") request.set_ImageURL("http://explorer-image.oss-cn-shanghai.aliyuncs.com/HiQN85YxMTAEMDfD8fGruxyU/s1.jpg?OSSAccessKeyId=LTAI4Fk9FstqSEYnqKJ5Dpeo&Expires=1604061374&Signature=RC9fZ%2BeORAjfli09HRG4xEYh2CM%3D") response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8')) 编写程序并尝试 安装aliyunsdkcore 安装SDK核心库。使用 pip 命令安装阿里云SDK核心库:pip install aliyun-python-sdk-core安装云产品的SDK。pip install aliyun-python-sdk-ecs安装文字识别,阿里云OCR服务pip install aliyun-python-sdk-ocr 开通身份证识别 点击立即开通 创建AccessKey 在使用阿里云SDK和调用视觉智能开放平台的API之前,确保您已经生成访问密钥(AccessKey)。您可以在个人中心AcessKey管理中创建并管理属于您自己的AccessKey, 主账号AccessKey登录视觉智能开放平台控制台。鼠标悬停至右上角的用户头像,单击AccessKey管理。 创建AccessKey 在安全提示对话框中单击继续使用AccessKey。在安全信息管理页面,单击左上角的创建AccessKey。在手机验证对话框,单击点击获取。输入校验码,单击确定。 启动开发 下载安装SDK包。 目前,SDK支持Java、Python、Node.js、PHP四种常用语言,您可以选择对应语言类目下的视觉技术能力SDK进行接入。之前已安装PythonSDK包 RAM授权。 为账户进行RAM授权,以访问相应的阿里云资源。 依照样例和说明文档编写程序并运行 开始本地调用。参考身份证识别接口文档,进行开发。 程序 #!/usr/bin/env python #coding=utf-8 from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkocr.request.v20191230 import RecognizeIdentityCardRequest client = AcsClient('xxxxxxxxx', 'xxxxxxxxxx', 'cn-shanghai') request = RecognizeIdentityCardRequest.RecognizeIdentityCardRequest(); request.set_accept_format('json') request.set_Side("face") request.set_ImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/sanjiye-meizi/5.15/shenfz.jpg") response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8')) 得到结果 C:\Users\xxx\.conda\envs\aliproject\python.exe C:/Users/xxx/Desktop/aliyunidcardocr/main.py {"RequestId":"9E6AA8E5-75E5-4A47-856D-1509DAA203A4","Data":{"FrontResult":{"Address":"河北省邯郸市肥乡县肥乡镇","FaceRectVertices":[{"X":521.0860595703125,"Y":280.8114013671875},{"X":424.39859008789062,"Y":277.23809814453125},{"X":428.482666015625,"Y":166.73095703125},{"X":525.170166015625,"Y":170.30426025390625}],"FaceRectangle":{"Center":{"X":474.78436279296875,"Y":223.77117919921875},"Angle":-87.883460998535156,"Size":{"Height":96.7535400390625,"Width":110.58258056640625}},"CardAreas":[{"X":38,"Y":76},{"X":589,"Y":73},{"X":591,"Y":399},{"X":40,"Y":403}],"Gender":"男","Nationality":"汉","Name":"常涛","IDNumber":"411526199706013217","BirthDate":"19970601"}}} Process finished with exit code 0 运行结果 结语 RecognizeIdentityCard可以识别二代身份证关键字段内容,关键字段包括:姓名、性别、民族、身份证号、出生日期、地址信息、有效起始时间、签发机关,同时可输出身份证区域位置和人脸位置信息。 参考 https://help.aliyun.com/document_detail/145009.html?spm=a2c4g.11186623.6.565.786d3ee7YEbR4a https://help.aliyun.com/document_detail/151899.html?spm=a2c4g.11186623.2.33.7cb72b14PwDPyX#doc-api-ocr-RecognizeIdentityCard https://vision.aliyun.com/experience/detail?spm=a211p3.14471183.J_7240705510.9.46dc1aa1ILcbp5&tagName=ocr&children=RecognizeIdentityCard#techSupport
视觉生产技术 视觉生产定义 通过一个或一系列视觉过程,产生新的视觉表达。 视觉生产分类 生成:从0到1拓展:从1到N摘要:从N到1升维:从An到An+1 增强/变换插入/合成擦除 视觉生产通用框架 视觉生产五个关键维度 满足视觉美学表现,可看合乎语义内容逻辑保证结果丰富性提供用户预期的抓手,可控带来用户和商业价值 精细理解 精细理解 分割抠图 视觉分割是生产的必要前置步骤,唯有理解方能生成。识别:知道是什么检测:识别+知道在哪里分割:识别+检测 分割抠图 难点 复杂背景遮挡发丝精扣边缘反色透明材质多尺度,多目标 数据严重不住,标注成本高 分割抠图 解题思路 语义分割实例分割image matting 分割抠图 模型框架 step1 mask粗分割step2 mask质量统一step3 估计精确alpha 分割抠图 抠图扩展 人像-分割不同区域物体抠图场景 视觉生成 平面图像设计生成——鹿班 框架流程:需求-草图-选状态-调细节-生成-评价样例:电商需求设计,照图生图,个性化设计,智能美工, 视频生成——AlibabaWood 框架流程:素材准备-基础特效-智能特效-智能编排样例:视频封面,商品展示 视觉编辑 视频的增删查改 视频植入:广告位检测定位,广告位跟踪,遮挡,透视,素材匹配,光影渲染 动态检测分割 视频内容擦除 擦除字幕,台标,广告,场景文字流程:定位-分割-充填-训练 画幅变化 视频画幅变化:主体检测分割+背景拉伸+背景补全+智能构图裁剪+超分辨率=多保留有效画面图像尺寸变化 视觉增强 主要包括:人脸增强,去噪声,通用场景超分,LDR升HDR,视频插帧等人脸增强场景超分 颜色扩展 视觉制造 包装设计服装设计:3d,材质工艺,纹理图案迁移,流行色,背景融合 视觉智能开放平台 vision规模化、多样化、细粒度、场景化 结语 第一天的课程简单介绍了视觉AI的分类和工程运用。
案例分享——钉钉 钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台。 使用saas平台技术 SaaS提供商为企业搭建信息化所需要的所有网络基础设施及软件、硬件运作平台,并负责所有前期的实施、后期的维护等一系列服务,企业无需购买软硬件、建设机房、招聘IT人员,即可通过互联网使用信息系统。 面向云设计 为后期开发提供了便利 部署在阿里云ECS,安全性更高 ECS可以设置远程登录的白名单,这使得黑客就算知道密码密钥也无法登录到ECS上。可以设置安全组,使不同ECS开放其仅需要开放的端口,内网机器间可以互相访问。 具有日志功能 可以评论、点赞、分享,让每个人的优秀都能被发现,快速追溯汇报历史,让工作有迹可循。日志有丰富的自定义模版,满足日报、周报、月报、拜访记录、会议纪要等各种工作场景需求。
搭建个人Leanote云笔记本 创建资源 点击免费开通 按钮,创建实验资源 连接ECS服务器 1.打开系统自带的终端工具。Windows:CMD2.在终端中输入连接命令。ssh root@139.196.189.57依照提示操作,登录成功后会显示如下信息。 安装MongoDB MongoDB是一个基于分布式文件存储的高性能数据库,介于关系数据库和非关系数据库之间,它支持的数据结构非常松散是类似于json和bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。Leanote云笔记使用MongoDB作为后端数据库,按照以下步骤按照MongoDB数据库。 1.执行以下命令,安装MongoDB。yum -y install mongodb mongodb-server.x86_64 mariadb-devel.i6862.执行以下命令,启动MongoDB服务。systemctl start mongod3.执行以下命令,查看MongoDB运行状态。systemctl status mongod 安装Leanote 1.下载Leanote二进制安装包。wget https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz2.解压安装包。tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz3.编辑文件leanote/conf/app.conf,在文件中找到app.secret项,将该项的值改为任意字符串。(如不修改将会有安全风险)。说明: 根据Leanote官方文档,如不修改app.secret项的值,将会有安全隐患。 使用vim编辑器打开文件leanote/conf/app.conf。vim leanote/conf/app.conf 进入vim编辑器后,输入:/app.secret=并按下回车查找app.secret位置。 找到该项位置后按下i键进入编辑模式,修改该项的值为任意字符串。 修改完成后,按下esc键退出编辑模式,输入:wq保存并退出vim编辑器。修改后如图所示。 4.始化数据库。mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/5.启动服务。nohup bash /root/leanote/bin/run.sh > /root/leanote/run.log 2>&1 &6.访问云笔记。在浏览器中访问http:// 139.196.189.57:9000。默认管理用户为admin,密码为abc123。登录成功后如下图所示。
使用PolarDB和ECS搭建门户网站 创建资源 1.在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。 2.单击 免费开通 创建所需资源。资源创建过程需要约10分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、用户名和密码等。 创建PolarDB数据库账号 1.单击页面左侧 云产品资源 > 一键复制登录url 。2.打开浏览器,粘贴已复制的url地址前往 RAM用户登录 界面,登录 阿里云管理控制台 。在登录用户名称处,输入 子用户名称 ,单击 下一步 。 输入密码,单击 登录 进入 阿里云管理控制台 。3.在 阿里云控制台首页 左侧导航栏,依次单击 产品与服务 > 云数据库PolarDB ,进入 云数据库PolarDB管理控制台 。4.单击左侧 集群列表 ,然后选择云产品资源提供的地域:华东2(上海),只有华东2有。5.创建数据库账号。 a. 在 集群列表 页面,单击 集群ID ,进入 集群详情界面 。 单击左侧导航栏 配置与管理 > 账号管理 。 单击左上方 创建账号 。 参考说明配置账号信息,然后单击 确定 。 • 数据库账号:输入数据库账号名称,例如:test123 。• 账号类型:此处选择普通账号。• 密码:设置账号密码。• 确认密码:再次输入密码。6.创建数据库。 a. 在实例详情页,单击左侧导航栏的 数据库管理 ,然后单击 创建数据库 。 b. 参考说明配置数据库信息,然后单击 创建 。 • 数据库(DB)名称:输入数据库名称,例如:pbootcms。• 支持字符集:默认设为utf8mb4。• 授权账号:选择上一步创建的数据库账号test123。• 账号类型:默认设置为读写。• 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符。7.设置数据库白名单。连接数据库需要设置数据库白名单,点击 [集群白名单],然后点击 [设置] 设置数据库集群白名单。在白名单界面将默认的白名单地址127.0.0.1更改为 0.0.0.0/0,然后点击 [确定] 使白名单地址生效。 连接ECS服务器 打开终端工具。Windows:打开CMD窗口。在终端中输入连接命令ssh root@106.14.6.1663. 同意继续后将会提示输入登录密码,登录成功后会显示如下信息。 安装LAMP环境 LAMP是指运行在Linux下的Apache、MySQL和PHP的环境。参考以下操作在云服务器上安装开发环境。1.在ECS服务器上,执行以下命令安装Apache服务及其扩展包。yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql返回类似如下图结果则表示安装成功。2.PbootCMS是使用PHP语言开发的CMS系统。参考以下操作安装PHP环境。执行以下命令,安装PHP。yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap3.执行以下命令下载并安装MySQL。 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y install mysql57-community-release-el7-10.noarch.rpm yum -y install mysql-community-server 4.执行以下命令启动MySQL数据库。systemctl start mysqld 搭建门户网站 在完成环境部署后,参考以下操作搭建门户网站。1.在ECS服务器上,执行以下命令,安装Git。yum -y install git2.在ECS服务器上,执行以下命令下载PbootCMS源码文件。cd ~ && git clone https://gitee.com/hnaoyun/PbootCMS.git3.执行以下命令将安装包拷贝到Apache的wwwroot目录下。cp -r PbootCMS/* /var/www/html/4.执行以下命令修改站点根目录文件权限。chmod -R a+w /var/www/html5.向数据库中导入CMS的初始数据。执行以下命令初始化数据库pbootcms的表结构和数据。说明: 在执行命令前,请修改一下三个参数。• 数据库连接地址参见集群详情页面下方链接地址板块。• test123为步骤二中创建的数据库账号。• tUA@W8jf步骤二中创建的数据库密码 sql_file="/var/www/html/static/backup/sql/"$(ls /var/www/html/static/backup/sql/) && mysql -hpc-uf631km1ak63971n4.mysql.polardb.rds.aliyuncs.com -utest123 -ptUA@W8jf -Dpbootcms < $sql_file 6.执行以下命令,修改CMS系统数据库配置。说明: 在执行命令前,请根据参数说明替换您的数据库配置。 cat > /var/www/html/config/database.php << EOF <?php return array( 'database' => array( 'type' => 'mysqli', // 数据库连接驱动类型: mysqli,sqlite,pdo_mysql,pdo_sqlite 'host' => 'pc-uf631km1ak63971n4.mysql.polardb.rds.aliyuncs.com', // PolarDB数据库链接地址 'user' => 'test123', // PolarDB数据库的用户名 'passwd' => 'tUA@W8jf', // PolarDB数据库的密码 'port' => '3306', // 数据库端口 'dbname' => 'pbootcms' //数据库名称 ) ); EOF 7.返回ECS控制台,在ECS实例列表页面,单击已创建的ECS实例ID链接进入ECS详情页8.在左侧导航栏,单击 本实例安全组 ,然后单击安全组的ID链接查看安全组配置。确保安全组开放了80端口访问,否则无法访问已搭建的门户网站。安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过配置安全组规则,您可以控制安全组内一台或多台ECS实例的入流量和出流量。9.访问程序。执行以下命令重启 Apache服务。systemctl restart httpd在浏览器地址栏输入云服务器的公网IP地址,进入门户网站首页。系统后台默认访问路径为http://106.14.6.166/admin.php。默认账号为admin,密码为123456。访问网页 http://106.14.6.166/
基于Linux搭建FTP服务 1.单击 免费开通 创建所需资源 2.远程连接ECS服务器1)打开 Windows:CMD2)在终端中输入连接命令 ssh root@139.196.205.126 输入密码 登录成功 安装vsftpd 1.运行yum install -y vsftpd命令安装vsftpd 2.运行systemctl enable vsftpd.service命令设置FTP服务开机自启动。3.启动FTP服务。systemctl start vsftpd.service4.运行netstat -antup | grep ftp命令查看FTP服务监听的端口。 配置vsftpd 1.修改配置文件vsftpd.conf。vim /etc/vsftpd/vsftpd.conf按 i 键进入编辑模式,将匿名上传权限 anon_upload_enable=YES 的注释解开。 2.按ESC键退出编辑模式,输入:wq 保存并退出vim。3.更改/var/ftp/pub目录的权限,为FTP用户添加写权限。chmod o+w /var/ftp/pub/4.重启FTP服务。systemctl restart vsftpd.service5.为FTP服务创建一个Linux用户。adduser ftptest为用户设置密码。passwd ftptest 6.创建一个供FTP服务使用的文件目录。mkdir /var/ftp/test7.更改/var/ftp/test目录的拥有者为ftptest。chown -R ftptest:ftptest /var/ftp/test8.修改vsftpd.conf配置文件。配置FTP为主动模式请执行如下命令: sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录 配置FTP为被动模式请执行如下命令: sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录 echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式 echo "pasv_address=<FTP服务器公网IP地址>" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值 echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值 9.在/etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单。 touch /etc/vsftpd/chroot_list10.使用vim命令编辑chroot_list文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。vim /etc/vsftpd/chroot_list11.重启FTP服务。 systemctl restart vsftpd.service客户端测试 基于winserver搭建FTP服务 1.点击“服务器管理器” 2.添加角色和功能 下一步 点击“关闭” “服务器管理器”,点击“工具”-“IIS管理器” 添加FTP站点 测试
创建资源 云服务器状态确认 1.点击左侧导航栏处的 云产品资源,查看 云服务器ECS-1 和 云服务器ECS-2 的相关信息。2.分别访问实验提供的两台云服务器ECS,观察有什么异同点。3.打开浏览器,在输入框中输入 云产品资源 提供的 云服务器ECS-1 的 弹性IP 负载均衡配置 本小节的主要内容:将两台服务器挂载到负载均衡的后端,这样,用户只需访问一个IP地址或域名,负载均衡服务器将会根据权重自动转发用户请求到相应的后端服务器上。通过如下步骤,查看阿里云负载均衡控制台:1)点击左侧导航栏处的 云产品资源 查看资源信息,点击一键复制url,用浏览器登录控制台2)输入实验提供的 子用户名称 和 子用户密码 ,完成后点击 登录 。登录阿里云管理控制台。 负载均衡验证 本小节主要内容如下:• 验证负载均衡的工作原理;• 验证通过配置不同后端服务器权重,将用户的请求按比例分发到不同后端服务器;• 验证在一台后端服务器开启会话请求时,请求在会话开启的时间内只会分发到这一台服务器。 添加负载均衡协议 添加默认服务器组配置健康检查提交 验证负载均衡服务器是轮询访问后端云服务器 此时,两台后端服务器的权重比例相同。1)在控制台点击左侧 实例管理 ,在右侧页面中的红框处看到负载均衡的 服务地址(也就是 云产品资源 提供的 负载均衡 的 IP地址) ;2)在浏览器中新建页面,并访问 负载均衡 的 服务地址 。界面显示的 后端服务器IP 为 云服务器ECS-1(或 云服务器ECS-2) 的 内网地址 。界面显示的地址为内网地址,这是因为负载均衡访问后端ECS实例,是通过内网访问的。3)刷新 浏览页面,显示的 后端服务器IP 将发生变化,变为 云服务器ECS-2(或 云服务器ECS-1)的 内网地址 ;4)重复刷新操作,观察 后端服务器IP 是在两个云服务器的 内网地址 间轮流更换。5)如上结果证明:负载均衡会将用户的请求发送到后端不同的服务器进行处理。这样,可以减轻单台服务器的负载压力,从而确保业务的持续性。 修改后端服务器权重 通过如下步骤,修改后端服务器权重,验证负载均衡向后端服务器发送请求的比例是按照权重的比例调整的。1)返回 实例管理 页面,点击该实例的 默认服务器组 ;2)选中 已添加的服务器 ,列表中,勾选下方的勾选框 ,然后点击 修改权重 ;3)弹出对话框中,勾选 设置不同的权重 。4)设置两个实例的 权重 分别为 20 ,80 。说明:通过如上的权重配置,用户通过负载均衡访问的时候,1/5 的用户请求发送到一台后端服务器中,3/5 的请求发送到另一台后端服务器中。5)完成如上配置后,点击 确定 ,生效配置信息。6)返回已添加的服务器的页面,查看到两台 ECS实例 的权重分别为 20 和 80 ,并记录对应的 ECS实例 内网地址。7)浏览器中,刷新多次负载均衡 服务地址 的页面,并记录页面显示的 后端服务器IP 。可以发现:每 5 次刷新,将有 4 次访问 权重 为 80 的 ECS实例,1 次访问权重为 20 的 ECS实例。8)如上结果证明:用户可以根据实际情况调整负载均衡器的请求分发,一般将配置高的服务器设置的权重调高,配置较低的服务器设置的权重调低。这样可以避免在高并发时,配置较低的服务器因为压力较大服务异常的发生。 会话保持 执行以下步骤,开启负载均衡的 会话保持 功能。1)点击左侧 监听 ,监听页面点击右侧的 配置 。2) 配置监听页面的 高级配置 处,点击 修改 ;3)开启 会话保持 ,超时时间 输入 60 (即 1 分钟);完成后点击 下一步 。4)下面的 后端服务器、健康检查 和 配置审核 页面都采用默认值 ,依次完成配置。5) 返回到 监听 页面,修改自定义列表返回到 监听 页面 ,会话保持 状态 已开启 验证 1.再次在浏览器中输入 负载均衡 的 IP地址 ,多次刷新,发现在会话保持的超时时间内请求只会分发到某一台 ECS 上(究竟是哪一台 ECS 没有规定),时间超出后,重新按照权重比例分发。2.我们关闭开启 会话保持 的那台ECS 。默认服务器组页面,已添加的服务器中 ,点击目标ECS的的高亮部分(即 云服务器ID)。3.实例详情页面 ,点击右上角处的 【停止】 ,弹窗页面点击【确定 】关闭当前ECS。确定等待30s左右,实例的状态变为 已停止 。4.返回负载均衡管理控制台,在默认服务器组页面中点击右上角的【刷新】,页面刷新后被停止的 ECS 的 状态 变为 已停止。【监听】 页面,也出现 异常 提示 。 同样的,点击左上角的 【实例管理 】,返回负载均衡管理控制台主页面,异常 报警也会出现。5.再次刷新浏览器中 负载均衡 的 IP地址 ,此时,请求发送到 健康检查状态 为 正常 的ECS上。6.结果证明,当某一台 ECS 出现异常后,负载均衡会自动将请求发送到健康检查状态正常的 ECS 上。
创建资源 在页面左侧,单击 云产品资源 下拉菜单,查看本次实验资源。单击 免费开通 创建所需资源。 连接ECS服务器 1.打开系统自带的终端工具。Windows CMD2.在终端中输入连接命令ssh root@106.15.200.135 安装Docker CE 基于CentOS 7安装Docker CE。 1.安装Docker的依赖库。yum install -y yum-utils device-mapper-persistent-data lvm22.添加Docker CE的软件源信息。yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3.安装Docker CE。yum makecache fast yum -y install docker-ce4.启动Docker服务。systemctl start docker 配置镜像仓库(镜像加速) Docker的默认官方远程仓库是hub.docker.com,由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。下面介绍如何使用阿里云镜像仓库。 1.找到阿里云【容器镜像服务】这里需要用其他浏览器登陆2.单击【镜像中心】 > 【镜像加速器】3.配置Docker的自定义镜像仓库地址。请将下面命令中的镜像仓库地址 tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://e1cia8ui.mirror.aliyuncs.com"] } EOF 4.重新加载服务配置文件。systemctl daemon-reload5.重启Docker服务。systemctl restart docker 使用Docker安装Nginx服务 1.看Docker镜像仓库中Nginx的可用版本。docker search nginx2.拉取最新版的Nginx镜像。docker pull nginx:latest3.查看本地镜像。docker images4.运行容器。docker run --name nginx-test -p 8080:80 -d nginx命令参数说明:• --name nginx-test:容器名称。• -p 8080:80: 端口进行映射,将本地8080端口映射到容器内部的80端口。• -d nginx: 设置容器在后台一直运行。 在浏览器地址栏输入http:// 106.15.200.135:8080访问Nginx服务。
一、基于Linux搭建FTP服务 1.单击 免费开通 创建所需资源 2.远程连接ECS服务器1)打开 Windows:CMD2)在终端中输入连接命令 ssh root@139.196.205.126 输入密码 登录成功安装vsftpd 运行yum install -y vsftpd命令安装vsftpd 2.运行systemctl enable vsftpd.service命令设置FTP服务开机自启动。3.启动FTP服务。systemctl start vsftpd.service4.运行netstat -antup | grep ftp命令查看FTP服务监听的端口。 配置vsftpd1.修改配置文件vsftpd.conf。vim /etc/vsftpd/vsftpd.conf按 i 键进入编辑模式,将匿名上传权限 anon_upload_enable=YES 的注释解开。 按ESC键退出编辑模式,输入:wq 保存并退出vim。3.更改/var/ftp/pub目录的权限,为FTP用户添加写权限。 chmod o+w /var/ftp/pub/4.重启FTP服务。systemctl restart vsftpd.service5.为FTP服务创建一个Linux用户。adduser ftptest为用户设置密码。passwd ftptest 6.创建一个供FTP服务使用的文件目录。mkdir /var/ftp/test7.更改/var/ftp/test目录的拥有者为ftptest。chown -R ftptest:ftptest /var/ftp/test8.修改vsftpd.conf配置文件。配置FTP为主动模式请执行如下命令:sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录配置FTP为被动模式请执行如下命令:sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 sed -i 's/listen=NO/listen=YES/' /etc/vsftpd/vsftpd.conf #监听IPv4 sockets sed -i 's/listen_ipv6=YES/#listen_ipv6=YES/' /etc/vsftpd/vsftpd.conf #关闭监听IPv6 sockets sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf #全部用户被限制在主目录 sed -i 's/#chroot_list_enable=YES/chroot_list_enable=YES/' /etc/vsftpd/vsftpd.conf #启用例外用户名单 sed -i 's/#chroot_list_file=/chroot_list_file=/' /etc/vsftpd/vsftpd.conf #指定例外用户列表文件,列表中的用户不被锁定在主目录 echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf echo "local_root=/var/ftp/test" >> /etc/vsftpd/vsftpd.conf #设置本地用户登录后所在的目录 echo "pasv_enable=YES" >> /etc/vsftpd/vsftpd.conf #开启被动模式 echo "pasv_address=" >> /etc/vsftpd/vsftpd.conf #本教程中为ECS服务器弹性IP echo "pasv_min_port=20" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最小值 echo "pasv_max_port=21" >> /etc/vsftpd/vsftpd.conf #设置被动模式下,建立数据传输可使用的端口范围的最大值9.在/etc/vsftpd目录下创建chroot_list文件,并在文件中写入例外用户名单。 10.使用vim命令编辑chroot_list文件,添加例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。vim /etc/vsftpd/chroot_list11.重启FTP服务。 systemctl restart vsftpd.service客户端测试 二、基于winserver搭建FTP服务 点击“服务器管理器” 添加角色和功能 下一步 点击“关闭” “服务器管理器”,点击“工具”-“IIS管理器” 添加FTP站点
2020年11月
2020年10月
2020年09月