Web-версия:
Светлая тема: скриншот светлой темы
Тёмная тема: скриншот тёмной темы
Дополнительные демонстрации доступны на официальном сайте (просим прощения за отсутствие подробностей).
Версия для рабочего стола:
скриншот предложения
(Вернуться к началу)
PaoPao в основном построен на следующих открытых проектах и инструментах:
Zinc — это облегчённый полнотекстовый поисковый движок, который можно найти по адресу https://zincsearch.com/. Установка.
Приведённые выше версии среды являются официальными версиями разработки PaoPao и предназначены только для справки. Другие версии сред не были полностью протестированы.
Клонируйте репозиторий кода:
git clone https://github.com/rocboss/paopao-ce.git
Импортируйте файл scripts/paopao.sql
в корневом каталоге проекта в базу данных MySQL.
Скопируйте файл config.yaml.sample
в корневом каталоге в config.yaml
и заполните его в соответствии с комментариями.
Скомпилируйте серверную часть:
make build
make build
Также можно использовать упрощённый режим компиляции без встроенного веб-интерфейса:
sh make build TAGS='slim embed'
После компиляции вы можете найти соответствующий исполняемый файл в каталоге release
.
release/paopao
Запустите серверную часть напрямую:
make run
make run TAGS='embed'
Примечание: если вам нужно встроить веб-интерфейс пользователя, сначала создайте веб-интерфейс (рекомендуется установить web/.env
на VITE_HOST=""
).
Используйте встроенную функцию 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'
Примечание: исполняемые файлы, скомпилированные по умолчанию, не включают функцию миграции, и необходимо добавить тег миграции при компиляции, чтобы встроить поддержку функции миграции.
web
, скопируйте .env
в .env.local
, отредактируйте файл .env.local
с адресом сервера и другими конфигурациями, а затем загрузите зависимости.
cd ./web && cp .env .env.local
vim .env.local
yarn
yarn build
web
, скопируйте .env
в .env.local
, отредактируйте файл .env.local
с адресом сервера и другими конфигурациями, а затем загрузите зависимости.
cd ./web && cp .env .env.local
vim .env.local
yarn
yarn build
yarn tauri build
docker build -t your/paopao-ce:tag .
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.
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 следующим образом:
... 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 содержат различные материалы для разработчиков, включая:
Например, о дизайне paopao-ce можно узнать из docs/proposal/001-о-дизайне-paopao-ce.md, где кратко изложена концепция paopao-ce и его позиционирование.
Разработчики могут запустить Docs на своём компьютере и просматривать документацию по интерфейсам API, экспортированным из бэкенда.
...
Features:
Default: ["Base", "MySQL", "Option", "LocalOSS", "LoggerFile", "Docs"]
Docs: ["Docs:OpenAPI"]
...
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
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 )