Рубрики
Uncategorized

Постройте частный пакетный склад Composer с помощью Satis

Автор оригинала: David Wong.

Набросок

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

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

Satis рекомендуется здесь Это также схема, которую мы в настоящее время используем, которая работает хорошо.

Satis-это генератор репозитория статических композиторов. Это похоже на сверхлегкую, статическую версию пакета на основе файлов.

Вы даете ему хранилище, содержащее композитора. json, определите VCS и репозиторий ресурсов. Он принимает все перечисленные вами пакеты и распечатывает их. Файл JSON в качестве репозитория типа composer.

Объяснять

Серверная среда :

  1. centos7.2
  2. nginx
  3. php 7.1

Платформа Управления Кодом: Облако Кода

Статья написана, насколько это возможно, в реальной ситуации, но адрес склада статьи и веб-адрес недоступны, заменяя реальную информацию виртуальной информацией.

Создайте Частный Проект Git

Поскольку исходный код для внутренних проектов не является общедоступным, мы выбрали облако кода вместо github. Есть две основные причины:

  1. Поскольку GitHub является иностранным сервером, иногда в Китае будет ветер.
  2. В Китае также есть отличные платформы для размещения кода git, которые бесплатно поддерживают частный проект. Например: Кодирование, Кодирование

Частный проект Github-это плата, которая не очень дорога для компании, но по двум вышеперечисленным причинам выбора нет.

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

Адрес SSH: |/[email protected] :iBrand/test-private-composer.git

Адрес SSH: || |/[email protected] ||:iBrand/test-private-composer.git

{
  "name": "iBrand/test-private-composer",
  "type": "library",
  "description": "iBrand test private composer",
  "keywords": [
    "iBrand crop",
    "private composer",
  ],
  "license": "MIT",
  "authors": [
    {
      "name": "shjchen",
      "email": "[email protected]"
    }
  ],
  "require": {
    "php": "^5.6|^7.0",
  },
  "autoload": {
    "psr-4": {
       "iBrand\Prviate\Composer\": "src/"
    }
  },

  "minimum-stability": "dev",
  "prefer-stable": true
}

Создать сервер Satis

Устанавливать

$ cd /data/www/
$ composer create-project composer/satis company-private-composer --stability=dev --keep-vcs

Установка

$ cd /data/www/company-private-composer
$ vi satis.json
{
  "name": "iBrand Private Composer Repository", 
  "homepage": "http://packagist.iBrand.com",
  "repositories": [
    { "type": "vcs", "url": "[email protected]:iBrand/test-private-composer.git" }
    // more vcs url.
  ],
  "require": {
    "ibrand/test-private-composer": "*",
    // you more package.
    },
  "archive": {
        "directory": "dist",
        "format": "tar",
        "prefix-url": "http://packagist.iBrand.com"
    }
}

Под интерпретацией satis.json файл конфигурации

  • Название: название склада, которое может быть определено по желанию
  • Домашняя страница: Адрес домашней страницы склада
  • Репозитории: Укажите источник пакета
  • Требуется: Укажите исходную версию пакета, * скомпилируйте все версии кода, и если вы хотите получить все пакеты, используйте require-all: true.
  • каталог: требуется, расположение файлов dist (внутри вывода-dir)
  • формат: необязательно, zip (по умолчанию) или tar
  • префикс-URL: необязательно, расположение загрузок, домашняя страница (из satis.json), за которой по умолчанию следует каталог

Идентификация

В процессе Сборки До этого нам нужно решить проблему разрешения кода, потому что исходный код предыдущего проекта является частным, поэтому сервер должен иметь доступ к исходному коду, все равно возьмите облако кода в качестве примера:

Создание открытого ключа SSH

Вы можете сгенерировать ssh-ключ, выполнив следующие команды:

$ ssh-keygen -t rsa -C "[email protected]" 
# Generating public/private rsa key pair...
# SSH key can be generated by returning three times

Посмотрите на свой открытый ключ и добавьте его в облако кода (Gitee.com) SSH ключ добавить адрес: https://gitee.com/profile/ssh…

$ cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

Строить

php bin/satis build satis.json public/

Выполнение будет выполнено /данные/www/компания-частный-композитор/публичный Сгенерируйте список складов

Настройка Nginx

На предыдущем шаге был сгенерирован список хранилищ, который необходимо передать для обеспечения доступности nginx или apache Для предоставления сервиса мы используем nginx, поэтому nginx Приведите пример.

server {
    listen  80;
    server_name packagist.iBrand.com;
    root /data/www/company-private-composer/public;
    index index.php index.html;

    access_log /data/logs/packages-access.log;
    error_log  /data/logs/packages-error.log error;
    rewrite_log on;
    
    location ~* \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
    }

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }
}

Когда он настроен, его необходимо выполнить перезагрузка службы nginx Затем вы можете получить доступ http://packagist.iBrand.com Смотрите список ваших складов следующим образом:

Использование

Затем вы можете использовать этот частный репозиторий пакетов Composer в своем проекте.

Добавьте в проект следующую конфигурацию composer.json В файле

"require": {
    "iBrand/test-private-composer": "~1.0"
  }
"config": {
    "preferred-install": "dist",
    "secure-http": false
  },
  "repositories": [
    {
      "type": "composer",
      "url": "http://packagist.iBrand.com/"
    }
  ]

Продолжение следует

  1. Автоматическая сборка для обновления исходного кода веб-книг

Справочный материал

  1. Обработка частных пакетов
  2. Размещение вашего собственного пакета
  3. Использование частных репозиториев

Обсуждение и общение