【Dromara】🚀 Легкий и незначительно вторгающийся в систему онлайн-строительство, автоматическое развертывание, повседневное обслуживание и мониторинг проекта программное обеспечение
【Также это нативное программное обеспечение для управления операциями / Английский】
👉 Международный сайт: https://jpom.dromara.org 👈
👉 Китайский сайт: https://jpom.top 👈
👉 Русскоязычный сайт: https://jpom.top 👈
## 😭 В повседневной разработке, есть ли у вас следующие болевых точках?Если проект является распределённым, то вышеописанные шаги становятся ещё более сложными.
Доверьтесь Jpom для решения этих проблем! Однако это лишь базовые функции, решаемые с помощью Jpom.### 😁 После использования Jpom
Текст уже на русском языке, поэтому нет необходимости в переводе. Оригинальное форматирование сохранено.- Удобное управление пользователями 1. Мониторинг действий пользователей, отправка уведомлений по электронной почте при выполнении конкретных операций 2. Управление несколькими пользователями, независимое управление правами доступа к проектам (управление правами на загрузку и удаление), полное отслеживание действий, использование рабочих пространств для изоляции прав доступа 3. Возможность включения двухфакторной аутентификации (MFA) для повышения безопасности аккаунтов
.bash_profile
в домашней директории текущего пользователя.Jpom поддерживает несколько способов установки, чтобы удовлетворить различные потребности пользователей. Вам достаточно выбрать один из них.
Внимание: Каталог установки находится в каталоге выполнения команд!
⚠️ Особое внимание: При однокликовой установке убедитесь, что команды выполняются не в одном и том же каталоге! То есть, Серверная часть и Агентская часть не должны быть установлены в одном каталоге!
Если вам требуется изменить путь хранения данных и логов серверной части, измените параметр конфигурации
jpom.path
в файлеapplication.yml
.
# По умолчанию однокликовая установка
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default
# По умолчанию однокликовая установка + автоматическое создание службы запуска при старте системы
curl -fsSL https://jpom.top/docs/install.sh | bash -s Server jdk+default+service
# Установка серверной части и среды JDK
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk
# Установка серверной части и среды JDK/Maven
yum install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Server jdk+mvn
```# Ubuntu
apt-get install -y wget && \
wget -O install.sh https://jpom.top/docs/install.sh && \
bash install.sh Agent jdk
После успешного запуска порт агентской части будет равен 2123
, и вы сможете получить доступ к странице управления через http://127.0.0.1:2123/
.
Если вы не используете этот компьютер для доступа, замените 127.0.0.1
адресом IP вашего сервера.
Если вы не можете получить доступ к системе управления, выполните команду
systemctl status firewalld
для проверки активности брандмауэра, если состояние показывает зелёный цветActive: active (running)
, вам следует разрешить доступ к порту2123
.# Разрешение доступа к порту управления системы 2123 firewall-cmd --add-port=2123/tcp --permanent # Перезапустите брандмауэр для применения изменений firewall-cmd --reloadЕсли после открытия порта на уровне операционной системы вы всё ещё не можете получить доступ, а вы используете облачный сервер, обратитесь к административному интерфейсу облачного сервера для проверки правил безопасности группы, разрешающих доступ к порту
2123
.⚠️ Внимание: В Linux существует множество типов брандмауэров: Firewall, Iptables, SELinux и т.д., поэтому при проверке конфигураций брандмауэра убедитесь, что все они проверены.#### Установка агента одним щелчком мыши> Если сервер, который также требуется управлять, уже установлен с серверной частью, то на этом же сервере следует установить агентскую часть (на одном сервере можно одновременно установить как серверную, так и агентскую части).
⚠️ Внимание: при установке агента одним щелчком мыши убедитесь, что команды выполнены в разных директориях, то есть серверная и агентская части не должны быть установлены в одной и той же директории!
Если вам нужно изменить пути хранения данных и логов агента, измените конфигурацию свойства
jpom.path
в файлеapplication.yml
.```shell
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default
curl -fsSL https://jpom.top/docs/install.sh | bash -s Agent jdk+default+service
yum install -y wget &&
wget -O install.sh https://jpom.top/docs/install.sh &&
bash install.sh Agent jdk
apt-get install -y wget &&
wget -O install.sh https://jpom.top/docs/install.sh &&
bash install.sh Agent jdk
При успешном запуске порт агента будет равен `2123`, и он будет доступен для использования серверной частью.
### Второй способ: 📦 Установка с помощью контейнеризации
> ⚠️ Внимание: для установки с использованием контейнеризации сначала установите Docker, [перейти к документации по установке Docker](https://jpom.top/pages/b63dc5/)
#### Однокомандная установка
```shell
docker run -p 2122:2122 --name jpom-agent jpomdocker/jpom
docker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
mkdir -p /home/jpom-agent/logs
mkdir -p /home/jpom-agent/data
mkdir -p /home/jpom-agent/conf
docker run -d -p bkp2122:2122 \
--name jpom-agent \
-v /home/jpom-agent/logs:/usr/local/jpom-agent/logs \
-v /home/jpom-agent/data:/usr/local/jpom-agent/data \
-v /home/jpom-agent/conf:/usr/local/jpom-agent/conf \
jpomdocker/jpom
docker pull jpomdocker/jpom
mkdir -p /home/jpom-agent/logs
mkdir -p /home/jpom-agent/data
mkdir -p /home/jpom-agent/conf
docker run -d -p 2122:2122 \
--name jpom-agent \
-v /home/jpom-agent/logs:/usr/local/jpom-agent/logs \
-v /home/jpom-agent/data:/usr/local/jpom-agent/data \
-v /home/jpom-agent/conf:/usr/local/jpom-agent/conf \
jpomdocker/jpom
```
#### Хранение данных с использованием контейнерных томов1. Алиоблока
```shell
docker pull registry.cn-chengdu.aliyuncs.com/jpomdocker/jpom
docker volume create jpom-server-data
docker volume create jpom-server-logs
docker volume create jpom-server-conf
docker run -d -p 2122:2122 \
--name jpom-server \
-v jpom-server-data:/usr/local/jpom-server/data \
-v jpom-server-logs:/usr/local/jpom-server/logs \
-v jpom-server-conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
```
2. DockerHub репозиторий
```shell
docker pull jpomdocker/jpom
docker volume create jpom-server-data
docker volume create jpom-server-logs
docker volume create jpom-server-conf
docker run -d -p 2122:2122 \
--name jpom-server \
-v jpom-server-data:/usr/local/jpom-server/data \
-v jpom-server-logs:/usr/local/jpom-server/logs \
-v jpom-server-conf:/usr/local/jpom-server/conf \
jpomdocker/jpom
```
> Установка в контейнерах предоставляется только для серверной части. Из-за изоляции окружения контейнера от хостовой машины многие функции плагинов работают некорректно, поэтому контейнеризация плагинов имеет мало смысла.
>
> Инструкции по установке Docker, конфигурации образов, автоматического запуска, поиска директории после установки можно найти здесь: [https://jpom.top/pages/b63dc5/](https://jpom.top/pages/b63dc5/)
>
> При работе в старых версиях Docker могут возникнуть ошибки типа `ls: cannot access '/usr/local/jpom-server/lib/' : Operation not permitted`. В этом случае потребуется добавление параметра `--privileged`.
>
> Пример: `docker run -p 2122:2122 --name jpom-server jpomdocker/jpom --privileged`
### Метод 3: 💾 Скачивание и установка1. Скачайте пакет установки [https://jpom.top/pages/all-downloads/](https://jpom.top/pages/all-downloads/)
2. Распакуйте файлы
3. Установите плагины
1. Директория `agent-x.x.x-release` содержит все файлы для установки плагинов
2. Загрузите её на соответствующую машину (все файлы)
3. Запустите плагины. Для Windows используйте bat-скрипт, а для Linux — sh-скрипт. (Если вы видите мешанину символов или скрипт не выполняется корректно, проверьте соответствие кодировки и знаков новой строки.)
4. По умолчанию порт для работы плагинов: `2123`.4. Установите сервер
1. Директория `server-x.x.x-release` содержит все файлы для установки сервера
2. Загрузите её на соответствующую машину (все файлы)
3. Запустите сервер. Для Windows используйте bat-скрипт, а для Linux — sh-скрипт. (Если вы видите мешанину символов или скрипт не выполняется корректно, проверьте соответствие кодировки и знаков новой строки.)
4. По умолчанию порт для работы сервера: `2122`, страница управления доступна по адресу `http://127.0.0.1:2.122/` (если вы хотите получить доступ к нему с другой машины, замените `127.0.0.1` на IP-адрес вашей серверной машины)
### Способ 4: ⌨️ Установка с компиляцией1. Посетите главную страницу проекта [Jpom](https://gitee.com/dromara/Jpom) на Gitee и получите последний полный код (рекомендуется использовать ветку master)
2. Перейдите в директорию `web-vue`, выполните команду `npm install` (подготовьте среду Vue заранее и установите зависимости, подробнее можно узнать из файла README.md в директории `web-vue`)
3. Выполните команду `npm run build` для сборки проекта Vue
4. Возвратитесь в корневую директорию проекта и выполните команду: `mvn clean package`
5. Установите агентскую часть
1. Найдите пакет установки агента в директории `modules/agent/target/agent-x.x.x-release`
2. Упакуйте и загрузите на сервер (весь каталог)
3. Запустите агентскую часть, используя bat-файл для Windows или sh-файл для Linux (если возникают проблемы с отображением символов или невозможностью запуска, проверьте соответствие кодировки и знаков новой строки)
4. По умолчанию порт запуска: `2123`
6. Установите серверную часть
1. Найдите пакет установки серверной части в директории `modules/server/target/server-x.x.x-release`
2. Упакуйте и загрузите на сервер (весь каталог)
3. Запустите серверную часть, используя bat-файл для Windows или sh-файл для Linux (если возникают проблемы с отображением символов или невозможностью запуска, проверьте соответствие кодировки и знаков новой строки)
4. По умолчанию порт запуска серверной части: `2122`. Для доступа к административному интерфейсу используйте адрес: `http://127.0.0.1:2122`1:2122/` (если вы хотите получить доступ с другого компьютера, замените `127.0.0.1` на IP-адрес вашего сервера)`> Также можно использовать скрипт `script/release.bat` для Windows или `script/release.sh` для Linux для быстрой сборки.
### Способ 5: 📦 Однокликовый запуск через Docker Compose
- Не требуется никакой подготовки окружения, автоматическая компиляция и сборка
> Необходимо изменить значение токена в файле `.env`
```shell
yum install -y git
git clone https://gitee.com/dromara/Jpom.git
cd Jpom
docker-compose -f docker-compose.yml up
# docker-compose -f docker-compose.yml up --build
# docker-compose -f docker-compose.yml build --no-cache
# docker-compose -f docker-compose-local.yml up
# docker-compose -f docker-compose-local.yml build --build-arg TEMP_VERSION=0.0
```
### Дополнительные команды:
```shell
# docker-compose -f docker-compose.yml up --build
# docker-compose -f docker-compose.yml build --no-cache
# docker-compose -f docker-compose-local.yml up
# docker-compose -f docker-compose-local.yml build --build-arg TEMP_VERSION=0.0
# docker-compose -f docker-compose-cluster.yml up --build
```### Способ 6: 💻 Компиляция и запуск
1. Посетите страницу [Jpom](https://github.com/dromara/Jpom) на GitHub и получите последнюю полную версию кода (рекомендуется использовать ветку master, если вы хотите протестировать новые возможности, используйте ветку dev).
2. Запустите плагин
1. Запустите `org.dromara.jpom.JpomAgentApplication`.
2. Обратите внимание на информацию по умолчанию о логине и пароле, отображаемую в консоли.
3. По умолчанию порт запуска плагина: `2123`.
3. Запустите сервер
1. Запустите `org.dromara.jpom.JpomServerApplication`.
2. По умолчанию порт запуска сервера: `2122`.
4. Создайте Vue-страницу, перейдите в директорию `web-vue` (необходимо наличие локальной среды разработки с Node.js и npm).
5. Установите зависимости проекта Vue, выполните команду `npm install` в консоли.
6. Запустите режим разработки, выполните команду `npm run dev` в консоли.
7. Откройте страницу фронтенда по адресу, указанному в консоли: `http://127.0.0.1:3000/` (при доступе с другого компьютера замените `127.0.0.1` на IP вашего сервера).
## Управление Jpom командами1. Для системы Windows используются bat-файлы.
```bash
# Скрипты управления серверной частью (консоль)
./bin/Server.bat start # Запустить Jpom сервер
./bin/Server.bat stop # Остановить Jpom сервер
./bin/Server.bat restart # Перезапустить Jpom сервер
./bin/Server.bat status # Проверить состояние работы Jpom сервера
# Скрипты управления серверной частью (панель управления), введите действия согласно указаниям панели
./bin/Server.bat
# Скрипты управления агентской частью
./bin/Agent.bat start # Запустить Jpom агентскую часть
./bin/Agent.bat stop # Остановить Jpom агентскую часть
./bin/Agent.bat restart # Перезапустить Jpom агентскую часть
./bin/Agent.bat status # Проверить состояние работы Jpom агентской части
# Скрипты управления агентской частью (панель управления), введите действия согласно указаниям панели
./bin/Agent.bat
```
> После запуска в системе Windows следует следить за состоянием запуска по логам. В случае возникновения проблем с отображением символов проверьте или измените кодировку. Для bat-файлов в Windows рекомендуется использовать кодировку `CP1251` (Windows-1251).
2. Для системы Linux используются sh-файлы.
```bash
# Серверная часть
./bin/Server.sh start # Запустить Jpom сервер
./bin/Server.sh stop # Остановить Jpom сервер
./bin/Server.sh restart # Перезапустить Jpom сервер
./bin/Server.sh status # Проверить состояние работы Jpom сервера
./bin/Service.sh install # Создать службу приложения Jpom сервера (jpom-server)
```# Агентская часть
./bin/Agent.sh start # Запустить Jpom агентскую часть
./bin/Agent.sh stop # Остановить Jpom агентскую часть
./bin/Agent.sh restart # Перезапустить Jpom агентскую часть
./bin/Agent.sh status # Проверить состояние Jpom агентской части
./bin/Service.sh install # Создать службу Jpom агентской части (jpom-agent)
## Управление службой Jpom
> Конфигурация службы приведена здесь как пример; на практике её можно настроить в соответствии со своими потребностями.
>
> После успешного выполнения команды `./bin/Service.sh install`:
>
> systemctl {status | start | stop | restart} jpom-server
>
> systemctl {status | start | stop | restart} jpom-agent
## ⚙️ Настройка параметров Jpom
В корневой директории проекта:
### Настройка программы `./conf/application.yml`
1. Пример конфигурации для агента:
[`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/agent/src/main/resources/config_default/application.yml)
2. Пример конфигурации для сервера:
[`application.yml`](https://gitee.com/dromara/Jpom/blob/master/modules/server/src/main/resources/config_default/application.yml)
### Проектный журнал `./conf/logback.xml`
1. Пример конфигурации агента:
[`logback.xml`](https://gitee.com/dromara/Jpom/blob/master/modules/agent/src/main/resources/config_default/logback.xml)
2. Пример конфигурации сервера:
[`logback.xml`](https://gitee.com/dromara/Jpom/blob/master/modules/server/src/main/resources/config_default/logback.xml)
## 📝 Часто задаваемые вопросы, руководства
- [Главная страница документации](https://jpom.top/)
- [ЧАВО](https://jpom.top/pages/FQA/)
- [Объяснение терминологии](https://jpom.top/pages/FQA/proper-noun/)### Практические примеры
> Внутри могут содержаться некоторые изображения, которые загружаются медленнее.
1. [Локальная сборка + SSH-деплой Java-проекта](https://jpom.top/pages/practice/build-java-ssh-release/)
2. [Локальная сборка + деплой NodeJS-проекта](https://jpom.top/pages/practice/build-node-release/)
3. [Локальная сборка + SSH-деплой NodeJS-проекта](https://jpom.top/pages/practice/build-node-ssh-release/)
4. [Локальная сборка + управление Python-проектом DSL](https://jpom.top/pages/practice/project-dsl-python/)
5. [Управление Java-проектом DSL](https://jpom.top/pages/practice/project-dsl-java/)
6. [Управление установкой Nginx](https://jpom.top/pages/practice/node-nginx/)
7. [Управление Docker](https://jpom.top/pages/practice/docker-cli/)
8. [Контейнерная сборка + деплой Java-проекта](https://jpom.top/pages/practice/build-docker-java-node-release/)
9. [Просмотр новых практических примеров >>](https://jpom.top/pages/practice/)
## Примеры кода сборки проектов
1. [Пример кода Jboot](https://gitee.com/keepbx/Jpom-demo-case/tree/master/jboot-test)
2. [Пример кода SpringBoot (ClassPath)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/springboot-test)
3. [Пример кода SpringBoot (Jar)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/springboot-test-jar)
4. [Пример кода NodeJS Vue (antdv)](https://gitee.com/keepbx/Jpom-demo-case/tree/master/antdv)
5. [Пример кода Python](https://gitee.com/keepbx/Jpom-demo-case/tree/master/python)
> Компиляция Node.js в указанной директории:
```bash
yarn --cwd xxxx/ install
yarn --cwd xxxx/ build
```
> Компиляция Maven в указанной директории:
```bash
mvn -f xxxx/pom.xml clean package
```
## 🛠️ Общая архитектура
## 🐞 Общение, отчеты об ошибках, предложения и т.д.
1. Быстро просканируйте QR-код группы WeChat слева и присоединяйтесь к нам для обсуждения! (При добавлении ассистента, пожалуйста, укажите в примечании "Jpom" для входа в группу.)
2. Открытые проекты не могут существовать без поддержки сообщества. Если проект помог вам и вы хотите сделать небольшой подарок, мы будем рады, если вы просканируете QR-код [пополнения через WeChat и Alipay](https://jpom.top/images/qrcode/praise-all.png)
или воспользуетесь [возможностью пополнения через Gitee](https://gitee.com/dromara/Jpom)
(найдите кнопку "Поддержка" на главной странице проекта). [Запись благодарностей](https://jpom.top/pages/praise/publicity/).
3. Купить товары, связанные с открытым исходным кодом: [введение товаров](https://jpom.top/pages/shop/).
4. Для услуг технической поддержки корпоративных клиентов свяжитесь с нами напрямую для обсуждения условий сотрудничества.
5. Обратная связь по ошибкам, предложения — добро пожаловать в раздел [issues](https://gitee.com/dromara/Jpom/issues), где разработчики будут регулярно проверять и отвечать.
6. Чтобы принять участие в развитии проекта, пожалуйста, ознакомьтесь с [руководством по вкладу](#вклад-в-проект).
Спасибо всем, кто делает пожертвования и вносит свой вклад! Ваша поддержка является движущей силой нашего постоянного развития!<p align="center">
<img src="https://jpom.top/images/qrcode/praise-all.png" style="" alt="praise img">
</p>
## 💖 Продукция
Чтобы лучше поддерживать открытое программное обеспечение, мы решили запустить производство продукции.
Приобретение продукции позволяет вам получить небольшой сувенир, а нам — прибыль от продажи этой продукции (цена нашей продукции будет немного выше рыночной; если это вас беспокоит, не делайте заказ).
<p align="center">
<img src="https://jpom.top/images/qrcode/weixin-shop-jpom66.png" style="" alt="shop home">
</p>
## 🔨 Инструкция по внесению вклада
> Подача вклада считается подписанием [CLA](https://gitee.com/dromara/Jpom/blob/master/CLA.md) соглашения
### Важные замечания
Проект Jpom как открытый проект не может существовать без поддержки сообщества. Мы рады любым изменениям и предложениям от любого человека. Вклад любой важности поможет тысячам пользователей и разработчиков за вашими плечами. Ваш вклад также будет всегда присутствовать в списке вкладчиков проекта, что и есть суть открытого проекта!
Для обеспечения качества и стандарта кода проекта, а также помощи вам быстрее понять структуру проекта, рекомендуется прочесть следующие материалы перед внесением вклада:
- [Инструкция по внесению вклада в Jpom](https://gitee.com/dromara/Jpom/blob/master/CODE_OF_CONDUCT.md)
- [Нормы оформления текста на китайском и английском языках](https://gitee.com/dromara/Jpom/blob/dev/typography-specification.md)### Шаги по внесению вклада
1. Создайте форк этого репозитория.
2. После создания форка вы получите репозиторий, который полностью совпадает с этим репозиторием, клонируйте его на локальную машину.
Обратите внимание на замену ссылки на `ветку` и `пользователя`.
Если вы вносите вклад в код, используйте ветку `dev`; если вы вносите вклад в документацию, используйте ветку `docs`.
```bash
git clone -b ветка https://gitee.com/пользователь/Jpom.git
```
3. Измените код/документацию, после чего сделайте коммит.
```bash
# Добавьте изменённые файлы в область подготовки
git add .
# Выполните коммит в локальный репозиторий, указав, какие именно изменения были внесены
git commit -m 'Укажите, какие изменения были внесены'
# Отправьте изменения на удалённый репозиторий, заменив ветку на dev или docs
git push origin ветка
```
4. Авторизуйтесь в своём репозитории, где вы увидите запрос на слияние PR. Нажмите кнопку "Объединить", чтобы ждать одобрения администратором вашего вклада.### Описание веток проекта| Ветка | Описание |
|---------|-----------------------------------------------------|
| master | Основная ветка, защищённая от изменения, не принимает Pull Requests. После успешного тестирования ветки beta она будет объединена с этой веткой. |
| beta | Ветка бета-версий, защищённая от изменения, не принимает Pull Requests. После успешного тестирования ветки dev она будет объединена с этой веткой. |
| dev | Разработочная ветка, которая принимает Pull Requests. Пожалуйста, отправляйте Pull Requests именно в эту ветку. |
| docs | Ветка проектной документации, которая принимает Pull Requests. Предназначена для описания функциональности проекта, а также для сбора часто задаваемых вопросов. | В настоящее время используются в основном ветки `dev` и `docs`, принимаются pull requests с изменениями. Остальные ветки являются архивными, и вкладчики могут ими пренебрегать. |### Вкладчики
<a href="https://github.com/dromara/Jpom/graphs/contributors">
<img src="https://contrib.rocks/image?repo=dromara/Jpom" alt="вкладчики"/>
</a>
Сделано с помощью [contrib.rocks](https://contrib.rocks).
## 🌍 Знание Созвездия
<p align="center">
<img src="https://jpom.top/images/zsxq.jpg" alt="Присоединиться к знанию Созвездия, чтобы узнать больше информации">
</p>
## 🔔 Рекомендация лучших проектов| Название проекта | Адрес проекта | Описание проекта |
|---------------------|----------------------------------------------------------------------------------------------------|------------------------------------------------------|
| SpringBoot_v2 | [https://gitee.com/bdj/SpringBoot_v2](https://gitee.com/bdj/Springboot_v2) | Базирующийся на Spring Boot чистый стартовый набор |
| TLog GVP Проект | [https://gitee.com/dromara/TLog](https://gitee.com/dromara/tlog) | Лёгкий инструмент для распределённой трассировки логов, который можно подключить за 10 минут |
| Sa-Token | [https://gitee.com/dromara/sa-token](https://gitee.com/dromara/satoken) | Это может быть самый полный Java-фреймворк для управления доступом! |
| Erupt | [https://gitee.com/erupt/erupt](https://gitee.com/erupt/erupt) | Нулевой фронтальный код, чисто аннотационное развитие административного интерфейса |
| hippo4j | [https://gitee.com/magegoofy/hippo4j](https://gitee.com/magegoofy/hippo4j) | Сильный динамический фреймворк управления потоками, со встроенным мониторингом и оповещением. |
| HertzBeat | [https://gitee.com/dromara/hertzbeat](https://gitee.com/dromara/hertzbeat) | Простой и удобный облачный системный мониторинг, не требует установки агента, мощная возможность настройки мониторинга.|## 🤝 Отзывы
- Спасибо компании JetBrains за бесплатные лицензии для открытого исходного кода:
<p>
<img src="https://jpom.top/images/friends/ad/jetbrains.png" alt="JetBrains" style="float:left;">
</p>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )