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

OSCHINA-MIRROR/rocboss-paopao-ce

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Предварительный просмотр

Web-версия:

Дополнительные демонстрации доступны на официальном сайте (просим прощения за отсутствие подробностей).

Версия для рабочего стола:
скриншот предложения

(Вернуться к началу)

🛠️ Технологический стек

PaoPao в основном построен на следующих открытых проектах и инструментах:

Серверная часть:

Клиентская часть:

🏗️ Быстрый старт

Требования к среде

  • Go (1.20+)
  • Node.js (14+)
  • MySQL (5.7+)
  • Redis
  • Zinc

Zinc — это облегчённый полнотекстовый поисковый движок, который можно найти по адресу https://zincsearch.com/. Установка.

Приведённые выше версии среды являются официальными версиями разработки PaoPao и предназначены только для справки. Другие версии сред не были полностью протестированы.

Инструкция по установке

Способ 1. Ручная установка (рекомендуется)

Клонируйте репозиторий кода:

git clone https://github.com/rocboss/paopao-ce.git

Сервер

  1. Импортируйте файл scripts/paopao.sql в корневом каталоге проекта в базу данных MySQL.

  2. Скопируйте файл config.yaml.sample в корневом каталоге в config.yaml и заполните его в соответствии с комментариями.

  3. Скомпилируйте серверную часть:

    • Скомпилировать API-сервис:
      make build
    • Компиляция API-сервиса и встроенного веб-интерфейса пользователя:
      make build

    Также можно использовать упрощённый режим компиляции без встроенного веб-интерфейса:
    sh make build TAGS='slim embed'
    После компиляции вы можете найти соответствующий исполняемый файл в каталоге release.

    release/paopao
  4. Запустите серверную часть напрямую:

    • Запустить API-сервис:
      make run
    • Запуск API-сервиса и веб-интерфейса пользователя:
      make run TAGS='embed'

    Примечание: если вам нужно встроить веб-интерфейс пользователя, сначала создайте веб-интерфейс (рекомендуется установить web/.env на VITE_HOST="").

  5. Используйте встроенную функцию Migrate для автоматического обновления и обслуживания SQL DDL:

    # Добавьте функцию миграции в раздел Features, чтобы включить функцию миграции.
    vim config.yaml
    # file: config.yaml
    # Features:
    #   Default: ["Base", "MySQL", "Zinc", "MinIO", "LoggerZinc", "Migration"]
    
    # При компиляции добавьте тег миграции, чтобы скомпилировать исполняемый файл с поддержкой функции миграции.
    make build TAGS='migration'
    release/paopao
    
    # Или запустите с тегом миграции напрямую.
    make run TAGS='migration'

    Примечание: исполняемые файлы, скомпилированные по умолчанию, не включают функцию миграции, и необходимо добавить тег миграции при компиляции, чтобы встроить поддержку функции миграции.

Веб

  1. Перейдите в каталог web, скопируйте .env в .env.local, отредактируйте файл .env.local с адресом сервера и другими конфигурациями, а затем загрузите зависимости.
    cd ./web && cp .env .env.local
    vim .env.local
    yarn
  2. Скомпилируйте веб:
    yarn build
    После завершения сборки вы можете получить результаты компиляции в каталоге dist. Настройте nginx так, чтобы он указывал на этот каталог.

Рабочий стол

  1. Перейдите в каталог web, скопируйте .env в .env.local, отредактируйте файл .env.local с адресом сервера и другими конфигурациями, а затем загрузите зависимости.
    cd ./web && cp .env .env.local
    vim .env.local
    yarn
  2. Скомпилируйте веб:
    yarn build
  3. Создайте рабочий стол:
    yarn tauri build
    Рабочий стол написан с использованием Rust + tauri, и для его установки требуется установить зависимости tauri. Для получения дополнительной информации см. https://tauri.studio/v1/guides/getting-started/prerequisites.

Метод 2. Использование Docker для создания и запуска

  • Сервер:
    • По умолчанию:
      docker build -t your/paopao-ce:tag .
    • Встроить веб и настроить адрес API:
      docker build -t

your/paopao-ce:tag --build-arg API_HOST=http://api.paopao.info:

docker build -t your/paopao-ce:tag --build-аргумент API_HOST=no .

Docker встраивает web UI и использует локальный web/.env с API host.

Docker build -t your/paopao-ce:tag --build-arg USE_API_HOST=no.

Docker встраивает web UI и использует скомпилированный web/dist.

Docker build -t your/paopao-ce:tag --build-arg USE_DIST=yes.

Только компилирует API сервер.

Docker build -t your/paopao-ce:tag --build-arg EMBED_UI=no.

Запуск:

mkdir custom && docker run -d -p 8008:8008 -v ${PWD}/custom:/app/paopao-ce/custom -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml your/paopao-ce:tag.

Или запуск готового образа Docker:

mkdir custom && docker run -d -p 8008:8008 -v ${PWD}/custom:/app/paopao-ce/custom -v ${PWD}/config.yaml.sample:/app/paopao-ce/config.yaml bitbus/paopao-ce:latest.

Способ три. Использование docker-compose для запуска

git clone https://github.com/rocboss/paopao-ce.git. cd paopao-ce && docker compose up -d. visit http://localhost:8008 👀 paopao-ce, visit http://localhost:8001 👀 RedisInsight, visit http://localhost:8080 👀 phpMyAdmin.

По умолчанию используется config.yaml.sample. Если нужна пользовательская конфигурация, скопируйте файл по умолчанию (например, config.yaml), внесите изменения и синхронизируйте конфигурацию с docker-compose.yaml следующим образом:

file: docker-compose.yaml

... backend: image: bitbus/paopao-ce:latest restart: always depends_on: - db - redis - zinc # modify below to reflect your custom configure volumes: - ./config.yaml:/app/paopao-ce/config.yaml ports: - 8008:8008 networks: - paopao-network ....

Примечание: предоставленный docker-compose.yaml предназначен для создания среды разработки на локальной машине. Для производственного развёртывания или доступа из внешней сети рекомендуется настроить параметры конфигурации или использовать другие методы развёртывания.

Документация по разработке

Документы Docs содержат различные материалы для разработчиков, включая:

  • deploy (docs/deploy/) — документы по развёртыванию paopao-ce;
  • discuss (docs/discuss/) — обсуждение проблем, связанных с разработкой;
  • openapi (docs/openapi/) — документация по API paopao-ce;
  • proposal (docs/proposal/) — предложения по функциональности paopao-ce.

Например, о дизайне paopao-ce можно узнать из docs/proposal/001-о-дизайне-paopao-ce.md, где кратко изложена концепция paopao-ce и его позиционирование.

API-документы

Разработчики могут запустить Docs на своём компьютере и просматривать документацию по интерфейсам API, экспортированным из бэкенда.

  • В config.yaml добавьте функцию Docs:
...
Features:
  Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile", "Docs"]
  Docs: ["Docs:OpenAPI"]
...
  • При сборке добавьте docs в TAGS:
make run TAGS='docs'

# visit http://127.0.0.1:8011/docs/openapi

Конфигурация

config.yaml.sample — это шаблон полного конфигурационного файла. При запуске paopao-ce будет считывать config.yaml или ./custom/config.yaml (предпочтение отдаётся первому найденному файлу).

cp config.yaml.sample config.yaml
vim config.yaml # внести изменения в параметры
paopao serve

В разделе Features конфигурационного файла указываются функции, которые будут включены при запуске paopao-ce:

...

Features:
  Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile"]
  Develop: ["Base", "MySQL", "Option", "Sms", "AliOSS", "LoggerZinc"]
  Demo: ["Base", "MySQL", "Option", "Sms", "MinIO", "LoggerZinc"]
  Slim: ["Base", "Sqlite3", "LocalOSS", "LoggerFile"]
  Base: ["Zinc", "Redis", "Alipay",]
  Option: ["SimpleCacheIndex"]
  Sms: "SmsJuhe"

...

Здесь Default, Develop, Demo и Slim представляют собой разные наборы функций (Features Suite), а Base и Option — поднаборы функций. Sms относится к параметрам функции SMS.

Пример использования Features:

release/paopao serve --help Использование release/paopao: -features значение использовать специальные функции -no-default-features использовать ли функции по умолчанию

  • По умолчанию используется набор функций Default: release/paopao serve.

  • Не включает функции по умолчанию, только функции из Develop: release/paopao serve --no-default-functions --features develop.

  • Использует функции по умолчанию и добавляет функцию sms: release/paopao serve --features sms.

  • Вручную указывает необходимые функции: release/paopao serve --no-default-features --features sqlite3,localoss,loggerfile,redis.

Поддерживаемые функции:

Функция Категория Состояние Примечание
Web Подсервис Внутреннее тестирование Запуск веб-сервиса
Admin Подсервис WIP Запуск административного бэкэнда для управления
SpaceX Подсервис WIP Запуск сервиса SpaceX
Bot Подсервис WIP Запуск бота

Zinc: # Zinc 搜索配置 Host: 127.0.0.1:4080 Index: paopao-data User: admin Password: admin Secure: False

Meilisearch (https://github.com/meilisearch/meilisearch) — поисковый движок:

  • Запуск Meili:
mkdir -p data/meili/data

# Запуск с помощью Docker:
docker run -d --name meili -v ${PWD}/data/meili/data:/meili_data -p 7700:7700 -e MEILI_MASTER_KEY=paopao-meilisearch getmeili/meilisearch:v0.29.0
# Посетите http://localhost:7700, чтобы открыть встроенный пользовательский интерфейс поиска.

# Запустите с помощью docker compose, необходимо удалить комментарии в docker-compose.yaml относительно meili:
docker compose up -d meili

# Проверьте статус работы meili:
docker compose ps
NAME                   COMMAND                  SERVICE             STATUS              PORTS
paopao-ce-meili-1      "tini -- /bin/sh -c …"   meili               running             0.0.0.0:7700->7700/tcp

* Изменение конфигурации Meili:
```yaml
# В функции добавьте Meili и LoggerMeili
Features:
  Default: ["Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex","MinIO"]
...
LoggerMeili: # Используйте Meili для ведения журнала
  Host: 127.0.0.1:7700
  Index: paopao-log
  ApiKey: paopao-meilisearch
  Secure: False
  MinWorker: 5               # Минимальное количество фоновых рабочих, установите диапазон [5, 100], по умолчанию 5
  MaxLogBuffer: 100          # Максимальное количество журналов в буфере, установите диапазон [10, 10000], по умолчанию 100
...
Meili: # Конфигурация Meili поиска
  Host: 127.0.0.1:7700      # Здесь host — это хост paopao-ce, который может получить доступ к главному серверу meili.
  Index: paopao-data
  ApiKey: paopao-meilisearch
  Secure: False             # Если вы используете https для доступа к meili, установите значение True

#### MinIO (https://github.com/minio/minio) — объектное хранилище:
* Запуск MinIO:
```sh
mkdir -p data/minio/data

# С помощью Docker запустите:
docker run -d --name minio -v ${PWD}/data/minio/data:/data -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=minio-root-user -e  MINIO_ROOT_PASSWORD=minio-root-password -e MINIO_DEFAULT_BUCKETS=paopao:public bitnami/minio:latest

# С помощью docker compose запустите, необходимо удалить комментарии в docker-compose.yaml относительно minio:
docker compose up -d minio

* Измените конфигурацию Minio:
```yaml
# Добавьте MinIO в функции
Features:
  Default: ["MinIO", "Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex"]
...
MinIO: # Конфигурация хранилища MinIO
  AccessKey: Q3AM3UQ867SPQQA43P2F      # AccessKey/SecretKey необходимо создать вручную на странице управления minio, адрес страницы управления: http://127.0.0.1:9001
  SecretKey: zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
  Secure: False
  Endpoint: 127.0.0.1:9000             # Настройте соответствующий адрес в соответствии с развёрнутым сервером minio.
  Bucket: paopao                       # Как указано выше, необходимо создать bucket и предоставить внешние права чтения и записи.
  Domain: 127.0.0.1:9000               # Адрес minio для внешнего доступа (если вы хотите, чтобы внешний доступ был доступен, здесь необходимо настроить адрес главного сервера minio).
...

#### OpenObserve (https://github.com/openobserve/openobserve) — сбор логов, измерение метрик, отслеживание траекторий:
* Запустите OpenObserve:
```sh
# С помощью Docker запустите:
mkdir data && docker run -v $PWD/data:/data -e ZO_DATA_DIR="/data" -p 5080:5080 \
    -e ZO_ROOT_USER_EMAIL="root@paopao.info" -e ZO_ROOT_USER_PASSWORD="paopao-ce" \
    public.ecr.aws/zinclabs/openobserve:latest

# С помощью docker compose запустите, необходимо удалить комментарии в docker-compose.yaml относительно openobserve:
docker compose up -d openobserve
# Посетите http://loclahost:5080

* Измените конфигурацию LoggerOpenObserve:
```yaml
# Добавьте LoggerOpenObserve в функции
Features:
  Default: ["Meili", "LoggerOpenObserve", "Base", "Sqlite3", "BigCacheIndex"]
...
LoggerOpenObserve: # Используйте OpenObserve для ведения журнала
  Host: 127.0.0.1:5080
  Organization: paopao-ce
  Stream: default
  User: root@paopao.info
  Password: tiFEI8UeJWuYA7kN
  Secure: False
...

#### Pyroscope (https://github.com/pyroscope-io/pyroscope) — анализ производительности:
* Запустите Pyroscope:
```sh
mkdir -p data/minio/data

# С помощью Docker запустите:
docker run -it -p 4040:4040 pyroscope/pyroscope:latest server
# С помощью docker compose запустите, необходимо удалить комментарии в docker-compose.yaml относительно pyroscope:
docker compose up -d pyroscope
# Посетите http://loclahost:4040

* Измените конфигурацию Pyroscope:
```yaml
# Добавьте Pyroscope в функции
Features:
  Default: ["Meili", "LoggerMeili", "Base", "Sqlite3", "BigCacheIndex", "Pyroscope"]
...
Pyroscope: # Конфигурация Pyroscope
  AppName: "paopao-ce"
  Endpoint: "http://localhost:4040"   # Адрес сервера Pyroscope.
  AuthToken:                          # Токен аутентификации Pyroscope.
  Logger:  none                       # Регистратор Pyroscope (стандартный | logrus | none).
...
### Управление ветками исходного кода
**Главный репозиторий GitHub.com/rocboss/paopao-ce**
```bash
git branch
main
beta
dev
feature/bleve
feature/followship
feature/mir
feature/localoss
jc/alimy
r/paopao-plus
r/paopao-pro
x/sqlc
x/sqlx

Описание веток:

В запросе представлен текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса — русский.

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Go и 6 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/rocboss-paopao-ce.git
git@api.gitlife.ru:oschina-mirror/rocboss-paopao-ce.git
oschina-mirror
rocboss-paopao-ce
rocboss-paopao-ce
main