Xubuntu web-palvelimen asennus

Haaga-Helia Linux palvelimena kurssin toteutus 17, ict4tn003-17, kotitehtävä 1

Tehtävänanto:

-ratkaise valitsemasi Työasemat ja tietoverkot koe. Raportoi.

-Tee oma Linux live-USB -tikku. Raportoi. Käytä esimerkiksi UnetBootin, sopiva paketti on Xubuntu 14.04 LTS Desktop (Live) amd64. Pidä tikku mukanasi kaikilla tunneilla.

-Opiskele kertauspaketti aikataulusivulta.

Live-tikun tekeminen

Aloitin Live-tikun tekemisestä.  Asensin LiLi 2.9.3:llä (http://www.linuxliveusb.com/) usb-tikulle Xubuntu 14.04 Trusty Tahrin 64-bittisenä versiona. Ympäristönä tehtävälle toimi kotitietokone, jossa on windows 7 käyttöjärjestelmä. USB-tikku oli Kingston Data Traveller 3.0 USB-tikku (8Gb).

  1. Latasin Xubuntun levykuvan kotitietokoneelleni
  2. Latasin ja asensin LiLin (linkki mainittu yllä)
  3. Käynnistin LiLin ja valitsin usb tikun, josta haluan live-usb tikun tehdä
  4. Valitsin levykuvaksi kohdassa 1. lataamani Xubuntun
  5. Valitsin 2000Mb tilaa persistent data -kohtaan eli saan talletettua tuohon tilaan muun muassa asetuksia.  Jos tikun formaatti ei ole Fat32, niin tämä ei onnistu.
  6. Options kohdasta ruksasin kaikki vaihtoehdot.
  7. Lopuksi painoin salama-ikonia ja LiLi loi tikun. Tähän meni noin 10 minuuttia, koska persistent data -osuuden luominen oli hidasta.
  8. Testasin tikkua toisella työasemallani (alla oleva pöytäkone) ja koululla koneella H5004 PC 3. Asensin ao. työaseman kyseisellä live-tikulla.

Työasemat ja tietoverkot koe

Valitsin kokeeksi työasemat ja tietoverkot 43 Linux kokeen. Minulla oli kotona ylimääräinen tietokone, jota päätin käyttää tässä kokeessa.

Kyseessä oli itse kasaamani tietokone, jonka oleellisimmat speksit:
Emolevy: Asus M3N78 PRO
Prosessori: AMD Phenom 9859 Quad Core
Ram: 4GB DDR2 800MHz
Näytönohjain: Nvidia GeForce 8200
Kovalevy: WD 320GB

Asennus

  1. Laitoin aikaisemmin luodun Live-tikun koneen usb-porttiin ja käynnistin tietokoneen.
  2. Painoin Del-nappia päästäkseni Biosiin ja vaihdoin kovalevyjen järjestyksen niin, että tietokone käynnistyy Live-tikulta. Painoin F10 (Save&Exit).
  3. Kun live oli ladannut niin valitsin asentaa Xubuntun. Asennustyypiksi valitsin pyyhkiä koko kovalevyn ja asentaa Xubuntun tietokoneeseen. Paikaksi valitsin Helsinki ja lokaaliksi Suomi.  Tietokoneen nimeksi tuli p01.
  4. Kun pääsin kirjautumaan työasemalle ajoin tehtävän esivalmisteluissa mainitut komennot:
    wget http://terokarvinen.com/qrs/terorep/pool/main/t/terorep/terorep_0.0.3_all.deb
    sudo dpkg -i terorep_0.0.3_all.deb
    sudo apt-get update
    sudo apt-get -y install terowatch

Itse tehtävä

Käyttäjien luonti

Aloitin luomalla käyttäjät adduser komennolla. Asetin kunkin käyttäjän nimeksi 5+3 muotoisen käyttäjätunnuksen (eli 5 merkkiä sukunimestä ja 3 etunimestä mikäli mahdollista). Ääkköset kirjoitin normaaleilla kirjaimilla. Esimerkki käyttäjän luomisesta: adduser maitomai -> Aseta salasana käyttäjälle -> Aseta koko nimi (esim. Maija Maitoparta) ja mahdolliset muut tiedot -> hyväksy käyttäjän luonti (Y/n) kirjaimella y.

Apache

Sitten asensin apache2:n ja ssh:n. Apt-get update oli jo tehty aikaisemmin joten ajoin komennot sudo apt-get install apache2 ja sudo apt-get install ssh (joka asentaa open-ssh clientin ja serverin).

Enabloin userdirin käytön komennolla sudo a2enmod userdir ja käynnistin apachen uudelleen.  Testasin Apachen toimivuuden menemällä firefoxilla osoitteeseen ”http://localhost” -> ok.  Testasin myös sivun näkymisen ip-osoitteella -> ok. Loin sitten public_html kansion omaan kotihakemistooni ja sen alle index.html tiedoston, testasin toimivuuden komennolla firefox ”http://localhost/~meri/”.  Tämä toimi joten kirjauduin jokaisen käyttäjän profiiliin esim. ssh maitomai@localhost ja loin niihin public_html kansiot, joiden alle loin yksilölliset index.html tiedostot. Testasin kyseisiä sivuja selaimessa ja ne toimivat. Kopioin sitten jokaisen index.html tiedoston päälle oletussivun: sudo cp /var/www/html/index.html /home/username/public_html/index.html. Kotihakemistoihin meneminen oli ok, koska käyttäjät eivät ole voineet kirjautua vielä itse.

Mysql ja Php

Seuraavaksi asensin MySql:n ja Php:n komennoilla sudo apt-get install mysql-server ja sudo apt-get install phpmyadmin. Asennukset pyysivät asettamaan salasanan juurikäyttäjälle, jolloin sellaisen annoin.  Phpmyadminin asennuksessa en huomannut, että apache2 vaihtoehto olisi pitänyt erikseen vielä aktivoida joten tein sen jälkikäteen komennolla sudo dpkg-reconfigure -plow phpmyadmin. Menin selaimella osoitteeseen http://locahost/phpmyadmin/ ja kirjauduin sisään aikaisemmin annetuilla tunnuksilla.

Enabloin phpn käyttäjien hakemistoihin kommentoimalla seuraavasta tiedostosta viimeiset 5 riviä pois: sudoedit /etc/apache2/mods-available/php5.conf ja testasin toimivuuden kirjautumalla locahostiin ssh:lla maitomai:n tunnuksilla, tekemällä index.php tiedoston maitomai:n public_html kansion sisään ja menemällä selaimella osoitteeseen http://localhost/~maitomai/index.phpSelaimeen tuli odotetusti näkyviin numerot 42, jotka php laski yhteenlaskuna 20+22.

index.php tiedoston sisältö:

<?php
 print(20+22)
 ?>
Tulimuuri

Laitoin palomuurin päälle komennolla sudo ufw enable.
Kielsin sisään ja ulos kulkevan liikenteen komennoilla: sudo ufw default deny incoming ja sudo ufw default deny outgoing

Avasin portin SSH:lle, HTTP:lle ja HTTPS:lle: sudo ufw allow 22;, sudo ufw allow 80; ja sudo ufw allow 443

Edit: tämä täytyy tehdä uudelleen iptablesilla: https://jkmala.wordpress.com/2014/09/28/kotitehtava-3-apachen-testaus/

Python ja Bash

Saimme vielä tehtäväksi seuraavaa, mutten ymmärrä tehtävänannon perusteella mitä tarkalleen toivotaan tehtävän. En myöskään löytänyt vastaavaa tehtävää aikaisempien kurssien oppilaiden sivuilta. ”Ryhdymme kehittämään ohjelmia Pythonilla ja Bashilla. Tee kaikkien käyttäjien käyttöön uudet komennot Pythonilla ja Bashilla (siten, että ne toimivat kaikista hakemistoista suoraan komennon nimellä).”

Tarkistin, että Python oli asennettuna ja se oli oletuksena kunnossa.

Sitten aloin perehtymään Bashiin, joka oli pitkälti uutta. Törmäsin aikaisemmin scriptiin joka kuulosti kätevältä, sillä voi tarkistaa tiedoston oikeudet mukavasti luettavassa muodossa (linkki lähteissä):

#!/bin/bash
print_perm() {
  case "$1" in
    0) printf "NO PERMISSIONS";;
    1) printf "Execute only";;
    2) printf "Write only";;
    3) printf "Write & execute";;
    4) printf "Read only";;
    5) printf "Read & execute";;
    6) printf "Read & write";;
    7) printf "Read & write & execute";;
  esac
}

[[ ! -e $1 ]] &&  echo "$0 <file or dir>" 2>&1 && exit 1

perm=$(stat -c%a "$1")
user=${perm:0:1}
group=${perm:1:1}
global=${perm:2:1}

echo "Permissions :"
printf "\tOwner Access: $(print_perm $user)\n"
printf "\tGroup Access: $(print_perm $group)\n"
printf "\tOthers Access: $(print_perm $global)\n"

Loin tiedoston (nimellä ei ole väliä)  komennolla nano bash_file_properties.txt ja liitin löytämäni scriptin siihen. Painoin sitten Ctrl+x ja tallensin tiedoston. Tiedoston oikeuksia pitää muuttaa ennen kuin sen voi suorittaa joten suoritin komennon chmod 755 bash_file_properties.txt, jolla sain execute oikeudet ko. tiedostoon ja ajoin sen näin: ./bash_file_properties.txt bash_file_properties.txt. Tuloksena sain tiedoston oikeudet tulostettuna nätisti:

Screenshot_bash

Nyt pitäisi saada kaikille käyttäjille tämä scripti käyttöön. Löysin ohjeet skriptin asennuksesta. Ajoin komennon sudo install bash_file_properties.txt /usr/local/bin/fileOwnership ja sen jälkeen testasin skriptin toimintaa. Sehän toimii ja komento on fileOwnership.  Varmistin, että komento toimii myös muille käyttäjille ja kirjauduin ssh:lla maitomai@localhost ja ajoin skriptin onnistuneesti pariin otteeseen:

Screenshot_fileOwnership

Toimisto-ohjelma

Tehtävänannossa käskettiin asentamaan tavallinen toimisto-ohjelma, jolla voi muokata myös esim. Ms Wordillä tehtyjä dokumentteja. Asensin libre officen, koska se on omien kokemusten perusteella hyvä. Asennus tapahtui komennolla sudo apt-get install libreoffice.

Kirjautumislokin tarkastelu

Mikäli olisimme koetilanteessa ja Veijo Velikulta olisi ottanut yhteyttä työasemaan niin löytäisin yrityksen lokista esim. komennolla tail -f /var/log/auth.log mikäli kirjautuminen olisi viimeisen 10 tai tulevien lokirivien joukossa (-f parametri lukee kokoajan lisää rivejä tiedoston lopusta eli uudet yritykset tulevat näkyviin.

Opiskele kertauspaketti aikataulusivulta

Näitä tuli tehokkaasti kerrattua tehtävän aikana.

Lähteet
LAMP (Apache, Mysql, Php)
LAMP (Apache, Mysql, Php) jatkuu
https://a1200151.wordpress.com/2014/03/03/tyoasemat-ja-tietoverkot-ict1tn002-43-kuudes-harjoitus/
Apache Tero Karvinen
Linux komennot Tero Karvinen
Tulimuuri
Scripti
How to Create a First Shell Script
Installing a script

About
This document can be copied and edited according to the GNU General Public License (version 3 or newer). http://www.gnu.org/licenses/gpl.html
Based on a course by Tero Karvinen, http://www.iki.fi/karvinen