Deployer-skriptin määrittely

Jatkossa tulemme hyödyntämään Deployer-skriptiä sovelluksen julkaisemisessa. Se on PHP-kielellä toteutettu työkalu, joka helpottaa PHP-kielellä toteutettujen sovellusten julkaisua. Se mahdollistaa mm. automaattisen palvelimen määrittelyn, katkeamattoman julkaisun, paluun takaisin edelliseen toimivaan versioon. Lisäksi sille on valmiita reseptejä useimpien kehyskirjastojen ja sovellusten julkaisemiseen.

Deployerin asennus on hyvin suoraviivaista: skriptin lataus, siirto bin-kansioon ja suoritusoikeuksien antaminen. Tämä asennus on tehty jo valmiiksi neutronilla, joten Deployerin käytön voi aloittaa saman tien.

Seuraavalla komennolla voit varmistaa, mikä versio Deployerista on asennettu.

koodaaja@neutroni:~$ dep -V
Deployer 6.8.0

Julkaisuasetusten määrittely

Ennen kuin Deployerilla voidaan tehdä julkaisua, on sille määriteltävä julkaisussa tarvittavat asetukset. Tämä määrittely aloitetaan seuraavilla komennolla.

cd ~/public_html/perhekalenteri-dev/
dep init

Tämän jälkeen sinulta kysytään muutama kysymys. Voit jokaisessa kohdassa valita oletusvaihtoehdon painamalla Enter-näppäintä.



  Welcome to the Deployer config generator



 This utility will walk you through creating a deploy.php file.
 It only covers the most common items, and tries to guess sensible defaults.

 Press ^C at any time to quit.

 Please select your project type [Common]:
  [0 ] Common
  [1 ] Laravel
  [2 ] Symfony
  [3 ] Yii
  [4 ] Yii2 Basic App
  [5 ] Yii2 Advanced App
  [6 ] Zend Framework
  [7 ] CakePHP
  [8 ] CodeIgniter
  [9 ] Drupal
  [10] TYPO3
 >

 Repository [git@github.com:fronttikoodaaja/perhekalenteri.git]:
 >

 Contribute to the Deployer Development

 In order to help development and improve the features in Deployer,
 Deployer has a setting for usage data collection. This function
 collects anonymous usage data and sends it to Deployer. The data is
 used in Deployer development to get reliable statistics on which
 features are used (or not used). The information is not traceable
 to any individual or organization. Participation is voluntary,
 and you can change your mind at any time.

 Anonymous usage data contains Deployer version, php version, os type,
 name of the command being executed and whether it was successful or not,
 exception class name, count of hosts and anonymized project hash.

 If you would like to allow us to gather this information and help
 us develop a better tool, please add the code below.

     set('allow_anonymous_stats', true);

 This function will not affect the performance of Deployer as
 the data is insignificant and transmitted in a separate process.

 Do you confirm? (yes/no) [yes]:
 >

Successfully created: /home/koodaaja/public_html/perhekalenteri-dev/deploy.php

Tämä suoritus loi projektin juureen deploy.php-nimisen tiedoston, johon on määritelty projektin julkaisemisessa tarvittavat asetukset. Oletusvastauksilla määritetyt asetukset eivät valitettavasti toimi halutunlaisesti, siksi tätä tiedostoa joutuu vielä muokkaamaan. Avaa projektin juuresta löytyvä asetustiedosto ja tee siihen seuraavat muokkaukset. Voit muokata asetustiedostoa esimerkisi komennolla:

nano ~/public_html/perhekalenteri-dev/deploy.php
  1. Muokkaa projektin nimeksi perhekalenteri. Tämä määrittelee samalla kansion, johon julkaistava versio kopioidaan.

    // Project name
    set('application', 'perhekalenteri');
    
  2. Kommentoi asetuksista seuraava määritys.

    // [Optional] Allocate tty for git clone. Default value is false.
    // set('git_tty', true);
    
  3. Muokkaa host-asetus seuraavanlaiseksi. Tämä määrittelee palvelimen sekä kansion, johon julkaistava versio kopiodaan.

    // Hosts
    host('neutroni.hayo.fi')
        ->set('deploy_path', '~/public_html/{{application}}');
    
  4. Poista task('deploy', [-rivin alapuolelta seuraava rivi. Koska julkaistavassa projektissa ei ole käytössä Composerilla asennettuja paketteja, niin pakettien asennukseen liittyvä vaihe poistetaan, jotta julkaisu ei pääty virheeseen.

        'deploy:vendors',
    

Projektin ensimmäinen julkaisu

Nyt Deployer on määritetty, seuraavaksi tehdään ensimmäinen julkaisu. Julkaiseminen tapahtuu yksinkertaisesti komennolla

dep deploy

Komento kysyy sinulta neutroni-käyttäjän salasanaa, koska Deployer tekee julkaisun SSH-yhteyden ylitse. Toisin sanoen skripti ottaa yhteyden samalle palvelimelle samalla käyttäjällä ja kopioi julkaistavat tiedostot tämän yhteyden ylitse. Deployer on suunniteltu tekemään julkaisu toiselle palvelimelle, siksi se toimii näin.

✈︎ Deploying main on neutroni.hayo.fi
➤ Executing task deploy:prepare
✔oodaaja@neutroni.hayo.fi's password:
✔ Executing task deploy:lock
✔ Executing task deploy:release
✔ Executing task deploy:update_code
✔ Executing task deploy:shared
✔ Executing task deploy:writable
✔ Executing task deploy:clear_paths
✔ Executing task deploy:symlink
✔ Executing task deploy:unlock
✔ Executing task cleanup
Successfully deployed!

Nyt kotihakemistosta löytyy myös perhekalenteri-niminen kansio, joka sisältää projektin julkaistun version. Pääset julkaistuun versioon osoitteella https://neutroni.hayo.fi/~tunnus/perhekalenteri.

Sivusto avattuna selaimessa

Julkaisukansio sisältää seuraavat kolme alikansiota:

  • current-kansio on linkitetty aina nykyiseen käytössä olevaan julkaisuun, joka löytyy releases-kansion alta. Normaalisti tämä on viimeisin sivustolle tehty julkaisu.

  • releases-kansio sisältää julkaistut versiot, esimerkiksi releases/1-kansiossa on ensimmäisen julkaisun tiedostot. Kansiossa olevien julkaisujen määrä riippuu asetusista, Deployer siistii kansiosta vanhempia versiota pois julkaisun yhteydessä.

  • shared-kansio sisältää kaikille julkaisuille yhteiset tiedostot. Tämä mahdollistaa esim. sen, että isoja tiedostoja ei kopioida useampaan eri julkaisuun, vaan niitä käytetään shared-kansion alta.

Toisin sanoen, viimeinen virallinen julkaisu löytyy aina osoitteesta http://neutroni.hayo.fi/~tunnus/perhekalenteri/current. Oikeassa tuotantopalvelimessa release-kansio määriteltäisiin sivuston juurihakemistoksi, jolloin käyttäjälle näkyy vain se, mitä on current-kansion alla.

Pienen muutoksen julkaiseminen

Kokeillaan vielä tehdä sivuston etusivulle pieni muutos, joka myös julkaistaan. Muokkaa perhekalenteri-dev-kansiossa olevaa index.php-tiedostoa. Muuta sivun lopussa oleva teksti toiseksi, esimerkiksi

      <div>perhekalenteri by koodaaja</div>

Tarkista menemällä osoitteeseen https://neutroni.hayo.fi/~tunnus/perhekalenteri-dev/, että tekemäsi muutos ei rikkonut sivuston toimintaa. Jos sivu näyttää hyvältä, niin vie muutokset versiohallintaan seuraavilla komennoilla. Ensimmäinen komento pitää huolen, että teet commitin oikeaan projektiin.

cd ~/public_html/perhekalenteri-dev
git add .
git commit -m "deployer-asetukset ja testikorjaus"
git push

Tämän jälkeen voit tehdä julkaisun komennolla:

dep deploy

Komennon suoritus tulostaa saman tulostuksen, kuin edelliselläkin kerralla.

✈︎ Deploying main on neutroni.hayo.fi
➤ Executing task deploy:prepare
✔oodaaja@neutroni.hayo.fi's password:
✔ Executing task deploy:lock
✔ Executing task deploy:release
✔ Executing task deploy:update_code
✔ Executing task deploy:shared
✔ Executing task deploy:writable
✔ Executing task deploy:clear_paths
✔ Executing task deploy:symlink
✔ Executing task deploy:unlock
✔ Executing task cleanup
Successfully deployed!

Erona on se, että releases-kansiosta löytyy nyt kaksi kansiota, ensimmäinen (1) ja toinen (2) julkaisu. Juuressa oleva current-kansio on nyt linkitetty näistä jälkimmäiseen.

Sivusto julkaisuversiot