将Merging Maps CE(社区版)部署到EC2上

这是MIERUNE AdventCalendar 2023第9天的文章!昨天是@darshu做的,被要求用地形做一个开瓶器。

合并地图

undefined

Merging Maps 是一个由 Lutra Consulting Limited 开发的地理空间数据收集和共享平台。

地理空間数据的高效收集可以通过系统应用程序,例如”Qfield”或”ArcGIS Field Maps”来实现。但是,Mergin Maps具有以下特点:

    1. QGISとの統合

Mergin MapsはQGISの機能をモバイルデバイス向けに拡張し、利用者が簡単に調査プロジェクトを作成し、最新の情報をすべてのチームメンバーと共有できます​。
QGISのMergin Mapsプラグインは、QGIS内でMergin Mapsプロジェクトを直接操作することを可能にします。PCへのプロジェクトのダウンロード、プロジェクトの変更、およびクラウドへの同期を行えます。

データ収集

モバイルデバイスを使って地理空間データを簡単に記録でき、紙のフィールドノートからの手書き転写、写真の整理などの手間を省くことができます。モバイルデバイスでは専用のアプリを使用します。

Mergin Mapsは、Mergin Maps cloudを使用することで、データを複数端末間でシームレスに同期します。Mergin Maps cloudは、SaaSとして利用することもできますが、利用者が用意したサーバ(例えば、AWS EC2)にMergin Maps cloudを構築し、利用することもできます。

作为SaaS的Mergin地图

如果将Mergin Maps作为SaaS使用,您可以选择以下计划。请查看网站以了解费用和可用服务内容。

    • Individual

 

    • Professional

 

    Team

私人托管

SaaSとしてMergins Mapsを利用する場合、データ容量などに制限がつきますが、自分でサーバを用意することで、無制限にデータを保存することが可能になります。
Private Hostingには以下2つのプランがあり、利用できるサービスに違いがあります。詳しくはHPを確認してください。

    • Mergin Maps CE (Community Edition)(無料)

 

    Mergin Maps EE (Enterprise Edition)(有料)

今回はAWSのEC2にMergin Maps CEを構築してみます。

将Mergin Maps CE部署到EC2的步骤

merginmaps-merginmaps.drawio (1).png

作为系统配置,将按照上图所示进行。
在前提条件下,我们将对以下工作进行解释。

    • ACMでSSL証明書を発行する。

 

    • EC2インスタンスを起動する。

 

    • ELBを生成し、

セキュリティグループをHTTPS:443およびHTTP:80ポートへの接続を許可する。
ターゲットグループに起動したEC2インスタンスを配置する。
ACMで発行したSSL証明書を設定する。

EC2インスタンスのセキュリティグループに、上記ELBから8080ポートへの接続を許可する(使用端末からのSSH接続も合わせて許可する)。
Route53パブリックホストゾーンを作成する。
Route53でELBのドメイン名を指すAレコード(エイリアス)を作成する。

一旦完成上述准备工作后,首先需要使用SSH客户端连接EC2实例。

安装EC2所需的软件

我会更新EC2内的软件包。

$ sudo yum update -y

安装Docker

首先需要安装Docker。

$ sudo install -y docker

如果已经安装了Docker,就启动Docker。

$ sudo systemctl start docker

确认Docker是否正在运行。如果显示为”active(running)”,则表示它已成功启动。

$ systemctl status docker

启用Docker的自动启动。

启用Docker的自动启动。
这样,即使重新启动EC2,Docker也会自动启动。

$ sudo systemctl enable docker

将 ec2-user 添加到 docker 组中。

安装Docker时,会自动在操作系统中创建docker组。
然后将ec2-user添加到该docker组。
这样,ec2-user就能够无需sudo权限执行docker命令。

$ sudo usermod -a -G docker ec2-user

首先,从EC2中使用exit命令登出,然后再次通过SSH使用ec2-user连接到EC2。
从那之后的连接中,ec2-user将被赋予docker用户组的访问权限。

安装Docker Compose(docker-compose)。

首先,在/usr/local/lib/下创建一个目录/usr/local/lib/docker/cli-plugins/。然后,将Docker Compose的二进制文件放置在这个目录中。

$ sudo mkdir -p /usr/local/lib/docker/cli-plugins

请将 Docker Compose 版本分配给变量 VER。请将版本号更改为最新稳定版(请在 Docker 官方文档的官方网站上确认最新稳定版的版本号)。

$ VER=2.4.1

将GitHub上的Docker Compose二进制文件下载到上述路径下的/usr/local/lib/docker/cli-plugins/。

$ sudo curl \
  -L https://github.com/docker/compose/releases/download/v${VER}/docker-compose-$(uname -s)-$(uname -m) \
  -o /usr/local/lib/docker/cli-plugins/docker-compose

给已经下载的docker-compose(二进制文件)添加执行权限。

$ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

接下来要设置符号链接。

$ sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose

请确认可以使用docker-compose命令。
如果显示Docker Compose版本v2.4.1,则代表Docker Compose已成功安装。

$ docker-compose --version
Docker Compose version v2.4.1

安装Git

最后要安装Git。

$ sudo install -y git

合并地图的部署

使用Git进行克隆

克隆Mergin Maps的存储库。

$ git clone https://github.com/MerginMaps/mergin.git

启动Docker容器

执行以下命令,启动Docker容器。
确保有5个容器启动。

$ cd mergin
$ mkdir -p projects
$ sudo chown -R  901:999 ./projects/
$ sudo chmod g+s ./projects/
$ docker-compose -f docker-compose.yml up
[+] Running 5/5
 ⠿ Container merginmaps-proxy   Started                                                                    2.0s
 ⠿ Container merginmaps-db      Started                                                                    2.0s
 ⠿ Container merginmaps-redis   Started                                                                    2.0s
 ⠿ Container merginmaps-server  Started                                                                   10.8s
 ⠿ Container merginmaps-web     Started                                                                    0.8s
....

如果第一次启动服务器,则需要初始化数据库并创建超级用户。设置管理员的用户名、密码和电子邮件。

$ docker exec merginmaps-server flask init-db
$ docker exec merginmaps-server flask user create <username> <password> --is-admin --email <email>

确认应用程序

使用在Route53中创建的记录名,尝试进行HTTPS连接至ELB。

成功连接后,将显示以下画面。

image.png

输入您注册的“管理员用户名”和“密码”,然后登录。登录后,将跳转到仪表盘界面。

image.png

使用QGIS创建项目并将其同步到Mergin Maps。

image.png
undefined

通过勾选”Custom Mergin Server”选项,您可以将自己搭建的Mergin Maps的服务器与QGIS进行协作。

在使用网络浏览器访问时,您需要输入与用户名、密码和自定义合并服务器相对应的信息。

当您输入“OK”并右键单击浏览器面板上的”Mergin Maps”时,您可以确认可选择的选项已增加。

undefined
image.png
image.png
image.png
undefined
undefined
undefined
image.png
undefined

在Mergin Maps移动应用程序上操作项目。

在移动设备上(无论是iOS还是Android)下载Mergin Maps应用程序。

undefined
undefined
undefined
undefined

结束

我已经在AWS的EC2上成功构建了Mergin Maps的云环境。我还确认了可以从QGIS和移动应用程序“Mergin Maps”访问和同步以上云数据。

如果您有一个可用的服务器,Mergin Maps CE可以免费使用。如果您想先试试的话,建议您试一下。

我认为那些喜欢Mergin Maps的“地理空间数据收集和共享”功能的公司,可以选择订购付费版的Mergin Maps EE,该版本附带了安全更新等额外功能,并提供资金支持以维持Mergin Maps的生态系统。

请提供以下的引用或参考。

    • 【AWS】EC2にDockerとDocker Composeをインストール

 

    • httpで公開したWebサーバーをhttps通信できるようにする

 

    • パブリックALB(HTTPS) → プライベートEC2構築

 

    Mergin Maps Community Edition
明天将由@sorami撰写的文章发布!请期待!!