Cesium本地文档部署与第一个实例

Posted DTCLOUD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cesium本地文档部署与第一个实例相关的知识,希望对你有一定的参考价值。

Cesium本地文档部署与第一个实例

(1)本地文档与示例部署

Cesium最新版本下载地址:https://cesium.com/downloads/,本次教程用的1.86版本的Cesium,如果当前版本较高,可点击Previous releases找到1.86版本的Cesium下载。下载之后进行解压,解压后的目录如下所示。

├── Apps          Cesium详细的范例程序。
├── Buidld        release包,打包后的库文件(压缩和未压缩)、SDK文档	
├── Source        Cesium源码
├── Specs         Cesium的自动话单元测试,采用Jasmine框架,可以实现自动化测试以及接口覆盖率等统计效果	
├── ThirdParty    外部依赖库,不同于Cesium的第三方库   
├── idnex.html    Web导航首页
├── server.cjs    基于node.js的web服务应用
├── package.json  node包管理器
├── gulpfile.js   打包脚本

用vscode打开解压后的文件夹,右击跟路径下的index.html,选“Open with Live Server”。这样就可以浏览官方文档与官方示例。

  • Document :完整的API文档和参考。
  • Sandcastle:Cesium的实时代码编辑器和示例库。浏览突出显示Cesium API特性的示例,并在web浏览器中编辑和运行它们。在Sandcastle中创建的应用程序可以保存和下载。
  • Cesium ion:Cesium在线资源-地形(createWorldTerrain)、影像(createWorldImagery/IonImageryProvider)、OSM(createOsmBuildings)、点云(IonResource.fromAssetId)、3DTiles等
  • Local links:Cesium本地资源链接,文档、示例、单元测试等
  • External links:Cesium外部资源链接,社区、博客、GitHub等
  • Cesium ion:Cesium在线资源-地形(createWorldTerrain)、影像(createWorldImagery/IonImageryProvider)、OSM(createOsmBuildings)、点云(IonResource.fromAssetId)、3DTiles等
  • Local links:Cesium本地资源链接,文档、示例、单元测试等
  • External links:Cesium外部资源链接,社区、博客、GitHub等

(2)第一个实例搭建

通过在html文件中引用cesium比较简单,新建文件夹(examples),将上面的Build文件夹(只拷贝里面的Cesium)拷贝到examples中,在examples根路径下创建html文件,代码如下:

<!DOCTYPE html>
<head>
  <title>Hello World</title>
  <script src="./Cesium/Cesium.js"></script>
  <link href="./Cesium/Widgets/widgets.css" rel="stylesheet" />
  <style>
    html,
    body,
    #cesiumContainer 
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
    
</style>
</head>
<body>
  <div id="cesiumContainer"></div>
  <script>
    var viewer = new Cesium.Viewer("cesiumContainer");
</script>
</body>

在不使用 Terraform 文件配置器的情况下将本地文件部署到实例

【中文标题】在不使用 Terraform 文件配置器的情况下将本地文件部署到实例【英文标题】:Deploy local files to instances without using Terraform file provisioners 【发布时间】:2020-02-26 02:02:08 【问题描述】:

作为在 *** 上发帖的其他几位用户,我遇到了文件配置器的问题,Terraform 文档说我们不应该依赖它们。

解决文件配置器的最佳方法是什么 - 特别是对于本地配置文件和脚本?

【问题讨论】:

【参考方案1】:

一种运行良好且不需要直接连接到实例的解决方案是使用 userdata 作为挂钩从文件的 base64 版本“安装”文件。

我们实际上可以将文件作为 base64 字符串嵌入到用户数据初始化脚本中。这适用于 AWS 中的 Windows 和 Linux 实例,并且还兼容在启动时运行 userdata 脚本。

解决方案说明:

    terraform plan 期间,使用 terraform 函数 base64encode(file("path/to/file")) 将您需要的任何本地文件编码为 base64 字符串。 (可选)在用户数据执行开始时保存一个标记文件(_INIT_STARTED_);此文件将具有 userdata 执行开始时的创建时间戳。 在运行 实际 userdata 脚本之前,将 base64 字符串写入文本文件。 (实际命令在 windows 和 linux 之间有所不同,请参见下面的示例。) 运行userdata 脚​​本本身(userdata_win.batuserdata_lin.sh) (可选)最后,保存第二个标记文件 (_INIT_COMPLETE_),该文件将具有 userdata 脚本完成时的创建时间戳。 (此文件的缺失也有助于在登录实例后检测脚本故障和/或仍在运行的脚本。)

对于 AWS Linux 实例:

data "template_file" "userdata_lin" 
  template = <<EOF
#!/bin/bash
mkdir -p /home/ubuntu/setup-scripts
cd /home/ubuntu/setup-scripts
touch _INIT_STARTED_
echo $base64encode(file("$path.module/userdata_lin.sh")) | base64 --decode > userdata.sh
echo $base64encode(file("$path.module/config.json")) | base64 --decode > config.json
$file("$path.module/userdata_lin.sh")
sudo chmod 777 *
touch _INIT_COMPLETE_
EOF


# ...

resource "aws_instance" "my_linux_instance" 
  # ...
  user_data = data.template_file.userdata_lin.rendered

对于 AWS Windows 实例:

data "template_file" "userdata_win" 
  template = <<EOF
<script>
mkdir C:\Users\Administrator\setup-scripts
cd C:\Users\Administrator\setup-scripts
echo "" > _INIT_STARTED_
echo $base64encode(file("$path.module/userdata_win.bat")) > tmp1.b64 && certutil -decode tmp1.b64 userdata.bat
echo $base64encode(file("$path.module/config.json")) > tmp2.b64 && certutil -decode tmp2.b64 config.json
$file("$path.module/userdata_win.bat")
echo "" > _INIT_COMPLETE_
</script>
<persist>false</persist>
EOF


# ...

resource "aws_instance" "my_windows_instance" 
  # ...
  user_data = data.template_file.userdata_win.rendered

【讨论】:

感谢这个想法!如果cloud-config 可用,您可以使用write_files 和b64 编码。

以上是关于Cesium本地文档部署与第一个实例的主要内容,如果未能解决你的问题,请参考以下文章

Cesium部署

Cesium简介以及离线部署运行

Cesium实战项目

Cesium的扩展工具包-EarthSDK使用指南1

Cesium案例解析——HelloWorld

在不使用 Terraform 文件配置器的情况下将本地文件部署到实例