---
title: "Repositooriumite seadistamine Composeriga"
canonical_url: "https://www.zone.ee/blogi/repositooriumite-seadistamine-composeriga/"
post_type: "post"
published: "2024-08-21T08:19:51+00:00"
modified: "2024-08-21T08:19:51+00:00"
author: "Ingmar Aasoja"
featured_image: "https://www.zone.ee/static/sites/2/2024/08/Repositooriumite-seadistamine-Composeriga.webp"
taxonomies:
  category:
    - name: "Tehniline"
      url: "https://www.zone.ee/blogi/category/tehniline/"
  post_tag:
    - name: "Composer"
      url: "https://www.zone.ee/blogi/tag/composer/"
    - name: "Composer.phar"
      url: "https://www.zone.ee/blogi/tag/composer-phar/"
    - name: "PHP"
      url: "https://www.zone.ee/blogi/tag/php/"
    - name: "Satis"
      url: "https://www.zone.ee/blogi/tag/satis/"
    - name: "Veebiarendus"
      url: "https://www.zone.ee/blogi/tag/veebiarendus/"
    - name: "Veebileht"
      url: "https://www.zone.ee/blogi/tag/veebileht/"
  skills:
    - name: "Edasijõudnule"
      url: "https://www.zone.ee/blogi/skill/edasijoudnule/"
    - name: "Spetsialistile"
      url: "https://www.zone.ee/blogi/skill/spetsialistile/"
---

# Repositooriumite seadistamine Composeriga

**Käesolevaga toome lugejani veebiarenduse tööd hõlbustava Composeri-nimelise pakihalduriga seotud blogiseeria kolmanda postituse. Eelnevalt tutvustasin, [kuidas alustada composer.phar kasutamist](https://www.zone.ee/blogi/2024/06/28/kuidas-alustada-composer-phar-kasutamist/) ning [tegime põgusalt tutvust ka enamlevinud käskudega](https://www.zone.ee/blogi/2024/07/12/kaheksa-composeri-kasku-mida-voiks-teada-iga-php-arendaja/). Järgmisena vastame küsimusele: kuidas saab Composeriga paigaldada endaloodud pakki nii, et mõni teine pakk muutuks sellest sõltuvaks?**

![Repositooriumite seadistamine Composeriga](https://www.zone.ee/static/sites/2/2024/08/Repositooriumite-seadistamine-Composeriga-1024x577.jpg)Kui paigaldada sõltuvust käsuga `composer install`, siis otsitakse vastava paki info esmalt avalikust [packagist.org](https://packagist.org/) registrist. Kui soovid, et omatehtud pakki saaks paigaldada sama käsuga, siis selleks on mitmeid variante.

## Packagist.org

Kui tegemist on avatud lähtekoodiga rakendusega, siis on see võimalik registreerida avalikus [packagist.org](https://packagist.org/) registris, mis skännib avalikult kättesaadavat Git repositooriumi kas manuaalselt või siis *webhook* abiga automaatselt ning paki paigaldamine toimub ilma lisategevusteta. Ainuke tingimus on siin vaid see, et paki nimi peab olema unikaalne.

## Seadistades composer.json faili

Privaatseid Git repositooriume saab seadistada ka otse projekti composer.json failis, millele soovitakse vastav sõltuvus paigaldada. [Selleks on vaja soovitud pakid seadistada](https://getcomposer.org/doc/05-repositories.md#using-private-repositories) `repositories` pessa.

```json
{
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@minu-git-aadress.org:vendor/minut-git-repo.git"
        }
    ],
    "require": {
        "vendor/minut-git-repo": "dev-master"
    }
}Code language: JSON / JSON with Comments (json)
```

Kusjuures – kirjeldatud lahendus toetab lisaks Git’ile ka Subversioni, Merguriali ja Fossili.

## Privaatse registri kasutamine

Kui privaatseid pakke on mitmeid ning composer.json failides läheb nende haldamine juba keerukamaks, siis on sul võimalik kasutada ka oma registrit. Ka selleks on mitmeid variante. Nii näiteks on võimalik kasutada tasulist [Private Packagist](https://packagist.com/) teenust, mis aitab ka avalike sõltuvuste haldamise korral monitoorida turvanõrkusi ja peegeldada koodi juhtudel, kui mõni teek ei ole vajalikul hetkel kättesaadav.

Teise lahendusena on võimalik sellist registrit ka ise majutada. Selleks sobib kenasti näiteks ka [Zone](https://www.zone.ee) majutustarkvaras töötav [Satis](https://github.com/composer/satis), mis loob Composerile konfiguratsioonifaili abil loetava staatilise registri.

### Satis’e paigaldamine

Esmalt paigaldame **Satise** virtuaalserverisse. Selleks siseneme serverisse üle SSH ning navigeerime domeeni kogukataloogi:

```bash
cd domeenid/www.miljonivaade.euCode language: Bash (bash)
```

Seejärel paigaldame rakenduse:

```bash
# kloonime satise git'i repo
git clone https://github.com/composer/satis.git

# paigaldame vajalikud sõltuvused
cd satis
composer install

# loome kataloogi, kus hakkame repositooriume kuvama
mkdir publicCode language: Bash (bash)
```

### Veebiserveri seadistamine

Repositooriumi avaldamiseks lisame oma serverisse alamdomeeni nimega `satis.miljonivaade.eu` ning määrame **Kataloog serveris** väärtuseks `satis/public`.

### Satise seadistamine

Seejärel loome serverisse `satis.json` faili ning asetame selle alamdomeeni serveerivast kataloogist ühe astme võrra kõrgemale ehk kataloogi `satis`. Faili sisu üheks osaks on üldine *registry* seadistus ning teiseks massiiv soovitud repositooriumitest, mida oled soovinud sinna lisada. Kusjuures struktuur on nendel täpselt sama, nagu composer.json’i `repositories` pesas.

Faili sisu võiks tinglikult välja näha järgmine:

```json
{
    "name": "my/repository",
    "homepage": "https://satis.miljonivaade.eu",
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@minu-git-aadress.org:vendor/minut-git-repo.git"
        }
    ],
    "require-all": true
}Code language: JSON / JSON with Comments (json)
```

Kõik repositooriumid, mida soovid lisada oma registrisse, tuleb selles failis seadistada `repositories` pessa.

### Satise käivitamine

Selleks, et hakata oma registrit kasutama, on vaja genereerida konfiguratsioonifailist register. Kõnealune käsk vaatab läbi kõik seadistatud Git repositooriumid ning loob sellele vastava sisu, mis on veebist eksponeeritav. Selleks tuleb kataloogis `satis` käivitada järgmine käsk:

```bash
php bin/satis build satis.json publicCode language: Bash (bash)
```

Kui seejärel avada alamdomeen `satis.miljonivaade.eu` oma veebibrauseris, siis on seal näha loodud registrit ning saadaval olevaid pakke. Täpsemaid võimalusi seadistamiseks võid leida [dokumentatsioonist](https://getcomposer.org/doc/articles/handling-private-packages.md#setup), mille kasutamisest saab täpsemalt lugeda omakorda ka [Satise dokumentatsioonist](https://getcomposer.org/doc/articles/authentication-for-private-packages.md). Kirjelduse lihtsuse huvides me käesolevas näidises seda seadistama siiski ei hakka.

### Privaatse registri kasutusele võtmine

Selleks, et kõnealuses registris olevaid pakke saaks kasutusele võtta, tuleb seadistada vastava paki `composer.json` alamdomeen:

```json
        "repositories": [
        {
            "type": "composer",
            "url": "https://satis.miljonivaade.eu"
        }
    ]Code language: JSON / JSON with Comments (json)
```

Seejärel saabki paigaldada pakke, mis viidatud registri piires võimalik.

## Lisaks

Ehkki nüüd on meil täiesti töötav, privaatne ja Composeriga kasutatav register olemas, on siiski mõistlik tähelepanu pöörada veel paarile asjale.

##### 1. Autentimine

Paha ei tee, kui saad oma aladomeenile ligipääsu [piirata näiteks IP’dega](https://www.zone.ee/help/kb/naiteid-htaccess-faili-rewrite-reeglitest/), mis on seotud serveritega, mis seda registrit kasutavad või siis seadistada [HTTP basic auth salasõnaga autentimine](https://www.zone.ee/help/kb/veebilehele-ligipaasu-piiramine-htpasswdiga/).

##### 2. Automaatne uuendamine

Selleks, et repositooriumite register automaatselt uueneks, soovitan lisada uuendamise käsu `cd www.miljonivaade.eu/satis && [[$PHP]] bin/satis build satis.json public` perioodilsite tööde alla ning lasta käivitada sellel mõistliku sagedusega – näiteks kord päevas olenevalt sellest, kui tihti vastavad pakid uueneda võivad.

##### 3. Pakkide peegeldamine

Selleks, et haarata ohjad enda kätte ning mitte sõltuga Github’ist, on [võimalik seadistatud pakid ka peegeldada](https://getcomposer.org/doc/articles/handling-private-packages.md#downloads) samasse **Satise** serverisse. See vähendab ka välisvõrgu liiklust ning teeb ka Zone teenuste siseselt paigaldamise kiiremaks. Kusjuures – **Satise** abil saab peegeldada ka avalikke pakke.

Peegeldamiseks tuleb `satis.json` faili lisada järgmised read:

```json
...
    "archive": {
        "directory": "dist",
        "format": "tar",
        "skip-dev": true
    }
...Code language: JSON / JSON with Comments (json)
```

Juba järgmisel käivitamisel paigaldatakse need pakid `public` kausta. Tähelepanu tuleb siiski pöörata veel ka sellele, et virtuaalserveri kettamaht on piiratud ning peegeldamiseks tasub paigaldada ainult vajalikud repositooriumid.
