Seitsemäs palautus

Alkuperäinen tehtävänanto löytyy täältä.

a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta)

Linkki tehtyyn labraharjoitukseen löytyy tästä.

Haluamme tehdä PHP-kotisivuja etäältä.

Työntekijöitämme ovat Jorma Mähkylä, Pekka Hurme, Ronaldo Smith, Håkan Petersson, Einari Mikkonen, Einari Vähäkäähkä, Eija Vähäkäähkä. Tee heille HTML5-esimerkkikotisivut siten, että kunkin testisivun otsikossa lukee omistajan käyttäjätunnus.

Maija Virtanen jatkaa ylläpitoa, tee hänelle sudo-tunnus. Maija haluaa käyttäjätunnuksen “maija”.

Pekka Hurme aloittaa LAMPin opiskelun. Tee Pekalle oma tietokanta, ja muuta hänen PHP-esimerkkisivunsa näyttämään tietueita tietokannasta (eli tietokantojen “hei maailma”).

Jorma aikoo kehittää uuden sivun sleep.example.com. Laita Jorman kotisvu näkymään myös tästä osoitteesta. Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

Suojaa kone tulimuurilla.

Tee uusi komento ‘wowstats’, joka näyttää tietoja koneen tilasta. Sen tulee toimia jokaisella käyttäjällä työhakemistosta riippumatta.

Tee kaikki niin realistisesti, kuin se labrassa on mahdollista: käytä järkeviä käyttäjätunnuksia ja salasanoja. Testaa kaikki palvelut niin julkisilla nimillä tai IP-osoitteilla, kuin labrassa on mahdollista.

Koska sivuja halutaan tehdä etänä, asennetaan ssh.

sudo apt-get install ssh

Laitetaan tulimuuri päälle, mutta sitä ennen mahdollistetaan ssh-kirjautuminen avaamalla tarvittavat portit. Myös nettisivuille pitää päästä, eli 2 porttia pitää avata.

sudo ufw allow 22/tcp

sudo ufw allow 80/tcp

sudo ufw enable

Käyttäjien luonti

cd /etc/skel

sudo mkdir public_html

sudo mkdir documents

sudoedit documents/salasana

sudoedit public_html/index.html

Tehdään skeliin kansiot ja tiedostot, jotka halutaan näkymään kaikilla luoduilla käyttäjillä.

Kansioon index.html laitetaan

<!doctype html>
<html>
 <head>
 <meta charset="utf-8"/>
 <title></title>
 </head>
</html>

Näin jokaiselle käyttäjälle tulee oma kotisivu, jonka otsikossa näkyy käyttäjänimi.

Tiedostoon salasana laitetaan

Käyttäjänimi:

Salasana:

Tänne lisätääm myöhemmin luodun käyttäjän käyttäjänimi ja salasana, jonka jälkeen se suojataan.

sudo adduser jormam

sudo adduser pekkah

sudo adduser ronaldos

sudo adduser hakanp

sudo adduser einarim

sudo adduser einariv

sudo adduser eijav

Tehdään käyttäjät, jonka jälkeen kaikkien omiin salasana-tiedostoihin lisätään kulloisenkin käyttäjän kirjautumistiedot.

sudo chmod o-r salasana

Tämän jälkeen viedään muilta käyttäjiltä oikeus lukea tiedostoa.

Tämän jälkeen käydään muuttamassa käyttäjien index.html tiedostojen <title> kohtaan käyttäjien nimet.

Asennetaan kehitysympäristö LAMP

Linux on jo asennettu, joten jatketaan Apachella, MySql:llä ja Php:lla.

Kun nämä on asennettu, voidaan tarkastaa käyttäjien kotisivujen toimivuus.

Asennetaan apache ja annetaan käyttäjien tehdä kotihakemistoon webbisivuja

sudo apt-get install apache2

sudo a2enmod userdir

Muutokset käytäntöön

sudo systemctl restart apache2.service

Asennetaan seuraavaksi php. Haetaan ensin oikea paketti

sudo apt-cache search apache2 | grep php

Asennetaan oikea paketti

sudo apt-get install libapache2-mod-php

Muokataan tarvittavaa tiedostoa, jotta saadaan php käyttöön

sudoedit /etc/apache2/mods-available/php7.0.conf

Kommentoidaan seuraavat kohdat pois

#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_flag engine Off
# </Directory>
#</IfModule>

sudo systemctl restart apache2.service

Seuraavaksi asennetaan mySql ja tietokantatuki php:lle

sudo apt-get install mysql-client mysql-server  php-mysql

Kirjaudutaan sisään salasanalla joka keksittiin asennuksen yhteydessä

mysql -u root -p

Pekka & Lamp

Tehdään pekalle käyttäjä ja oma tietokanta mysql:lään.

CREATE DATABASE pekkah CHARACTER SET utf8;

Annetaan oikeudet ja luodaan salasana käyttäjälle

GRANT ALL ON pekkah.* TO pekkah@localhost IDENTIFIED BY ‘**********’;

Laitetaan SQL-kirjautumistiedot myös pekan suojattuun salasanatiedostoon.

use pekkah;

valitaan tietokanta

 create table lempiruoat (
id smallint auto_increment primary key,
nimi varchar(30) not null
);

insert into lempiruoat (nimi) values (‘pasta’);

insert into lempiruoat (nimi) values (‘pizza’);

insert into lempiruoat (nimi) values (‘hampurilainen’);

Tehdään taulu josta näyttää dataa pekan kotisivuille ja lisätään sinne asioita.

<?php
 $user='pekkah';
 $password='kDhf97.dYTpd_/5!2';

$database=$user;
 $dsn="mysql:host=localhost;charset=UTF8;dbname=$database";

$pdo=new PDO($dsn, $user, $password);

$pdoStatement=$pdo->prepare('SELECT * FROM lempiruoat;');
 $pdoStatement->execute();
 $hits=$pdoStatement->fetchAll();

foreach($hits as $row) {
 echo "<p>".$row['id']." ".$row['nimi']."</p>\n";
 }
 ?>

Muutetaan index.html index.php:ksi ja lisätään sinne pätkä koodia, jolla saadaan näytettyä tietoja pekan tietokannasta.

1 pasta

2 pizza

3 hampurilainen

Nyt pekan sivu näyttää lempiruoat-taulun sisällön kotisivullaan.

Jorman sivut

Laitetaan jorman sivut näkymään osoitteesta sleep.example.com

sudoedit /etc/hosts

Lisätään tiedostoon

127.0.0.1 localhost sleep.example.com

Sitten siirrytään muokkaamaan apachen tiedostoja

sudoedit /etc/apache2/sites-available/000-default.conf

Listätään tiedostoon

<VirtualHost *:80>
 ServerName sleep.example.com
 ServerAlias www.sleep.example.com
 DocumentRoot /home/jormam/public_html
</VirtualHost>

Muutokset käytäntöön

sudo systemctl restart apache2.service

 

Wowstats

nano skripti.py

chmod ugo+x skripti.py

Tehdään scriptitiedosto ja annetaan kaikille käyttäjille oikeus suorittaa tiedosto. Laitetaan tiedostoon

#!/usr/bin/python3

import subprocess

print("Tämänhetkinen muistitilanne:");
subprocess.call("free");

Heitetään tiedosto oikeaan hakemistoon, jotta komennon voi suorittaa vain tiedostonimellä

sudo cp skripti.py /usr/bin/

Suoritetaan tiedosto kirjoittamalla komentoriville

skripti.py

Tehdään uusi pääkäyttäjä

Tehdään uusi pääkäyttäjä.

sudo adduser maija

sudo adduser maija sudo

sudo adduser maija admin

sudo adduser maija adm

Tehdään uusi käyttäjä maija, jolle annetaan admin- ja sudo-oikeudet, jonka jälkeen laitetaan tällekkin kirjautumistiedot salasana-tiedostoon ja suojataan se.

Kun ylläpito siirtyy maijalle, suljetaan root-käyttäjä.

sudo usermod –lock root

Muokataan myös ssh-kirjautuminen root-käyttäjään.

sudoedit /etc/ssh/sshd_config

Muokataan tiedostoon

PermitRootLogin no

Ja laitetaan muutokset käytäntöön

sudo service ssh restart

 

 

Advertisements

Kuudes palautus

Alkuperäinen tehtävänanto täältä.

Ensimmäinen tehtävä

a) Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.

Python

  1. nano start.py
    => Tehdään scriptitiedosto ja kirjoitellaan sinne

    import subprocess
    
    import requests
    
    r = requests.get('https://www.metaweather.com/api/location/565346/')
    
    data = r.json()
    
    temp = data['consolidated_weather'][0]['the_temp']
    
    subprocess.call("sudo apt-get update", shell=True)
    
    print("----------------------------")
    
    print("Tervetuloa! Paketit on päivitetty.")
    
    if temp < 0:
    
     print("Ulkona on ", temp, " astetta. Heitä pipo päähän!")
    
    else:
    
     print("Ulkona on ", temp, " astetta. Kohta on kevät!")
    
    print("----------------------------")
    
    
    
  2. python3 start.py
    => Scripti pyörimään

JavaScript

  1. nano start2.js
    => Tehdään scriptitiedosto ja kirjoitellaan sinne

    const terve = "Hello world";
    
    console.log(terve);
  2.  sudo apt-get install nodejs-legacy
    => Asennetaan node, jotta voidaan pyöräyttää scripti terminalissa.
  3. node start2.js
    => Scripti pyörimään terminalissa

Java

  1.  sudo apt-get install default-jdk
    => Asennetaan java development kit
  2. nano Start3.java
    => Tehdään scriptitiedosto ja kirjoitellaan sinne

    class Start3 {
    public static void main(String[] args) {
    
    String hello = "Hello World!";
    
    System.out.println(hello);
    
    }
    }
  3. javac Start3.java
    => Tehdään tiedostosta toteutuskelpoinen
  4. java Start3
    => Scripti pyörimään terminalissa

Viides palautus

Alkuperäinen tehtävänanto löytyy täältä.

Ensimmäinen tehtävä

a) Asenna SSH-demoni

  1.  sudo apt-get install ssh (Tehtiin jo tunnilla)
    Asennetaan ssh-demoni
  2. ssh marion@marionbhupta.com
    Testataan ssh-yhteyden toimivuus, toimii!

 Toinen tehtävä

b) Suojaa kone tulimuurilla, mutta tee ensin reikä SSH:lle

  1. sudo ufw allow 22/tcp
    Avataan portti 22
  2.  sudo ufw enable
    Laitetaan tulimuuri päälle

Kolmas tehtävä

c) Siirrä tiedostoja ssh:lla

  1. scp -r  /Users/nuuttiniemela/Desktop/cats marion@marionbhupta.com:/home/marion/public_html
    Siirretään kansio ssh:lla. Koska kyseessä on kansio, tarvitaan rekursiota eli lisätään -r komentoon, joka siirtää kaiken kansiosta eteenpäin.

     

  2. ssh marion@marionbhupta.com
    Testataan onnistuiko siirto. Ja kyllä, tiedosto löytyy kansiosta public_html. Laitan vielä giffin omalle sivulle, sitä voi ihailla täältä.

Neljäs tehtävä

d) Automatisoi kirjatuminen julkisen avaimen menetelmällä

  1. ssh-keygen
    Generoidaan avainpari
  2. ssh-copy-id marion@marionbhupta.com
    => Ilmeni virhe, tein tätä tehtävää maciltä, joka ei tunnistanut kyseistä komentoa. Korjasin tilanteen asentamalla homebrew:in komennolla

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebre
    w/install/master/install)"
  3. brew install ssh-copy-id
    Asennetaan toiminto brew:llä
  4. ssh-copy-id marion@marionbhupta.com
    Annetaan salasana palvelimelle ja viimeistellään kirjautuminen julkisen avaimen menetelmällä.
  5. ssh marion@marionbhupta.com
    Testataan toimiiko, toimii!

Viides tehtävä

j) Asenna ja konfiguroi ja käynnistä sysstat-paketti. Tarkista sar-komennolla, että se on päällä, esim. näyttää lokimerkinnän “Linux reboot…”. Anna sysstatin pyöriä päivä tai pari. Tutki kuormitushistoriaa sysstatin komennoilla sar, iostat, pidstat… Analysoi tulokset, eli selitä perusteellisesti mitä tulokset tarkoittavat.

  1. sudo apt-get install sysstat
    => Asennetaan sysstat
  2. sudoedit /etc/default/sysstat
    => Vaihdetaan enabled=false => enabled=true

  3. sudo systemctl start sysstat
    => Käynnistetään sysstat

  4. sar
    => Testataan onko sysstat päällä. Ilmestyy tuloste 

    Linux 4.4.0-112-generic (marisanity) 02/16/2018 _x86_64_ (1 CPU)
     01:45:29 PM  LINUX RESTART (1 CPU)

     eli sysstat on päällä. Annetaan raksuttaa päivän tai pari!

  5.  Aikaa hurahtikin viikko, testaan ensin komennolla sar.
    sar
    Linux 4.4.0-112-generic (marisanity) 02/24/2018 _x86_64_ (1 CPU)
    
    12:05:01 AM CPU %user %nice %system %iowait %steal %idle
    12:15:01 AM all 0.37 0.00 0.18 0.02 0.11 99.32
    12:25:01 AM all 0.15 0.00 0.15 0.01 0.10 99.59
    12:35:01 AM all 0.17 0.00 0.14 0.01 0.12 99.56
    12:45:01 AM all 0.16 0.00 0.17 0.01 0.11 99.55
    12:55:01 AM all 0.18 0.00 0.14 0.01 0.07 99.59
    01:05:01 AM all 0.15 0.00 0.15 0.01 0.05 99.65
    01:15:01 AM all 0.11 0.00 0.10 0.01 0.03 99.76
    01:25:01 AM all 0.13 0.00 0.14 0.01 0.03 99.69
    01:35:01 AM all 0.15 0.00 0.14 0.01 0.04 99.67
    01:45:01 AM all 0.14 0.00 0.15 0.01 0.07 99.63
    01:55:01 AM all 0.14 0.00 0.15 0.01 0.06 99.63
    01:59:01 AM all 0.10 0.00 0.15 0.01 0.06 99.67
    02:00:01 AM all 0.22 0.00 0.18 0.00 0.05 99.55
    02:05:01 AM all 0.33 0.00 0.30 0.03 0.11 99.24
    02:15:01 AM all 0.11 0.00 0.13 0.01 0.04 99.71
    02:25:01 AM all 0.10 0.00 0.09 0.01 0.03 99.77
    02:35:01 AM all 0.09 0.00 0.10 0.01 0.03 99.77
    02:45:01 AM all 0.16 0.00 0.15 0.01 0.06 99.62
    02:55:01 AM all 0.15 0.00 0.17 0.01 0.08 99.59
    03:05:01 AM all 0.13 0.00 0.14 0.01 0.11 99.61
    03:15:01 AM all 0.14 0.00 0.14 0.01 0.11 99.60
    03:25:01 AM all 0.20 0.00 0.21 0.02 0.13 99.45

    Settiä tulee aika paljon, kopioin vain osan. Palvelin on tosiaan hyrrännyt aika toimettomana koko ajan, tiedoissa näkyy %idle olevan 99.32-99.77 prosentin välillä.

  6.  Tsekataan iostat
    marion@marisanity:~$ iostat
    Linux 4.4.0-112-generic (marisanity) 02/24/2018 _x86_64_ (1 CPU)
    
    avg-cpu: %user %nice %system %iowait %steal %idle
     0.18 0.01 0.15 0.01 0.07 99.58
    
    Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
    vda 0.56 0.53 7.63 686626 9943245

    Nopeasti katsottuna näyttää samalta kuin iostatin näyttämät tiedot, mutta lisäksi on ilmestynyt Device-kohta. Tässä näkyy tietoa tiedonsiirrosta, mitä kone on kirjoittanut ja lukenut sysstatin ollessa päällä. Luettu 686626kB eli 670MB ja kirjoitettu 9943245kB eli 9710MB.

  7.  Seuraavaksi pidstat.

    marion@marisanity:~$ pidstat
    Linux 4.4.0-112-generic (marisanity) 02/24/2018 _x86_64_ (1 CPU)
    
    03:03:57 PM UID PID %usr %system %guest %CPU CPU Command
    03:03:57 PM 0 1 0.00 0.00 0.00 0.00 0 systemd
    03:03:57 PM 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0
    03:03:57 PM 0 7 0.00 0.00 0.00 0.00 0 rcu_sched
    03:03:57 PM 0 10 0.00 0.00 0.00 0.00 0 watchdog/0
    03:03:57 PM 0 14 0.00 0.00 0.00 0.00 0 khungtaskd
    03:03:57 PM 0 17 0.00 0.00 0.00 0.00 0 khugepaged
    03:03:57 PM 0 28 0.00 0.00 0.00 0.00 0 kswapd0
    03:03:57 PM 0 544 0.00 0.00 0.00 0.00 0 jbd2/vda1-8
    03:03:57 PM 0 628 0.01 0.01 0.00 0.02 0 systemd-journal
    03:03:57 PM 0 762 0.00 0.00 0.00 0.00 0 kworker/0:1H
    03:03:57 PM 0 1295 0.00 0.00 0.00 0.00 0 iscsid
    03:03:57 PM 0 1296 0.01 0.02 0.00 0.02 0 iscsid
    03:03:57 PM 107 1309 0.00 0.00 0.00 0.00 0 dbus-daemon
    03:03:57 PM 0 1316 0.01 0.01 0.00 0.01 0 accounts-daemon
    03:03:57 PM 0 1318 0.00 0.00 0.00 0.00 0 systemd-logind
    03:03:57 PM 0 1324 0.00 0.00 0.00 0.00 0 snapd
    03:03:57 PM 0 1328 0.00 0.00 0.00 0.00 0 lxcfs
    03:03:57 PM 104 1342 0.00 0.00 0.00 0.01 0 rsyslogd
    03:03:57 PM 0 1345 0.00 0.00 0.00 0.00 0 atd
    03:03:57 PM 0 1349 0.00 0.00 0.00 0.00 0 cron
    03:03:57 PM 0 1384 0.00 0.00 0.00 0.00 0 polkitd
    03:03:57 PM 0 1429 0.00 0.00 0.00 0.00 0 mdadm
    03:03:57 PM 0 1446 0.00 0.00 0.00 0.00 0 agetty
    03:03:57 PM 0 2014 0.00 0.00 0.00 0.01 0 sshd
    03:03:57 PM 100 3929 0.00 0.00 0.00 0.00 0 systemd-timesyn
    03:03:57 PM 0 6077 0.00 0.00 0.00 0.00 0 systemd-udevd
    03:03:57 PM 0 11943 0.00 0.00 0.00 0.00 0 kworker/u2:0
    03:03:57 PM 0 12584 0.00 0.00 0.00 0.00 0 kworker/0:1
    03:03:57 PM 0 16585 0.00 0.00 0.00 0.01 0 apache2
    03:03:57 PM 33 16976 0.00 0.00 0.00 0.00 0 apache2
    03:03:57 PM 33 16977 0.00 0.00 0.00 0.00 0 apache2
    03:03:57 PM 33 16982 0.00 0.00 0.00 0.00 0 apache2
    03:03:57 PM 0 21028 0.00 0.00 0.00 0.00 0 kworker/u2:2
    03:03:57 PM 0 21844 0.00 0.00 0.00 0.00 0 sshd
    03:03:57 PM 1000 21846 0.00 0.00 0.00 0.00 0 systemd
    03:03:57 PM 1000 21903 0.00 0.00 0.00 0.00 0 sshd
    03:03:57 PM 1000 21906 0.00 0.00 0.00 0.00 0 bash
    03:03:57 PM 112 26066 0.02 0.02 0.00 0.04 0 mysqld

    Tässä näkyy koneella pyörivät prosessit, asennutuista esimerkiksi mysql, sshd ja apache2, sekä paljon muita koneen omia prosesseja.

Neljäs palautus

Alkuperäinen tehtävänanto löytyy täältä.

Ensimmäinen tehtävä

a) Laita hankkimallesi virtuaalipalvelimelle mahdollisuus tehdä kotisivuja normaalin käyttäjän oikeuksin.

Ohjeet tehtävään saatu täältä.

  1.  sudo apt-get install apache2
  2.  sudo a2enmod userdir
  3.  sudo systemctl restart apache2.service 
  4. sudoedit /etc/apache2/sites-available/marion.conf

    ## /etc/apache2/sites-enabled/marion.conf
    <VirtualHost *:80>
    DocumentRoot /home/marion/public_html/

    <Directory /home/marion/public_html/>
      Require all granted
    </Directory>

    </VirtualHost>

  5.  sudo a2ensite marion.conf
  6. sudo a2dissite 000-default.conf

  7. sudo systemctl restart apache2.restart

Toinen tehtävä

s) Laita hankkimallesi virtuaalipalvelimelle käyttäjän kotihakemistoon tallennettu sivu näkymään Apachen oletussivuna.

  1. cd /home/marion

  2. mkdir public_html

  3. cd public_html

  4. nano index.html
    =>
    Kirjoitetaan höpöhöpöä tiedostoon

  5. Testataan menemällä osoitteeseen http://174.138.1.33/, toimii! Kotihakemistoon tallennettu sivu näkyy.

Kolmas tehtävä

y) Etsi palvelimesi lokeista esimerkkejä murtautumisyrityksistä. Voit etsiä lisätietoa IP-osoitteista ottamatta niihin yhteyttä esimerkiksi komennoilla ipcalc, geoiplookup ja whois.

  1. cd var/log/ 
  2. tail -f auth.log

Teimme testin kaverin kanssa, joka yritti kirjautua koneelle toiseelta virtuaalipalvelimelta. Alla olevassa kuvassa näkyy lokissa oleva murtautumisyritys. Asensin komennolla sudo apt-get install whois ohjelman ja tsekkasin vielä tarkemmin ip-osoitetta => whois 188.166.111.208

Näyttökuva 2018-02-09 kello 13.35.54.png

Kuvassa näkyy myös kyseisen komennot tuomat tiedot. Niistä näkyy että palvelinta hostaa DigitalOcean, sekä missä päin palvelin sijaitsee => NL, eli Amsterdamissa. Muut tiedot ovatkin vain DigitalOceanin yhteystietoja.

Neljäs tehtävä

b) Tee weppisivuja paikallisella koneellasi ja kopioi ne palvelimelle scp-komennolla.

  1. scp /Users/nuuttiniemela/desktop/index.html marion@174.138.1.33:/home/marion/public_html/
    Palvelin kysyy komennon jälkeen salasanaa, jonka jälkeen tiedosto siirrettiin palvelimelle.Kopioin palvelimelle yksinkertaisen index.html tiedoston:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset=”utf-8”/>
    <title>Etusivu</title>
    </head>
    <body>
    <?php
    $today = date(“d/m/Y”);
    print($today);?>
    </body>
    </html>

Viides tehtävä

c) Laita palvelimellesi jokin yksinkertainen PHP-sivu. Voit esimerkiksi tulostaa käyttäjän IP-osoitteen$_SERVER[‘REMOTE_ADDR’] tms. Ole huolellinen, jos otat vastaan syötteitä lomakkeilla (forms).

  1.  sudoedit /etc/apache2/mods-available/php7.0.conf
    kommentoidaan tiedostosta osa pois, jotta php:ta voidaan käyttää
  2. sudo systemctl restart apache2.service

Näyttökuva 2018-02-11 kello 21.19.24.png

Kuudes tehtävä

x) Laita julkinen domain-nimi osoittamaan koneeseesi. NameCheap ja Gandi ovat tunnettuja nimien vuokraajia. GitHub Education -paketista saa NameCheapilta .me domainin ilmaiseksi vuodeksi.

  1. Mennään NameCheapin asetuksiin ja muutetaan DNS-asetuksia

    Näyttökuva 2018-02-11 kello 21.23.52.png

  2. Käydään hetken kuluttua tsiigailemassa ostetussa osoitteessa toimiiko osoite. Toimii!

    Näyttökuva 2018-02-11 kello 21.27.31.png

 

Kolmas palautus

Kolmannen tehtävänannon alkuperäiset ohjeet täältä.

Ensimmäinen tehtävä

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.

  1.  sudo apt-get update
    päivitetään paketit
  2.  sudo apt-get install apache2
    asennetaan apache
  3.  rootista hakemistoon cd home/xubuntu/
  4.  mkdir public_html
    tehdään kansio
  5.  cd public_html/
    mennään kansioon
  6.  nano index.html
    Luodaan html-tiedosto, josta saadaan validi html5-sivusto muodostettua alla olevalla koodilla, pohja siihen on napattu täältä.html.pngctrl + x komennolla pois, vastataan y:llä tyhmiin kysymyksiin ja tallennetaan entterillä index.html tiedosto.
  7.  a2enmod userdir
    Annetaan käyttäjille oikeus päästä tekemilleen webbisivuille
  8.  Lopuksi testataan sivut menemällä osoitteeseen http://localhost/~xubuntuwebbisivu.png

Toinen tehtävä

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.

  1. cd /
  2.  cd var/log/apache2
  3.  ls
    kurkataan mitä lokeja on tarjollals.png
  4. tail -f access.log
    laitetaan lupaavin lokitiedosto seurantaan

Onnistunut sivulataus

Saadaan seuraavanlainen lokitieto, kun mennään sivulle http://localhost/~xubuntu/

127.0.0.1 – – [31/Jan/2018:20:15:46 +0000] “GET /~xubuntu/ HTTP/1.1” 200 364 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0”

127.0.0.1 IP-osoite

[31/Jan/2018:20:15:46 +0000] Sivulatauksen ajankohta

“GET /~xubuntu/ HTTP/1.1” Kerrotaan että kyse on GET-pyynnöstä ja kerrotaan osoite ja sen olevan http-kutsu (1.1 tarkoitus jäi mysteeriksi)

200 364 koodi 200 kertoo pyynnön onnistuneen, 364 jäi mysteeriksi

“Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0”
Kerrotaan käytetyn selaimen tiedot

Epäonnistunut sivulataus

Saadaan seuraavanlainen lokitieto, kun mennään sivulle http://127.0.0.1/~xubuntu/nope

127.0.0.1 – – [31/Jan/2018:20:27:34 +0000] “GET /~xubuntu/nope HTTP/1.1” 404 503 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0”

Tiedot muuten samat kuin onnistuneessa pyynnössä, paitsi annettu osoite päättyy /~xubuntu/nope
sekä koodin 200 sijaan ilmestyy 404, joka kertoo epäonnistuneesta latauksesta

Kolmas tehtävä

c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

Suorittaessani tehtävää f, jossa tehtävänä on tehdä pieni laskuohjelma, kohtasin virheen php:n syntaksissa, joka johti siihen, että selaimessa ei näkynyt enää mitään. Päätin samaan syssyyn tehdä tehtävän c.

Virheen tapahtuessa toimin seuraavasti:

  1. cd /
  2. cd var/log/apache2
  3. ls
  4. cat error.log

Sain lokista seuraavan virheilmoituksen:

[Wed Jan 31 21:04:52.499538 2018] [:error] [pid 9612] [client 127.0.0.1:58776] PHP Parse error: syntax error, unexpected end of file in /home/xubuntu/public_html/index.php on line 37

Sen mukaan tiedostossa, joka sijaitsi kohteessa /home/xubuntu/public_html/index.php oli virhe rivillä 37 (kuva tiedostosta alla)

virhe.png
Tämä kyllä hieman hämmensi aluksi, sillä vaikka tiesin että PHP:n syntaksissa oli virhe (kielen kirjoittamisesta on jo aikaa, taidan olla ruosteessa), koko tiedostossa oli vain laskujeni mukaan 35 riviä.

Ongelma selvisi lopulta sillä, että syynäsin koodin omin silmin läpi. Painoindeksi-muuttujan eteen oli hulahtanut jostain ylimääräinen merkki

}

josta virhe muun muassa johtui. Korjasin myös if-lausekkeen oikealaiseksi. Ratkaisu näkyy seuraavassa tehtävässä.

Neljäs tehtävä

f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)

Koska en ole luovuuden huippu, tein tasan tarkkaan mitä tehtävässä pyydettiin, eli painoindeksilaskurin.

Ruma kun mikä, mutta toimii.

virhe.png

ohjelma1.png

 

ohjelma2.png

 

Viides tehtävä (Lisätty vasta 9.3, sorppandeeros!)

j) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.

L

Linux on valmiina virtuaalipalvelimella, joka on luotu DigitalOceanin kautta droplettina.

A

sudo apt-get install apache2

=> asennetaan apache

sudo a2enmod userdir

mkdir public_html
=> tehdään käyttäjälle kansio johon laittaa sivuja

cd public_html

=> mennään kansioon

nano index.html

=> tehdään html-tiedosto jonne kirjoitetaan testiksi “moro”

cd /etc/apache2/sites-available/

 

nano marionbhupta.conf

=> laitetaan tiedostoon

<VirtualHost *:80>

ServerName marionbhupta.com
ServerAlias www.marionbhupta.com

DocumentRoot /home/marion/public_html/

<Directory /home/marion/public_html/>
 require all granted
</Directory>

</VirtualHost>

Osoite marionbhupta.com ohjaa käyttäjän sivulle, joka on lähtöisin annetusta DocumentRootista.

Tämä vaihtoehto ei tietenkään toimi ennen kuin ip-osoitteeseen on laitettu osoittamaan oma domain NameCheapilta tai muulta vastaavalta palvelulta.

sudo a2ensite marion.conf

=> Enabloidaan sivu käyttöön

sudo a2dissite 000-default.conf

=> Otetaan edellinen sivu pois käytöstä

sudo systemctl restart apache2.service

=> Muutokset käytäntöön. Nyt sivu näkyy jos selaimeen laittaa palvelimen ip-osoitteen, koska en ole hankkinut tässä vaiheessa vielä domainia.

=> http://178.62.248.69/

testataan toimiiko sivu menemällä ip-osoitteeseen

M

sudo apt-get install mysql-client mysql-server

=> asennetaan mysql

mysql -u root -p

Kirjaudutaan mysql:ään sisään.

P

sudo apt-cache search apache2 | grep php

Haetaan oikea asennettava paketti

sudo apt-get install libapache2-mod-php

Asennetaan se

/etc/apache2/mods-available

Mennään kansioon

sudoedit php7.0.conf

Kommentoidaan tiedostossa neuvottu pätkä pois, jotta saadaan enabloitua php käyttöön.

sudo systemctl restart apache2.service

Muutokset käyttöön

nano /home/marion/public_html/index.php

Tehdään php-tiedosto, johon laitetaan

<!doctype html>
<html>
 <head>
 <meta charset="utf-8"/>
 <title>Etusivu</title>
 </head>
 <body>
 <?php
 print(2*5);
 ?>
 </body>
<html>

Tallennetaan se ja testataan toimiiko kun mennään osoitteeseen http://178.62.248.69/. Toimii!

 

 

 

Toinen palautus

Toisen tehtävänannon alkuperäiset kysymykset löytyvät tämän linkin alta.

Ensimmäinen tehtävä

a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

Epäonnistunut toimenpide

Aloitin epäonnistuneesta toimenpiteestä, jonka kyllä tein tarkoituksetta heti xubuntuun vaihdettaessa. Kuten edellisessä postauksessa tuli ilmi, joudun joka kerta päivittämään xubuntun komennolla “sudo apt-get update”, sekä “sudo apt-get dist-upgrade”, jotta saan wifin toimimaan. Tällä kertaa kirjoitin virheellisesti “apt-get update”, joka aiheuttikin heti epäonnistuneen toimenpiteen.

virhe.png

  1.  chmod 0700 of directory /var/lib/apt/lists/partial failed – SetupAPTPartialDirectory (1: Operation not permitted)
    Virheellisen komennon seurauksena, xubuntu yrittää ensin suorittaa komennon hakemistosta directory /var/lib/apt/lists/partial, mutta tulee ilmoitus, että operaatio ei ole sallittu.
  2.  Could not open lock file /var/lib/apt/lists/lock – open (13: Permission denied)
    Seuraavaksi terminal ilmoittaa, että on mahdotonta avata tarvittua hakemistua, sillä pääsy on estetty.
  3. Unable to lock directory /var/lib/apt/lists/
    Yritetään sulkea hakemistoa, mutta se ei onnistu.
  4. Problem unlinking the file /var/cache/apt/pkgcache.bin – RemoveCaches (13: Permission denied)
    Ongelma tiedoston linkityksen poistamisessa (välimuistin poisto), sillä pääsy tiedostoon estetty.
  5. Problem unlinking the file /var/cache/apt/srcpkgcache.bin – RemoveCaches (13: Permission denied)
    Jälleen ongelma tiedoston linkityksen poistamisessa, liittyen välimuistin poistoon, sillä pääsy tiedostoon on estetty.

Pääsyynä ilmeni siis “sudo”-komennon puuttuminen alkuperäisen komennon alusta, joka johti siihen, että kone ei ymmärtänyt kyseessä olevan superkäyttäjä, jolloin tarvittavia oikeuksia ei ollut tiettyjen hakemistojen, toimintojen ja tiedostojen käsittelyyn.

Onnistunut toimenpide

Ehdin tämän tehdä onnistuneesti ennen kuin käytin sitä tähän tehtävään, joten syötteestä tuli aika lyhyt.

jee.png

  1.  Reading package lists… Done
    Lukee pakkauslistat onnistuneesti
  2. Building dependency tree
    Rakentaa riippuvuussuhteet
  3. Reading state information… Done
    Lukee tilan tiedot onnistuneesti
  4. Calculating upgrade… Done
    Laskee päivityksen onnistuneesti
  5. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Ilmoittaa, että uusia asennuksia, poistoja tai päivityksiä on tehty nolla kappaletta.

Toinen tehtävä

c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.

Haasteena oli, että suurin osa ohjelmista mitä käytän windows:illa, ei ole mahdollista saada komentorivillä. Näitä ovat muun muassa whatsup-viestiohjelman desktop-versio, tiimityöskentelyyn tarkoitettu slack, sekä ohjelmointiin käytettävät JetBrainssin softat kuten IntelliJ ja WebStorm.

Hieman googlettelin ja tältä sivustolta löysin komennot whatsupin lataamiseen ja asenneukseen, mutta se näytti hieman työläältä saada yhteen komentoon, enkä lähtenyt yrittämäänkään.

Nappasin unelmieni komentoriviin siis korvaavia ohjelmia, vlc ja chrome taisivat olla ainoita ohjelmia, joita käytän ihan muutenkin. Bluefish tuli korvaamaan menetettyjä IDE:itä.

“sudo apt-get install vlc chromium-browser bluefish”

Kolmas tehtävä

d) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Ensimmäinen asennus

Innostuin terminaliin saatavista peleistä, joten latasin niitä muutaman. Ensimmäinen niistä oli sudoku. Helppokäyttöinen, täysin perinteinen sudoku jossa liikutaan nuolinäppäimillä ja numerot valitaan numeronäppäimistä.

“sudo apt-get install sudoku”

sudoku.png

Toinen asennus

Aikatauluttaminen on aina jees, eikä kalenteria jaksa ikinä kantaa mukana. Asensin Calcursen, joka on kalenteri ja aikataulutusohjelma komentoriville käytettäväksi.

“sudo apt-get install calcurse”

Kokeilin käyttöä lisäämällä pari menoa. Ohjeet lukevat selkeästi alakulmassa, tab:illa liikutaan näkymästä toiseen.

kalenteri.png

Kolmas asennus

Kolmantena asensin linuxille saatavan miinaharavan, nimeltää Freesweep.

Tuli pelattua muutama erä, hieman mysteeriksi jäi kuinka päästä takaisin asetuksiin ja muuttaa kenttää haastavammaksi. Mutta ainakin toimi.

“sudo apt-get install freesweep”

miina.png

 

Ensimmäinen palautus (Edit: 22.1.18)

Pienten haasteiden jälkeen, tässä ovat Linux-palvelimena kurssin ensimmäisen tehtävänannon palautettavat tehtävät.

Ensimmäinen tehtävä

a) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa. Tämä kohta ei edellytä asentamista – jos kuitenkin asennat, ota ensin varmuuskopiot.

Loin oman Linux-livetikkuni luokkakaverin läppäristä, sillä oma kannettavani oli huollossa hajonneen akun vuoksi. Läppärini, joka oli lainattu MacBook Pro, ei ollut omani, eikä sen tiedostoja oltu varmuuskopioitu, joten en ottanut riskiä ja tehnyt tikkua siksi omalla koneella.

Linux-livetikun luonti

  1.  Ensin latasin koneelle torrenttina Xubuntun sivuilta Artful Aardvarkin 64-bittisen version 17.10.1
  2. Sen jälkeen siirryin lataamaan Unetbootin
  3. Kun Unetbootin oli asennettu ja Xubuntun iso-tiedosto oli ladattuna koneella, avasin unetbootinin, valitsin sieltä annetun ladatun iso-tiedoston, jolloin unetbootin muutti usb-tikun Linux-livetikuksi.
  4. Tikun luomisen jälkeen siirryin omalle läppärilleni, käynnistin sen uudelleen ja painoin heti käynnistyksen alussa alt-nappulaa, joka käynnisti Startup Managerin.
  5. Valitsin EFI-bootin, joka käynnisti käynnisti Xubuntun koneeseen liitetystä usb-tikusta.

Linux-livetikun testaus

Nyt kun xubuntu näytti pyörivän koneella, huomasin, että kone ei yhdistänyt verkkoon. Ongelmana oli se, että kone ei edes tarjonnut mahdollisuutta wifiin, ainoastaan piuhalla yhteyden saaminen oli mahdollistettu. Lopulta ongelman sai ratkaistua tunnilla saaduilla neuvoilla seuraavasti:

  1. Kone verkkoon ethernet-kaapelilla
  2.  Terminaalista komento “apt-get update”
  3.  Seuraavaksi komento “apt-get dist-upgrade”
  4.  Viimeisenä avataan Xubuntusta “Additional drivers” ja valitaan kohta “Using Broadcom 802.11 Linux STA wireless driver source from bcmwl-kernel-source (proprietary)” ja painetaan “Apply changes”.

Tämän jälkeen testasin selaimesta verkon toimivuutta. Hyvin pääsi moodlesta googleen, eli toimi! Konetta ei vain parane käynnistää uudelleen, vaan tehtävät tekee mielellään yhteen syssyyn, sillä muutokset on tehtävä uudelleen joka kerta livetikun uudelleenkäynnistyksen jälkeen.

Toinen tehtävä

b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’).

Avasin terminaalin ja kirjoitin komennon “sudo lshw -short -sanitize”, jonka jälkeen terminaaliin ilmestyikin pitkä listaus oman läppärin ominaisuuksista (kuva alla)

lshw.png

Siitä näkyi muun muassa:

  • Koneen malli, MacBookPro, 9,2 tuumaa
  • Prosessori, Intel(R) Core(TM) i7-3520M C

Kolmas tehtävä

c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Ensimmäinen asennus

Chromium asennettu komennolla “sudo apt-get install chromium-bs”. Ensin yritin virheellisesti asentaa sitä komennolla “sudo apt-get install chromium”, jonka jälkeen tulikin nopeasti virheilmoitus:

Package chromium is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
chromium-bsu

Korjasin komentoa, jonka jälkeen ohjelma asentui. Kyseessä ei kuitenkaan ollut Linuxille tehty verrokki Googlen Chrome-selaimesta, mitä luulin asentavinani, vaan peli. No, oli sentään viihdyttävä sellainen. Ammutaan vihollisaluksia ja keräillään linux-pingviinejä.

 

install1.png

Toinen asennus

Toinen kerta toden sanoo. Chromium-selain asennettu komennolla “sudo apt-get install chromium-browser”

install2.png

Kolmas asennus

Viimeisenä asennuksena oli Gearyn email-client, komennolla “sudo apt-get install geary”. Ainoana ongelmana oli, että sisäänkirjautuminen ei onnistunut, sillä gmail ilmeisesti ei pidä sitä hyväksyttävänä. Puhelimeen kilahti välittömästi sähköpostia estetystä kirjautumisesta.

install3.png

Neljäs tehtävä

d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.

Chromium-browser

Chromiumin etusivulta löytyi suoraan tieto ohjelman lisenssistä.

licensed under a Creative Commons Attribution 2.5 license, and examples are licensed under the BSD License

Tietämykseni lisensseistä on lähes olematon, joten lähdin selvittämään googlettamalla asiaa. Wikipedian sivuilta löytyikin selvennystä BSD-lisenssiin seuraavasti:

BSD-lisenssi ei vaadi lähdekoodin julkaisemista, jos lisensoitua ohjelmaa levittää eteenpäin. BSD-lisensoidun tuotteen voi myös julkaista toisella lisenssillä, jonka ei tarvitse olla BSD-yhteensopiva. Tästä seuraa, että BSD-lisensoidulle koodille kuka tahansa saa käytännössä tehdä aivan mitä haluaa.

Creative Commos Attribution 2.5 lisenssistä löytyi seuraavaa wikisourcesta:

You are free:

  • to copy, distribute, display, and perform the work
  • to make derivative works
  • to make commercial use of the work

Under the following conditions:

  • Attribution. You must attribute the work in the manner specified by the author or licensor.

  • For any reuse or distribution, you must make clear to others the license terms of this work.

  • Any of these conditions can be waived if you get permission from the copyright holder.

Tiivistettynä linsensoidun tuotteen kopiointi ja jakaminen on sallittua kaupallisesti ja ilman, kunhan alkuperäisen tekijälle annetaan krediittiä tämän ohjeiden mukaisesti, sekä ohjeistus siitä on laitettava näkyville. Kaikkia näitä sääntöjä voidaan muokata tekijän suostumuksella.

Chromium-bs

Tämän pelin lisenssi jäi mysteeriksi.

Geary

Wikipedian mukaan Gearyn lisenssi kuuluu GNU:n Lesser General Public lisenssiin.

GNU-projektin lisenssi, jonka tarkoituksena on tehdä kompromissi GPL:n ja yksinkertaisempien lisenssien (BSD, MIT jne.) välillä.

Viides tehtävä

e) Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin. (Päivitetty: korjasin tämän kohdan tunnuskirjaimen d->e)

MS Word —> LibreOffice Writer

Käyttötarkoitus tekstin muokkaaminen

Google Chrome —> Google Chromium

Googlen kehittämä selain nettisivujen tutkailuun.