Linux palvelimet – h7

Tehtävänannot:

Olet nyt “Kätketty Mestari” Oy:n tietohallintopäällikkö (ja -osasto). Tämä on Linux palvelimet ict4tn021-4 arvioitava laboratorioharjoitus.

NinjaTietokanta

Haluamme tehdä palvelun, jossa listataan ninjaliikkeitä makeuden, tyylisuunnan ja muiden keskeisten ominaisuuksien suhteen.

Kehittäjämme haluavat käyttää LAMP (Linux Apache MySQL PHP) -pinoa. Asenna tarvittavat ohjelmistot ja tee tietokantaa käyttävä esimerkkiohjelma.

Etätyötä

Haluamme työskennellä etäältä (kuin ninjat piiloistaan).

Käyttäjät

Työntekijämme ovat toimitusjohtaja Nakke Nertola, Håkan Värs, Einari Mikkonen, Einari Öljysaari ja Eija Vähäkäähkä. Tee kaikille käyttäjille esimerkkikotisivut.

Suuri muuri

Suojaa kone tulimuurilla.

WhoWhere

Tee kaikkien käyttäjien käyttöön komento, joka tulostaa Ninjamaisen tervehdyksen “Hello Ninja”, koneen IP-osoitteen ja komentoa ajavan käyttäjän nimen.

Etsitkö haasteita? Tähtäätkö huipputulokseen? Juuri sitä varten meillä on tarjolla:

SneakyGarden.Example.com

Virallinen ninjaliikesivumme tulee Eijan ylläpidettäväksi. Tee Eijalle valmis esimerkkisivu, jossa tietokannassa on seuraavat esimerkkiliikkeet vaikeustasoineen

  • Hyppykiertopotku 27
  • Kuperkeikka 3
  • Karjaisu 1

Sivun tulee olla Eijan muokattavissa ja ninjaliikkeiden näkyä osoitteessa http://SneakyGarden.Example.com. Nimipalvelun toimintaa voit simuloida hosts-tiedostolla.

Uusi ylläpitäjä

Uusi ylläpitäjä on Jussi Laitavalo. Tee hänelle käyttäjätunnus jussi ja anna hänen käyttöönsä täydet pääkäyttäjän oikeudet.

Alustus

Ennen kuin koe alkoi, boottasin Ubuntu 16.04 LTS version tikulta, johon olin sen asentanut aikaisemmin. Kun kone käynnistyi, aluksi avasin terminaalin ja kirjoitin komennon “setxkbmap fi”, jonka avulla vaihdoin näppäimistön kielen suomenkieliseksi. Tämän jälkeen kytkin koneen langattomaan verkkoon ja testasin firefox-selaimella, että toimiiko internet. Sitten ajoin komennon sudo apt-get -y update”. Nyt tietokone oli alustettu ja valmiudessa suorittamaan koetta.

 

LAMP -pino

Aloitin kokeen tekemällä tämän tehtävän, ei LAMP-stackin asennuksen. LAMP:ista linux vaihe on jo ns. asennettu (koska käynnistin koneen tikulta, enkä aio asentaa sitä tietokoneeni kovalevylle), joten siirryin asentamaan apachea.

 

Apache2 asennus

Aloitin apachen asennuksen kirjoittamalla terminaaliin komennon sudo apt-get -y install apache2″. Tämän jälkeen katsoin, toimiiko asentamani apache2 kirjoittamalla firefoxin url-hakukenttään localhost. Ruudulle ilmestyi apachen oletussivu, joten apache2 asennus onnistui moitteetta.

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_045

Kokeen vaatimuksena oli, että eri käyttäjille piti tehdä esimerkki kotisivut, joten kokeilin jo tässä vaiheessa tehdä käyttäjäkohtaiset sivut. Aloitin kokeilun siten, että tein uuden kansion terminaalissa komennolla mkdir public_html, ja tämän jälkeen vaihdoin tähän kansioon komennolla cd publi_html. Sitten tein sinne uuden tiedoston nimellä index.php, sillä sivun tekijät tulevat käyttämään php:tä ohjelmointikielenä. Kirjoitin index.php sivulle tekstinpätkän “Hei Maailma!”. Sitten kirjoitin terminaaliin komennon sudo a2enmod userdir, mikä ottaa käyttöön käyttäjän kotihakemistot. Sitten komennolla sudo systemctl restart apache2.service käynnistin palvelimen uudestaan. Tämän jälkeen kokeilin toimiiko käyttäjäkohtaiset kotisivut kirjoittamalla firefoxin url-hakuun localhost/~xubuntu. Sivu toimi, ja siellä näkyi kirjoittamani “Hei Maailma!” -tekstinpätkä.

 

MySQL

Seuraavaksi asensin MySQL tietokantapalvelun komennolla sudo apt-get -y install mysql-client mysql-server. Asennus alkoi ja hetken kuluttua minun piti kirjoittaa mysql root-käyttäjälle salasana ja tein niin. Kun asennus oli loppu, kirjauduin mysql palveluun sisään kirjoittamalla komentoriville mysql -u root -p, ENTER, salasana. Tämän jälkeen olin mysql palvelun sisällä.

Tämän jälkeen tein uuden tietokannan kirjoittamalla komennon CREATE DATABASE ninjaliikkeet CHARACTER SET utf8;. Tämän jälkeen tein uuden käyttäjän MySQL palveluun, joka voi vain käyttää tätä “ninjaliikkeet”-nimistä tietokantaa. Komennolla GRANT ALL on ninjaliikkeet.* TO ninjatiimi@localhost IDENTIFIED BY ‘taVEk87xY3’; loin käyttäjän ja annoin sille oikeudet käyttää ninjaliike-tietokantaa. Kokeilin tätä vielä kirjautumalla mysql palveluun käyttämällä ninjatiimi-käyttäjää ja sen salasanaa ja se toimi. Sitten tällä käyttäjällä loin jo valmiiksi uuden tietokanta taulun ninjaliikkeet tietokantaan. Komennolla USE ninjaliikkeet pääsin käyttämään tietokantaa ja siellä komennolla CREATE TABLE ninjaliikkeet (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024), points INT); loin tietokantataulun, missä on liikkeen id, nimi ja pisteet. Komennolla show tables; tarkistin, tallentuiko luomani taulu ja se tallentui. Sitten sijointin tauluun liikkeitä tehtävänannon mukaan. Komennolla INSERT INTO ninjaliikkeet(name, points) VALUES (“Karjaisu”, 1), (“Kuperkeikka”, 3), (“Hyppykiertopotku”, 27); sain sijotettua tauluun kaikki tehtävänannon liikkeet. Tarkistin vielä liikkeet komennolla SELECT * FROM ninjaliikkeet;.  Komennolla exit poistuin mysql-palvelusta ja aloitin seuraavan osion.

 

MySQL:llään otin vinkkiä Tero Karvisen MySQL-sivulta.

 

PHP

Aloitin php:n asentamisen suorittamalla komennon sudo apt-get -y install php terminaalissa, joka asentaa viimeisimmän version php:stä. Tämän jälkeen asensin apachen ja mysql:n php-yhteensopivuuden komennolla sudo apt-get -y install libapache2-mod-php php-mysql curl lynx. Sitten kun asennukset oli suoritettu, php pitää erikseen ottaa käyttöön. Komennolla  sudoedit /etc/apache2/mods-available/php7.0.conf pääsin php:n konfiguraatio tiedostoon ja sieltä laitoin kommentteihin kohdan “ifmodule stanza to allow PHP in userdir“. Sitten käynnistin taas apache2:sen komennolla sudo systemctl restart apache2.service. Tämän jälkeen php:n pitäisi toimia apachen sivuissa.

Kokeillakseni php:n toimivuutta kirjoitin aijemmin tekemääni index.php tiedostoon php-koodilla yksinkertaisen laskutoimituksen “Hei Maailma!”-tekstin alle p-elementtien ja php-elementtien sisään php print(2+2). Kokeilin toimivuutta menemällä sivulle localhost/~xubuntu, ja se toimi moitteetta. Tästä voidaan todeta, että php toimii.

 

PHP:n asennukseen otin vinnkkiä Tero Karvisen PHP-ohje sivulta.

 

Etätyötä

Tehtävänantoon kuului, että työntekijät voivat työskennellä etänä. Tähän oiva sovellus on ssh. Asensin ssh:n komennolla sudo apt-get -y install ssh. Tämän jälkeen kokeilin toimiiko ssh. Jotta pystyin ottamaan ssh yhteyden xubuntu-pääkäyttäjään, tuli sillä olla salasana. Komennolla passwd salasanani asetin xubuntu-käyttäjälle salasanan. Ottamalla maailman lyhyimmän etäkäyttöyhteyden (omaan koneeni) kirjoitin terminaaliin komennon ssh xubuntu@localhost. Kirjoitin salasanan ja ääsin käyttämään ssh-yhteyttä. Tästä voidaan todeta, että ssh toimii.

 

Käyttäjät

Toimeksiannossa piti tehdä käyttäjiä eri henkilöille, sekä heille kaikille toimivat esimerkkikotisivut. Ennen käyttäjien tekoa vaihdoin hakemistoani komennolla cd /etc/skel. Tässä kansiossa olevat tiedostot kopioituvat kaikille käyttäjille mitä tehdään ja niiden oikeudet pysyvät käyttäjillä. Tähän kansioon tein uuden kansion komennolla sudo mkdir public_html, komennolla cd public_html vaihdoin kansiota ja sinne tein tiedoston komennolla sudoedit index.php. Tiedostoon kirjoitin samat asiat kuin testatessani käyttäjän kotisivuja (“Hei maailma!”-tekstin, sekä php-laskutoimituksen). Tallensin tiedoston.

Tämän tiedoston lisäksi tein uuden tiedoston komennolla sudoedit mysql, missä luki mysql käyttäjän nimi ja salasana. Näin työntekijän pystyvät käyttämään tietokantaa ja salasana on jo valmiina heillä. Komennolla cd palasin takaisin kotihakemistoon ja siirryin käyttäjien tekoon.

Käyttäjien tekoon avuksi avasin uuden terminaalin, missä komennolla nano kayttajat.txt loin uuden tekstitiedoston, mihin tallensin käyttäjien nimiä ja salasanoja. Komennolla sudo apt-get -y install pwgen asensin komentorivisovelluksen, jolla voi helposti luoda satunaisia salasanoja. Sitten komennolla pwgen 20 5 -s loin jokaiselle käyttäjälle (käyttäjät ovat nnertola, hvars, emikkonen, eoljysaari, evahakaahka) omat salasanat. Sitten komennolla sudo adduser kayttaja -loin käyttäjät yksitellen antaen niille tallentamani salasanat.

Tämän jälkeen kokeilin käyttäjän kotisivuja kirjoittamalla firefoxin hakupalkkiin localhost/~nnertola, ja sieltä tuli aikaisemmin kanioon /etc/skel tekemäni esimerkkisivu index.php.

 

Suojaa muurilla

Toimeksiannosta tuli myös suojata kone tulimuurilla ja tehdä reikä ssh-yhteydelle. Yleensä ssh-yhteys on portissa 22, joten komennolla sudo ufw allow 22/tcp jätin reijän ssh-yhteydelle. Sitten komennolla sudo ufw enable laitoin tulimuurin päälle.

WhoWhere

Tehtävänannossa piti tehdä komento, joka tulostaa tekstin “Hello Ninja”, käyttäjän nimen sekä käyttäjän IP-osoitteen komentoriville. Komennon tulee toimia kaikilla käyttäjillä. Aloitin komennon tekemisen tekemällä tiedoston komennolla nano ninjawelcome.sh. Tiedostoon kirjoitin seuraavaa:

#!/bin/bash
echo Hello Ninja && whoami && hostname -I

Tallensin tiedoston ja kokeilin scriptin toimivuutta komennolla bash ninjawelcome.sh ja se toimi. Tämän jälkeen muutin komennon nimestä .sh päätteen pois komennolla mv ninjawelcome.sh ninjawelcome. Sitten muutin tiedoston käyttäjäoikeuksia antaen kaikille execute (x) -oikeuden komennolla chmod ugo+x ninjawelcome.

Tämän jälkeen kopioin komennon kaikille käyttäjille käytettäväksi komennoksi komennolla sudo cp /usr/local/bin. Tämän jälkeen kokeilin komennolla ninjawelcome, että toimiiko komento ilman bash alkua ja se toimi. Seuraavaksi otin ssh-yhteyden yhteen käyttjistäni komennolla ssh nnertola@localhost, ja kokeilin komentoa sillä ja se toimi.

 

SneakyGarden.example

Tehtävänä oli myös tehdä sivut Eija Vhäkäähkän (evahakaahka kayttajan) koti sivuiksi, mikä toimii urlilla (nimipalvelun simulointi, ei oikea domain ostos) sneakygarden.example.com. Aluksi vaihdoin kansiota komennolla cd /etc/apache2/sites-available ja siellä komennolla sudoedit sneakygarden.example.com.conf tein uuden konfigurointi tiedoston. Tiedoston sisään kirjoitin konfigurointia, johon otin mallia omasta blogissani sijaitsevasta julkaisustani (kohta virtualhost). Tämän jälkeen laitoin sivun toimivaksi komennolla sudo a2ensite sneakygarden.example.com.conf. Sitten otin default-sivun toiminnallisuuden pois päältä komennolla sudo a2dissite 000-default.conf. Tämän jälkeen käynnistin palvelimen uudestaan komennolla sudo systemctl restart apache2.service. Sitten vaihdoin kotihakemistoon komennolla cd ja siellä kirjoittamalla komennon sudoedit /etc/hosts muokkasin host-asetuksia simuloidakseni nimipalvelua. Kirjoitin sinne uuden rivin 127.0.1.1 sneakygarden.example.com. Sitten käynnistin taas palvelimen uudestaan ja kirjoitin firefoxin url-hakukenttään osoitteen sneakygarden.example.com ja sieltä tuli käyttäjän kotisivut.

 

Sivut, jotka käyttävät tietokantaa

Aloitin sivujen tekemisen sillä, että otin ensin ssh yhteyden evahakaahka kayttajaan komennolla ssh evahakaahka@localhost. Kun olin käyttäjällä menin muokkaamaan index.php sivua seuraavanlaiseksi:

Terminal - evahakaahka@xubuntu: ~-public_html_001

Tämän jälkeen tallensin sivun, käynnistin palvelimen uudestaan komennoll sudo systemctl restart apache2.service, ja sivu toimi mainiosti:

Selection_002.png

 

Sivuihin käytin vinkkinä sivua jonka löysin internetistä.

 

Uusi ylläpitäjä

Tehtävänannossa tuli myös tehdä uusi ylläpitäjä-tason käyttäjä. Tein tämän samankaltaisesti kuin muutkin käyttäjät. Komennolla sudo adduser jussi loin käyttäjän annoin sille pwgenillä luodun salasanan. Tämän jälkeen annoin jussi-käyttäjälle sudo ja admin oikeudet komennolla sudo adduser jussi sudo && sudo adduser jussi adm.

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Lähteet:

Arvioitava koe: http://terokarvinen.com/2017/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-4-tiistai-alkusyksy-2017-%E2%80%93-5-op
MySQL-ohjeita: http://terokarvinen.com/2016/mysql-install-and-one-table-database-sql-crud-tutorial-for-ubuntu
PHP-ohjeita: http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo
Linuxpalvelimet – h4: https://ossimarttinen.wordpress.com/2018/02/13/linux-palvelimet-h4/
PHP ja DB ohjeita: https://www.w3schools.com/php/php_mysql_select.asp

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s