Palvelinten hallinta

Salt LAMP Stack

Johdanto

Kurssin projektityöksi päätin luoda salt-tilan, joka asentaa LAMP Stack -ohjelmapinon pienten tietoturvamuutoksien kera sekä UFW-palomuurin ja Firefox-selaimen samalla.

Lisenssi: GNU General Public License v3.0.

LAMP Stack on kokoelma avoimen lähdekoodin ohjelmia, jotka muodostavat yhdessä www-palvelimen, jolla voidaan suorittaa verkkosivuja. LAMP on lyhenne neljästä eri ohjelman nimestä, jotka se pitää sisällään. Kyseiset ohjelmat ovat:

  • Linux, joka toimii käyttöjärjestelmänä.
  • Apache, joka toimii webpalvelimena.
  • MySQL (tai MariaDB), joka on tietokantarajapinta.
  • PHP (tai Perl ja/tai Python), joka on komentosarjakieli.

Tehtävä

Aloitin työni asentamalla kyseiset ohjelmat käsin käyttämällä ’sudo apt-get install’ komentoa koneen päivityksen jälkeen. Tähän käytin avukseni ohjeita sivulta https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04. Tämän jälkeen loin salt-hakemiston alle kansion ’lamp’ johon aloin rakentamaan projektia.

Ensimmäiseksi loin salt-state -tiedoston johon kirjoitin funktion, joka varmistaa ohjelmien asennuksen ja/tai asentaa äsken asentamani ohjelmat.

Ajoin tilan saltilla jonka jälkeen tila tulostui onnistuneena.

Seuraavaksi muokkasin edellä mainittujen ohjeiden mukaisesti Apachen konfiguraatiotiedostoa niin, että se käyttää oletusarvoisesti php-tiedostoja html-tiedostojen sijasta. Tämä tapahtui siirtämällä ’index.php’ teksti ’index.html’ tekstin eteen sen takaa. Lisäksi kopioin tiedoston projektia varten luomaani kansioon saltia varten.

Sitten tein muutoksen luomaani salt-tilaan, joka suorittaa yllä tekemäni muutoksen tilan ajon yhteydessä.

Ajoin tilan ja se onnistui. Testiksi poistin alkuperäisestä konfiguraatiotiedostosta ’index.php’ kohdan kokonaan ja ajoin tilan uudestaan.

Tämän jälkeen siirryin tekemään php-pohjaista alotussivua Apachelle. Ohjeet tähän löysin sivulta https://upcloud.com/community/tutorials/installing-lamp-stack-ubuntu/. Siirryin hakemistoon, jossa alkuperäinen Apachen oletussivu sijaitsee html-muodossa. Tein hakemistoon php-muotoisen sivun, jolle valitsin saman tiedostonimen kuin html-muotoisella oli olettaen, että tämä tarkoittaisi sitä, että aikaisemmin tehtyjen apachen konfiguraatiomuutosten perusteella tämä sivu latautuisi nyt ensin. Halusin tähän sivuun vastaavan info-setin kuin alkuperäisessä Apachen html-sivussakin, joten käytin tähän ohjeista löytämääni lauseketta, joka tulostaa sivulle tietoa php:stä. Tässä vaiheessa kävin testaamassa selaimessa, että tieto varmasti tulostui.

Tämän jälkeen kopioin tiedoston projektikansiooni saltia varten ja muokkasin salt-tilani suorittamaan muutoksen tilan ajon yhteydessä.

Ajoin tilan ja se onnistui, jonka jälkeen testasin vielä tekemäni muutoksen muokkaamalla alkuperäistä index.php-tiedostoa ja ajamalla tilan uudestaan.

Seuraavaksi ryhdyin salasanasuojaamaan verkkosivuani. Käytin tähän ohjeita sivulta https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-16-04. Asensin ensin Apacheen utility-lisäosat, jotta pystyin käyttää salasanasuojausta. Asennus tapahtui komennolla ’sudo apt-get install apache2-utils’. Tämän jälkeen loin salasanatiedoston ohjeiden mukaisesti.

Seuraavaksi Apache2 piti saada käyttämään luomaani suojausta sivun päivittyessä. Tein tämän .htaccess-tiedostolla. Aluksi muokkasin Apache2 konfiguraatiotiedostoa (eri kuin aikaisemmassa kohdassa) siten, että etsin siitä kohdan, joka koskee ’/var/www/’ hakemistoa, jossa sivuni sijaitsee. Tähän muokkasin kohdan AllowOverride none -> All.

Seuraavaksi loin edellä mainitun .htaccess-tiedoston ’/var/www/html/’ hakemistooni ja lisäsin siihen tekstin, joka asettaa kansiolle suojauksen.

Tämän jälkeen käynnistin Apache2:n uudestaan komennolla ’sudo systemctl restart apache2’ ja päivitin sivuni varmistaakseni suojauksen onnistuneen.

Suojaus onnistui. Seuraavaksi kopioin kaikki luomani tiedostot projektini salt-kansioon käyttäen cp-komentoa. Tarkistaessa kopioinnin onnistuneen tällä kertaa ls-komennon yhteydessä tulee käyttää lisänä komentoa ’-a’, jotta myös .-alkuiset tiedostot näkyvät tulosteessa.

Tässä vaiheessa muokkasin jälleen salt-tilaani siten, että tekemäni muutokset tulevat voimaan sen ajon yhteydessä.

En ollut vielä ehtinyt testata MySQL-ohjelmaa. Käynnistin sen komennolla ’sudo mysql’.

Ohjelma näytti toimivan. Tehtäväni suunnitelmaan ei kuitenkaan kuulunut MySQL konfigurointi joten poistuin ohjelmasta quit-komentoa käyttäen.

Seuraavaksi yritin saada Saltin vaihtamaan Mozillan teemaa. Kävin muuttamassa Mozillan teeman tylsästä harmaasta perusteemasta värikkääseen Alpenglow-teemaan.

Tämän jälkeen annoin järjestelmässä komennon, joka tulostaa viimeisimmät muutokset terminaaliin. Komennon virkistin muistiini Tero Karvisen ohjeista sivulta https://terokarvinen.com//2018/apache-user-homepages-automatically-salt-package-file-service-example/. Komento antoi tulokseksi pitkän listan joka päivittyy joka minuutilta, vaikka muutoksia ei tapahtuisikaan.

Yritin selata listaa ja etsiä kohtaa, josta löytäisin tiedoston johon muutokset tallentuisivat. En löytänyt kohtaa, päätin yrittää kopioida koko ’/.mozilla/’ ja ’/.cache/mozilla/’ kansiot saltilla viimeisenä toivonani, mutta tämäkään ei tuottanut tulosta. Vaikka kuinka muutin Mozillassa asetuksia, en saanut muutosta ajaessani salt-tilan.

Tässä vaiheessa olin käyttänyt tähän kohtaan jo yli tunnin aikaa ja päätin siirtyä eteenpäin. En myöskään valitettavasti tämän perusteella saanut automatisoitua mainoksenesto-lisäosan asennusta Mozillaan.

Lopputesti

Viimeiseksi testiksi suoritin vielä puhtaan asennuksen Ubuntu 20.04:stä VirtualBoxille.

Tämän jälkeen asensin Saltin tälle koneelle käyttäen Tero Karvisen ohjeita osoitteesta https://terokarvinen.com//2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux/index.html sekä TechViewLeon ohjeita osoitteesta https://techviewleo.com/install-saltstack-master-minion-on-ubuntu/.

master
minion

Noin tunnin mittaisen taistelun jälkeen sain yhteyden masterilta (pääkone) minioniin (testikone) toimimaan. Vaihdoin VirtualBoxin asetuksista koneeni olemaan NAT Networkissa jotta sain koneille eri IP-osoitteet (ensin VirtualBoxin yleisistä asetuksista, sitten molemmille koneille erikseen omista asetuksista). Aikaisemmin molemmissa koneissani oli sama IP-osoite. Tähän liittyvän vinkin löysin osoitteesta https://unix.stackexchange.com/questions/29999/why-are-my-two-virtual-machines-getting-the-same-ip-address.

Masterini IP-osoite muuttui, joten muutin uuden IP-osoitteen minionin konfiguraatiotiedostoon. Nyt sain testi-minionin avaimen näkymään masterilla. Tämän jälkeenkään en kuitenkaan saanut pingattua testi-minionia.

Siirryin testikoneelle ja annoin siellä ping käskyn katsoakseni mitä kone sanoo.

Poistin tekstissä mainitun tiedoston ja käynnistin minionin uudestaan.

Kävin toiveikkaana antamassa pääkoneellani uuden pingaus-käskyn.

Kaikki näytti toimivan, vihdoin. Sitten jännittävimpään osuuteen, toimisiko projektini salt-tila puhtaasti asennetulla alustalla. Annoin käskyn minionille.

Katsoin hetken järkyttyneenä error-tekstiä, kunnes tajusin että kyseesä oli kummittelemaan jäänyt Firefox asetusten funktio. Olin jo poistanut kyseiset kansiot projektihakemistostani, mutta olin unohtanut poistaa ne salt-tilasta. Poistin kohdat tilasta ja ajoin sen uudestaan.

Kaikki toimi kuten piti ja tila päätyi harmooniseen tilaan.

Lopuksi tarkistin vielä salasanasuojauksen ja selaimen oletussivun toimivan Firefoxissa. Käynnistin Firefoxin ja se antoi Apache2 perus html-version ilman salasanasuojausta oletuksena.

Olin ihmeissäni. Mietin hetken ja mieleeni muistui, että Apache2 piti käynnistää uudestaan, jotta muutokset saatiin alkuperäisessä asennuksessa voimaan. Käynnistin demonin uudestaan jonka jälkeen käynnistin selaimen uudestaan ja suuntasin jälleen localhost-osoitteeseen.

Kaikki oli siis kunnossa ja tehtäväni oli onnistunut. Nyt myös allekirjoittanut päätyi harmooniseen tilaan.

GitHub

Vein lopuksi kaikki luomani tiedostot Githubiin. Ohjeet tähän löytyvät sivulta https://terokarvinen.com//2016/publish-your-project-with-github/ ja näitä käytin itsekin virkistääkseni muistiani.

Linkki Githubiini josta kaikki projektissa luodut ja käytetyt tiedostot löytyvät: https://github.com/bgm064/lamp/.

init.sls

Lähteet (lukemisjärjestyksessä)

Media Temple, 2013, What is the LAMP Stack? Katsottavissa: https://www.youtube.com/watch?v=WY8jwTNYTfg. Katsottu 18.5.2021.

DigitalOcean, 2016, How To Install Linux, Apache, MySQL… Luettavissa: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04.. Luettu 18.5.2021.

UpCloud, 2021, How to install LAMP… Luettavissa: https://upcloud.com/community/tutorials/installing-lamp-stack-ubuntu/. Luettu 18.5.2021.

DigitalOcean, 2016, How To Set Up Password… Luettavissa: https://www.digitalocean.com/community/tutorials/how-to-set-up-password-authentication-with-apache-on-ubuntu-16-04. Luettu 18.5.2021.

Tero Karvinen, 2018, Apache User Homepages… Luettavissa: https://terokarvinen.com//2018/apache-user-homepages-automatically-salt-package-file-service-example/. Luettu 18.5.2021.

Tero Karvinen, 2016, Publish Your Project… Luettavissa: https://terokarvinen.com//2016/publish-your-project-with-github/. Luettu 18.5.2021.

Tero Karvinen, 2018, Salt Quickstart… Luettavissa: https://terokarvinen.com//2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux/index.html. Luettu 18.5.2021.

TechViewLeo, 2020, Install Saltstack… Luettavissa: https://techviewleo.com/install-saltstack-master-minion-on-ubuntu/. Luettu 18.5.2021.

StackExchange, 2012, Why are my two virtual… Luettavissa: https://unix.stackexchange.com/questions/29999/why-are-my-two-virtual-machines-getting-the-same-ip-address. Luettu 18.5.2021.

Julkaissut Jani Aulavuo

Opiskelen tietojenkäsittelyä Haaga-Helia ammattikorkeakoulussa.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google photo

Olet kommentoimassa Google -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s

Create your website with WordPress.com
Aloitus
%d bloggaajaa tykkää tästä: