1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HuaweiCloudDeveloper-huaweicloud-solution-ploto

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 04:06 d0bbc2b
location /admin {
    proxy_pass http://localhost:8000;
}

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}
}
/usr/local/nginx/sbin/nginx start
/usr/local/nginx/sbin/nginx -s reload

2、后端部署

2.1 配置连接信息

  1. ploto/ploto/settings/dev.py 中填入数据库,Redis,ElasticSearch的连接信息:

    其中 DATABASES 为数据库配置信息,先在 mysql 中创建一个数据库 ploto_test,作为项目使用的数据库,并将其配置参数添加至字段中:

    # 数据库配置
    DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "ploto_test",    # 创建的数据库名
            "USER": "root",          # 用户名默认为root        
            "PASSWORD": "****",      # 数据库登录密码
            "HOST": "127.0.0.1", # 数据库服务器地址
            "PORT": "3306",          # 数据库连接端口,默认3306
        }
    }
    
    # ElasticSearch 配置
    ES_HOST = '127.0.0.1'            # CSS服务中的服务器地址
    ES_PORT = '9200'             # 服务器连接端口,默认9200
    ES_USERNAME = '*****'            
    ES_PASSWORD = '*****'
    
    # Redis 配置
    REDIS_HOST = '127.0.0.1'     # Redis服务器地址
    REDIS_PORT = '6379'              # Redis服务器连接端口,默认6379
    REDIS_PASSWORD = '*****'
  2. 配置IAM认证信息:

    • 在华为云的控制台中的用户名下拉菜单中->“ 我的凭证”,在访问密钥中新增访问密钥,获得 Access Key 和 Secret Key(请妥善保管并定期更新):

    • 在华为云的对象存储服务 OBS 中,创建一个桶(桶名为 ploto-test):

    • ploto/conf/conf.py 填写 ak,sk,以及 OBS 的桶名 bucket_name 和终端节点 endpoint,场景提取输出路径,IAM账号认证信息:

    
    

obs_ak = "" # Access Key obs_sk = "" # Secret Key obs_endpoint = "obs.XXX.myhuaweicloud.com" # OBS终端节点地址 obs_bucket_name = ploto-test

场景提取输出路径,根据实际情况修改

scene_cut_output_dir = "obs://{}/ploto_file/scene".format(obs_bucket_name)

IAM账号认证信息,用于模型训练相关操作

IAMDomain = "" IAMUser = "" IAMPassword = "" IAMproject = ""

#### 2.2 运行服务
- 数据库迁移:

切换到 **manage.py**所在的目录下,通过终端启动数据库迁 migration 服务:

python3 manage.py makemigrations python3 manage.py migrate

- Создание超级用户,填入用户名与密码:

python3 manage.py createsuperuser

- Запуск сервиса, указать запуск в 0.0.0.0, порт равен 8000:

python3 manage.py runserver 0.0.0.0:8000

- Создать учётную запись и войти в Django бэкэнд:

Создать учётную запись с именем ploto_test, предоставить соответствующие разрешения.

- Через http://0.0.0.0:8000/admin/auth/user/, если доступ к серверу осуществляется извне, используйте адрес сервера для входа в систему с помощью только что созданного суперпользователя.
- Создайте пользователей ploto_test и предоставьте им соответствующие разрешения;
- Добавьте Ploto users, выберите нового пользователя ploto_test, сохраните его, и пользователь будет активирован (без этой операции вы не сможете войти). Настройте соответствующие разрешения для пользователя.
- Посетите систему через http://0.0.0.0:8000 или через адрес сервера.
- Создайте индекс ES:

python3 manage.py serach_index --rebuild

- Запустите асинхронные задачи Celery:

celery -A ploto worker -l info -P eventlet

- Запустить периодические задачи Celery:

celery -A ploto beat

- Вы можете запустить initutils инструменты для заполнения, удаления и удаления данных платформы:

fill_obs.py: заполнить данные obs для тестирования.
fill_db.py : заполнить базу данных данными для тестирования.
delete_test_data.py: удалить тестовые данные.
#### 2.3 uwsgi托管启动

Использование метода запуска Python3 подходит для разработки и отладки, журнал сообщений выводится непосредственно на консоль, а при запуске в сети можно выбрать uWSGI для управления Django, журнал регистрации находится в uwsgi.log, а не на консоли.

Сначала установите модуль uwsgi:

pip3 install uwsgi


Создайте файл uwsgi.ini в папке **main directory/ploto**, содержимое файла следующее:

[uwsgi]

应用目录

chdir = /usr/local/huaweicloud-solution-ploto/ploto

服务访问链接

http = 0.0.0.0:8000

wsgi文件目录

wsgi-file = /usr/local/huaweicloud-solution-ploto/ploto/wsgi.py

工作进程数

processes = 4

启动主进程来管理其他子进程

master = true http-timeout = 60

退出时清空环境

vacuum = true

指定pid文件

pidfile = /usr/local/huaweicloud-solution-ploto/ploto/uwsgi.pid

log文件路径

daemonize = /usr/local/huaweicloud-solution-ploto/ploto/uwsgi.log

加载wsgi模块

module=ploto.wsgi:application


После настройки запустите cd в папку uwsgi.ini и выполните следующие команды для запуска или остановки:

```shell
uwsgi --ini uwsgi.ini # 启动
uwsgi --stop uwsgi.pid # 停止
uwsgi --reload uwsgi.pid # 重启
killall -8 uwsgi # 强制停止
``` **Рандом**

aes_gcm_key = binascii.b2a_base64(Random.get_random_bytes(32))
  • Генерация зашифрованной информации

В ploto/common/common_crypt.py введите «пароль в открытом виде», используйте ранее сгенерированный aes_gcm_key для шифрования и выведите зашифрованную информацию (формат bytes), после чего удалите информацию в открытом виде.

from conf.conf import aes_gcm_key         # ключ шифрования
mysql_pwd, mysql_aes_gcm_tag, mysql_aes_gcm_iv = encrypt_aes256gcm("пароль в открытом виде", key=aes_gcm_key, tag_len=16)

Вывод:

crypt_text: b'*****' #зашифрованная информация
tag: b'*****'      #информация для проверки зашифрованной информации
iv: b'*****'       #случайный начальный вектор    

Конфигурация базы данных

В ploto/ploto/dev.py конфигурация соединения с базой данных может быть выполнена следующим образом:

import sys
sys.path.append("..")
from common import common_crypte
mysql_pwd:  b"*****"                         # зашифрованный пароль
mysql_aes_gcm_tagb"*****"                  # информация для проверки зашифрованного пароля
mysql_aes_gcm_iv b"*****"                  # случайный начальный вектор

# Конфигурация базы данных
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "ploto_test",
        "USER": "root",
        # вызов функции расшифровки для получения пароля
        "PASSWORD": common_crypte.decrypt_aes256gcm(mysql_pwd, aes_gcm_key,                                                                 mysql_aes_gcm_iv, mysql_aes_gcm_tag),
        "HOST": "127.0.0.1",
        "PORT": "3306",
    },

Визуализация данных

Разверните Webviz, чтобы визуализировать данные в формате bag, собранные с ROS, на веб-интерфейсе и обеспечить удалённый предварительный просмотр данных.

1. Развёртывание

Рекомендуется использовать Docker для развёртывания образа. После загрузки образа запустите его:

docker run -p 8080:8080 cruise/webviz

Для развёртывания из исходного кода следуйте официальному руководству: https://github.com/cruise-automation/webviz.

2. Доступ

2.1 Основной сервис

После развёртывания откройте браузер по адресу http://127.0.0.1:8080, чтобы использовать сервис. Вы можете перетащить локальный файл bag на страницу для предварительного просмотра. Поддерживаются чтение данных 3D облака точек, изображений и Plot.

Если сервис развёрнут на удалённом хосте, настройте параметры Webviz в главном каталоге/ploto/conf/conf.py:

webviz_url = 'http://localhost:8080' # путь к сервису webviz
rosbridge_url = 'ws://localhost:9090' # (необязательно) ссылка на rosbridge
layout_key = 'ploto_file/layout.json' # (необязательно) ключ объекта пользовательского layout в корзине

2.2 Доступ к удалённым данным

Поддерживается доступ к удалённым данным через авторизованные ссылки. В качестве примера рассмотрим OBS. Необходимо настроить правила CORS для корзины:

Параметр Значение
Разрешённые источники *
Допустимые методы GET, HEAD
Разрешённые заголовки *
Дополнительные заголовки ETag
Content-Type
Content-Length
Cache-Control
Content-Disposition
Content-Encoding
Content-Language
Expires
x-obs-request-id
Accept-Ranges
Время кэширования 100

Получите авторизованную ссылку на данные корзины. Для этого можно обратиться к SDK OBS (https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_1301.html) или использовать OBS Browser+. Добавьте параметр «remote-bag-url=авторизованная ссылка» к основной ссылке сервиса:

http://127.0.0.1:8080?/remote-bag-url=http://remote-bag-url.com

Примечание: авторизованная ссылка должна быть закодирована с помощью urlEncode, а некоторые специальные символы (например, &) должны быть экранированы.

2.3 Управление макетом

Сервис поддерживает сохранение и загрузку макетов. Можно сохранить или загрузить текущий макет страницы или отдельной панели. Создайте файл layout.json и загрузите его. Также можно получить доступ к макету файла в корзине, добавив параметр «layout-url» к ссылке доступа:

http://127.0.0.1:8080?/remote-bag-url=http://remote-bag-url.com&layout-url=http://layout_json.com

Дополнительные функции инструмента можно найти на официальном сайте или в документации службы.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/HuaweiCloudDeveloper-huaweicloud-solution-ploto.git
git@api.gitlife.ru:oschina-mirror/HuaweiCloudDeveloper-huaweicloud-solution-ploto.git
oschina-mirror
HuaweiCloudDeveloper-huaweicloud-solution-ploto
HuaweiCloudDeveloper-huaweicloud-solution-ploto
master