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
在 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 = '*****'
配置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)
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-file = /usr/local/huaweicloud-solution-ploto/ploto/wsgi.py
processes = 4
master = true http-timeout = 60
vacuum = true
pidfile = /usr/local/huaweicloud-solution-ploto/ploto/uwsgi.pid
daemonize = /usr/local/huaweicloud-solution-ploto/ploto/uwsgi.log
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_tag:b"*****" # информация для проверки зашифрованного пароля
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, на веб-интерфейсе и обеспечить удалённый предварительный просмотр данных.
Рекомендуется использовать Docker для развёртывания образа. После загрузки образа запустите его:
docker run -p 8080:8080 cruise/webviz
Для развёртывания из исходного кода следуйте официальному руководству: https://github.com/cruise-automation/webviz.
После развёртывания откройте браузер по адресу 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 в корзине
Поддерживается доступ к удалённым данным через авторизованные ссылки. В качестве примера рассмотрим 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, а некоторые специальные символы (например, &) должны быть экранированы.
Сервис поддерживает сохранение и загрузку макетов. Можно сохранить или загрузить текущий макет страницы или отдельной панели. Создайте файл 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 )