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

OSCHINA-MIRROR/mirrors-go-deploy

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.06.2025 14:25 f19a5a6

go-deploy

Инструмент для однокнопочного развертывания веб-кластеров, поддерживающий svn и git. Поддерживает дифференциальное обновление и откат. Развертывание на сотнях серверных узлов происходит за доли секунды.

Скриншот

Основные характеристики

  • Поддержка svn и git
  • Поддержка множества проектов, узлов, сред и распределенных кластерных сред для массового обновления и отката
  • Высокопроизводительная параллельная обработка на языке Go позволяет сотням узлов развертываться за доли секунды
  • Не требуется учетные записи svn или git, а также без необходимости в установке без пароля для целевых машин, что снижает риски безопасности
  • Дифференциальное обновление и откат, что позволяет ускорить процесс
  • Сервер и клиент используют TCP для связи и поддержки живучести, что позволяет в реальном времени отслеживать состояние узлов
  • Поддержка команд hook перед и после развертывания, такие как очистка кэша или перезапуск сервиса. Например: sudo service php-fpm reload
  • Простое и удобное управление через панель управления, не требующее сложной настройки
  • Серверная конфигурация команд hook для снижения рисков, связанных с настройкой hook через веб-интерфейс

Компиляция и установка

  • Можно скомпилировать самостоятельно или загрузить двоичный файл из каталога bin (среда компиляции CentOS 7.9).### Конфигурация сервера
|---server
|---server.json
  1. Загрузите двоичный файл сервера на сервер.

  2. Создайте или отредактируйте файл server.json, добавив проекты и соответствующие узлы.

  3. Получите лог коммитов. Если тип проекта svn, то fetchlogpath оставьте пустым, переключитесь на учетную запись выполнения приложения, предположим, это учетная запись www, и выполните команду для получения лога коммитов один раз вручную, чтобы обеспечить возможность получения лога без пароля.

su www
svn log --limit 10 svn://x.x.x.x/project/

Если тип проекта git, то необходимо указать каталог для fetchlogpath и клонировать проект в этот каталог. Не следует направлять веб-сайты на этот каталог, его использование ограничивается получением лога коммитов git.

  1. Запустите сервер под учетной записью www
su www
chmod +x /pathto/server
/pathto/server -c /pathto/server.json
  1. Откройте веб-браузер и проверьте, можно ли нормально получить доступ к веб-интерфейсу управления http://ip:port (port указывается в конфигурации server.json).

Конфигурация узлов клиента

 |---client
```1. Загрузите двоичный файл клиента на все серверные узлы, узел клиента требует только одного файла (следующие действия необходимо выполнить на каждом серверном узле). 2. Первым делом следует получить копию проектного кода, предполагая, что www — это ваш аккаунт для веб-сервера (используйте `ps aux|grep php-fpm` для проверки).
   Проверьте, есть ли у аккаунта www права на выполнение shell.
```bash
cat /etc/passwd|grep www 
www:x:501:501::/home/www:/bin/bash

Если права на выполнение shell отсутствуют, выполните следующую команду:

usermod -s /bin/bash www # www — это имя пользователя

Получите проектный код, чтобы убедиться, что следующий раз обновление можно выполнить без пароля.

su www
svn co svn://1.2.3.4/app /data/wwwroot/app
cd /data/wwwroot/app
svn up
  1. Запустите клиент.
su www
chmod +x /pathto/client
/pathto/client -l :8081 # 8081 — это порт, на котором клиент слушает

Управление безопасностью доступа к веб-интерфейсу

После развертывания веб-интерфейс управления может быть открыт для всех. Для повышения безопасности можно использовать nginx как прокси-сервер с аутентификацией.

htpasswd -c /usr/local/openresty/nginx/conf/vhost/passwd.db yourusername

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

server {
   listen 80;
   server_name yourdomain;
   auth_basic "User Authentication";
   auth_basic_user_file /usr/local/openresty/nginx/conf/vhost/passwd.db;
   location / {
       proxy_pass http://127.0.0.1:http_port;
   }
}

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

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

1
https://api.gitlife.ru/oschina-mirror/mirrors-go-deploy.git
git@api.gitlife.ru:oschina-mirror/mirrors-go-deploy.git
oschina-mirror
mirrors-go-deploy
mirrors-go-deploy
master