Prototyypin Rakentaminen

http://terokarvinen.com/2017/prototyypin-rakentaminen-bus4tn007-8-w22

Aikaisemmilla Linux-kursseilla Tero mainitsi, että hän pitää kesällä kurssin jolla suunnitellaan ja rakennetaan oma robotti/prototyyppi. Minulla heräsi heti mielenkiinto ja päätin kesällä kerätä muutamat ylimääräiset opintopisteet ja samalla oppia jotain uutta ja mielenkiintoista!

Kurssi alkoi 29.6 maanantaina ja se jatkuu saman viikon perjantaille. Minulla ei ollut mitään aikaisempaa kokemusta robottien rakentamisesta. Kurssilla käytetään Arduino-nimistä alustaa ja ohjelmistoympäristöä. Arduino on hyvin yksinkertainen, koska siinä ei ole käyttöjärjestelmää vaan se ajaa vain sitä koodia mitä sille on kirjoitettu.

Maanantain aluksi Tero kertoi vähän perustietoa arduinosta ja kuinka se toimii. Kokeillime muutamia sensoreita ja vahvuksia ja kuinka ne toimivat. Lopuksi aloimme miettimään, että minkälaista projektia haluaisimme toteuttaa. Jotkut muut oppilaat olivat käyneet Teron toisen kurssion IoT laitteista, joissa oli käyty Arduinoa läpi ja se oli heille ennestään tuttu, heillä oli jo valmiita ideoita projekteista. Itse hain inspiraatiota netistä ja selasin projekteja, jotka näyttivät hauskoilta ja aloittelija voisi niissä onnistua.

Tiistai aamuna löysin hauskan projektin päätin tehdä siitä oman version, jossa hedelmä asetetaan laatikon päälle ja laatikosta nousee lippu jossa on kuva kyseisestä hedelmästä. Aloitin tutkimalla kuinka vastusmittari toimii, linkin mukainen kytkentä ei toiminut joten googlasin eri vastusmittarin valmistus ohjeet. Päivän päätteeksi sain mittarini toimimaan ja kokeilin yksinkertaisella mittauskoodilla eri vastuksia.

const int fruitSense = 0;
int fruitResistance, high = 0, low = 1023;

void setup(){
Serial.begin(115200);
}

void loop(){
fruitResistance = analogRead(fruitSense);
Serial.print("Resistance:");
Serial.print(fruitResistance);
Serial.print("\n");
delay(1000);
}

Keskiviikkona Tero aloitti kertomalla Servoista, jotka ovat siis pieniä moottoreita Arduinolle. Aloin ottamaan selvää miten servot toimivat. Pienellä koodinpätkällä testailin miten saan servot liikkumaan haluamaani kohtaan.

#include 

Servo myservo;  

void setup() {
myservo.attach(9);  
}
void loop() {
      myservo.attach(9);  
      delay(15);
      myservo.write(90);
      delay(1000); 
      myservo.detach();
      delay(1000);      
      
      myservo.attach(9); 
      delay(15);  
      myservo.write(180);
      delay(1000); 
      myservo.detach();
      delay(1000);                  
}

Yhdistin kaksi servoa minun vastusmittariini, kytkentä näyttää tältä.setup.png

Lisäsin myös vastusmittariini servojen koodit. Valmis koodi löytyy täältä. Lopuksi viellä aloin askartelemaan pahvilaatikkoa jonne saan viritettyä Arduinoni ja osani.

Torstaina viimeistelin laatikkoni ja laitoin kaikki paikalleen. Tarkistin viellä, että koodi toimii ja laitoin oikeat servot vastaamaan oikeaa hedelmää.

IMAG0245IMAG0246

Laatikon päällä on kaksi rautalankaa joiden päälle laitetaan hedelmä (tai kurkku) ja Arduino tunnistaa mikä hedelmä on kyseessä hedelmän vastuksen perusteella. Tämän jälkeen servot nostavat laatikon sisältä lipun ylös joka vastaa hedelmää laatikon päällä.

IMAG0247IMAG0248

Olen viellä todellakin aloittelija Arduinon käytössä. Teron luennoilta ja tätä projektia tehdessä opin paljon uutta Arduinon maailmasta!

Advertisements

Palvelinten hallinta H4

http://terokarvinen.com/2017/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-2-%e2%80%93-5-op-uusi-ops-loppukevat-2017-p2

a) Master-slave. Aloita tyhjästä koneesta. Tee yhdestä koneesta orja ja toisesta herra. Kokeile, että orja saa herralta modulin. (Voit käyttää labraa, kun se on tyhjä. Laita mukaan ‘puppet cert –list –all’, ‘tail /var/log/auth.log’, ‘tail /var/log/syslog’).

Klo 12.50 Aloitin tekemään tehtävää kaverini Yaelin kanssa (https://ykermorvant.wordpress.com/) päätimme, että minä teen puppetmaster koneen ja Yael tekee puppet orjan.

Klo 12.51 Aloitin perus komennoilla vaihtammalla näppäimistön kielen ja päivittämällä paketit. Näiden jälkeen vaihdoin hostnimen apinaksi ja käynnistin daemonin uudestaa.

setxkbmap fi 
sudo apt-get update
sudo hostnamectl set-hostname apina
ping apina
sudo service avahi-daemon restart
ping apina.local

Klo 12.59 Sen jälkeen vaihdoin veillä hosts tiedostosta xubuntu nimen apinaksi

 sudoedit /etc/hosts

Screenshot_2017-05-02_10-24-28

Klo 13.05 Sen jälkeen on aika asentaa puppetmaster.

 sudo apt-get -y install puppetmaster

Klo 13.06 Puppetmasterin asenettua, pysäytetään se ja poistetaan vanhat sertifikaatit.

sudo service puppetmaster stop
sudo rm -r /var/lib/puppet/ssl

Klo 13.08 Tämän jälkeen laitoin apina nimen puppetin konfiguraatio .conf tiedostostoon.

sudoedit /etc/puppet/puppet.conf

screenshot_2017-05-02_10-30-43.png

Klo 13.10 Käynnistetään viellä puppetmaster uudestaan.

sudo service puppetmaster start

Tällä välin Yael asensi puppetin ja muokkasi sen konfiguraatio tiedostoon apinan serveriksi.

sudo apt-get -y install puppet
sudoedit /etc/hosts/puppet/puppet.conf

Klo 13.15 Master koneella tein viellä apinaviidakko moduuliin ja sinne manifests kansion ja init.pp tiedoston minne laitoin helloworldin sisään.

cd /etc/puppet/modules
sudo mkdir apinaviidakko
cd apinaviidakko
sudo mkdir manifests
cd manifests
sudoedit init.pp
cd ...
cd ...
cd ...
cd manifests
sudo nano site..pp
class {"apinaviidakko":}

screenshot_2017-05-02_10-36-451.png

Klo 13.20 Loppuun viellä komennolla listataan yhteyden ottaneet tietokoneet ja hyväksytään niiden sertifikaatit.

sudo puppet cert list
sudo puppet cert sign (koneen nimi)

Apinat.txt löytyi slave tietokoneesta!

apina

Puppetin cert list.

certlist1.png

Auth logit.

tailauth1.png

Sys logit.

tailsyslog1.png

Palvelinten hallinta H3

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

a) Package-File-Server. Asenna ja konfiguroi jokin demoni package-file-server -tyyliin. Tee jokin muu asetus kuin tunnilla näytetty sshd:n portin vaihto.

b) Modulit Gitistä. Tee skripti, jolla saat nopeasti modulisi kloonattua GitHubista ja ajettua vaikkapa liverompulle. Voit katsoa mallia terokarvinen/nukke GitHub-varastosta.

c) Vaihda Apachen default VirtualHost Puppetilla siten, että sivut ovat jonkun kotihakemistossa ja niitä voi muokata normaalin käyttäjän oikeuksin.

a) Klo 18.56 Boottasin Xubuntun livetikulta taas läppärille ja aloitin hommat perus komennoilla.

setxkbmap fi
sudo apt-get update

Klo 18.57 Näppäimistön kielenvaihdoin ja pakettien päivittämisen jälkeen asensin puppetin.

sudo apt-get install puppet

Klo 19.04 Aloitin tekemään tarvittavia kansioita ja tiedostoja puppettiin.

cd /etc/puppet/modules
sudo mkdir apache
cd apache
sudo mkdir manifests
cd manifests
sudo nano init.pp
cd ..
sudo mkdir templates
cd templates
sudo nano index.html.erb

Klo 20.32 init.pp sisälle laitoin Apachen asennus asetukset ja index.html.erb sisään perus html tagit.

class apache2 {
        
        exec { "apt-update":
                command => "/usr/bin/apt-get update"
        }
   	
        package { "apache2":
		ensure => "installed"
                allowcdrom => "true",
	}

	service { "apache2":
        	ensure => "running",
        	enable => "true",
        	require => Package["apache2"],
    	}

	exec { "userdir":
        	notify => Service["apache2"],
        	command => "/usr/sbin/a2enmod userdir",
        	require => Package["apache2"],
    	}
        file {"/home/xubuntu/public_html":
                ensure => "directory"
        }
        file { "/home/xubuntu/public_html/index.html":
                content => template("apache/index.html.erb"),
                require => File["/home/xubuntu/public_html"],
        }
 }

Koodi päivittää ensin paketit, asentaa sitten apache2 ja varmistaa että se on käynnissä, enabloi käyttäjien kotihakemistot ja tekee testi sivun templates kansion mallista.

Klo 20.35 Otetaan vielä moduuli käyttöön koodilla.

sudo puppet apply -e 'class {apache:}'

screenshot_2017-04-18_18-00-38.png

Klo 20.36 Localhost näyttää xubuntu käyttäjän kotihakemistossa testisivua onnistuneesti!

Klo 20.46 Menin githubin sivuille ja tein uuden projektin itselleni nimeltä “h3”. Asensin seuraavaksi gitin ja kloonasin tekemäni moduulin git kansioon ja uploadasin sen sinne.

sudo apt-get install -y git 
git clone https://github.com/1600571/h3.git
sudo cp -R /etc/puppet/modules/apache/ /home/xubuntu/h3

git add .
git commit
git pull
git push

Klo 21.01 Tein uudet shell scriptit start.sh,

setxkbmap fi
sudo apt-get update
sudo apt-get install -y git puppet
git clone https://github.com/1600571/h3.git
cd h3
bash apply.sh

ja apply.sh

sudo puppet apply --modulepath /home/xubuntu/h3/ -e 'class {apache:}'

Lisäsin ne viellä gittiin lopuksi.

wget https://raw.githubusercontent.com/1600571/h3/master/start.sh
bash start.sh

Klo 21.29 Komennolla voi ladata scriptin kätevästi gitistä ja se ajaa itsestään loput. Testasin viellä käynnistää tietokoneen uudestaan ja ajaa komennon ja se toimi virheettä!

Lähteet:

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

https://github.com/terokarvinen/nukke

http://simosuominen.com/index.php/2017/04/14/palvelinten-hallinta-kotitehtavat-3/

https://soivi.net/2013/installing-apache-and-php-with-puppet-module/

https://samuelkontiomaa.com/2013/11/01/hello-puppet-module/

Palvelinten hallinta H2

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

a) Tee tämän kotitehtävän raportti GitHubiin MarkDownilla

b) Tee puppet-moduli, joka tekee asetukset jollekin komentorivi- tai graafisen käyttöliittymän ohjelmalle.

Klo 17.22 Aloitin tehtävän perus komennoilla alkuun “setxkbmap fi” jotta saan ääkkösen käyttöön. Ajoin myös perään “sudo apt-get update” komennon, jotta paketit ovat päivittyneet.

Klo 17.24 Tehtävä piti palauttaa GitHubiin MarkDown tiedostona joten päätin aloittaa kirjoittamaan markdown tiedostoa komennolla “nano h2.md”

Klo 17.26 Päätin nopeasti asentaa Gitin valmiiksi komennolla “sudo apt-get install git”

Klo 17.33 Kirjauduin GitHubiin ja tein sinne H2 repositoryn ja kopion linkin githubiin. Komennolla “git clone https://github.com/1600571/h2.git” kopion sen linuxisille ja siirsin jo valmiiksi tehdyn H2.md tiedoston uuteen Git kansiooni komennolla “cp /home/xubuntu/H2.md /home/xubuntu/h2/”

Klo 17.37 Nyt on aika asentaa puppet! “sudo apt-get install puppet”

Klo 17.45 Päätin tehdä puppetilla aliaksen vaikka date komennolle niinkuin tunnilla. Aloitin ensin tekemällä puppetin kansiohin alikansiot manifests ja templates. “cd /etc/puppet/modules/aliastesti/manifests” ja cd /etc/puppet/modules/aliastesti/templates”

Klo 17.48 Manifests kansioon pitä viellä tehdä init.pp tiedosto johon sisälle laitetaan seuraava koodinpätkä joka määrittelee mitä templatea puppet käyttää.

class aliastesti {

file {‘/etc/bash.bashrc’: content => template(‘aliastesti/bash.bashrc.erb’) }

}

Klo 17.57 Olin laittanut manifests ja templates kansiot väärään kohtaan puppetin kansioissa joten jouduin siirtelemään ne “aliastesti” nimisen kansion alle jossa ne kuuluivatkin olla. Säätämisen jälkeen siirryin “cd /etc/” kansioon ja avasin “nano bash.bashrc” tiedoston. Kirjoitin sinne ylös aliakseni “alias d=”date”” ja sen jälkeen kopion sen puppetin kansioon erb tiedostopäätteellä. “sudo cp /etc/bash.bashrc /etc/puppet/modules/aliastesti/templates/bash.bashrc.erb”

Klo 18.00 Lopuksi viellä ajoin “sudo puppet apply -e ‘class {“aliastesti”:}’

Klo 18.02 Avasin terminaalin uudestaan ja d kirjaimella sain date komennon toimimaan.

Klo 18.03 Sitten loppuun viellä palautus GitHubiin. Komennoilla “git add .” “git commit”. Commit komento ei onnistu ennenkuin olet määrrittänyt sähköpostisi ja nimesi. Tämä onnistuu komennoilla mitä git kertoo sinullet terminaalissa. Kun sähköposti ja nimi on kerrottu enään viellä “git pull” ja “git push”. Pushatessa se kysyy tunnuksiasi GitHubiin, kun ne syöttää on tiedosto uploadattu sinne!

Linkki GitHubiin,

https://github.com/1600571/h2/blob/master/H2.md

Palvelinten hallinta H1

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

a) Kaksi resurssia. Tee ja testaa moduli, joka käyttää ainakin kahta eri resurssia (esim. file ja package).

b) Katso video samasta aiheesta Puppetista ja toisesta vastaavasta järjestelmästä (esim. Salt) ja kirjoita niistä analyyttinen ja vertaileva kirjoitus.

a) Klo 16:43 Boottasin xubuntun livetikulta läppäriini. Olin Keskiviikkona kipeä joten jouduin tätä ennen etsimään puppetin käyttöohjeita netistä.

Klo 16:45 Ajan perus komennot “setxkbmap fi” ja sudo apt-get update” joilla, vaihdan komentorivin näppäimistön suomalaiseksi ja päivitän paketit. Asennan tämän jälkeen puppetin komennolla “sudo apt-get install puppet“.

Klo 16:55 Menin ensin puppetin kansioihin komennolla cd /etc/puppet/modules ja tein sinne kansion omalle moduulilleni sudo mkdir moduulitesti ja moduulitesti kansioon sisälle pitää tehdä viellä kansio manifesteille, joten komennot cd moduulitesti/ ja sudo mkdir manifests.

Klo 16.57 Manifests kansioon lisään init.pp tiedoston komennolla sudoedit /etc/puppet/modules/moduulitesti/manifests/init.pp.

Klo 17.05 Luokkalaiseni oli kertonut, että koodi ei toimi ilman osaa jossa lukee “allowcdrom => ‘true’,” joten laitoin sen sinne loppuun.

Screenshot_2017-04-04_14-08-34

Päätin asentaa lempitesti ohjelmani cowsayn, koska se on yksikertainen ja helppo käyttää.

Klo 17.13 Koodin jälkeen pitää viellä laittaa muutokset voimaan komennolla sudo puppet apply -e’class{moduulitesti:}’ ja sitten testaamaan toimiiko?

Screenshot_2017-04-04_14-11-08

Ja näyttää toimivan!

b) En tiennyt/päässyt IT PRO messuille joten päätin katso vertailu videon puppetista, chefistä, saltstackista ja ansiblesta.

Skaalautuvuus on kaikissa ohjelmissa loistava ja ei tuota ongelmia.

Asennuksen helppous: Puppet ja chef toimii master-agent periaatteella. Puppet/chef server asennetaan master laitteelle ja puppet/chef client asennetaan agentiksi asiakas laitteelle. Chef sovelluksessa on viellä extra workstation vaihtoehto jossa voi testata ensin asetukset ennenkuin niitä pusketaan eteenpäin. Saltstackissa on sama periaate mutta nimet ovat master ja minions. Ansible on näistä helpoin asentaa, siinä on vain master laite käytössä ja se käyttää ssh:ta asiakasyhteyksiin.

Saatavuus kaikissa on erittäin suuri saatavuus, jos joku serveri menee nurin on kaikissa sovelluksissa varaserverit valmiina varalle.

Hallinto puppet ja chef ovat aika vaativia koska ne käyttävät koodikieltä. Puppet käyttää omaa kieltään Puppet DSL ja chef käyttää Ruby DSL. Molemmissa asiakas ottaa asetukset serveriltä.  Saltstack ja Ansible ovat taas helpompia oppia ja hallita asetuksia. Näissä sovelluksissa taas serveri lähettää asetukset asiakas laitteille.

Yhteensopivuus kaikki näistä sovelluksista toimii myös windows laitteilla, mutta Master laite ja Ansiblessa serveri pitää olla Linux/Unix laitteella.

Lähteet:

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

http://terokarvinen.com/2013/hello-puppet-revisited-%E2%80%93-on-ubuntu-12-04-lts

https://www.puppetcookbook.com/posts/install-package.html

https://ykermorvant.wordpress.com/2017/04/03/h1-linux-server-management/

Linux Palvelimet H5

Klo 13.44 Aloitetaan käynnistys linux livetikulta. Päivitän paketit samalla ja vaihdan näppäimistön suomeksi.

Klo 13.45 Laitan itselleni salasanan koska aion työskennellä palvelimien kanssa.

Klo 13.47 Suuntaan education.github.com:iin jossa oli koodi digital oceaniin.

Klo 13.55 Rekisteröidyttyäni Digital Oceaniin on aika tehdä virtuuali serveri tai “droplet” niinkuin he sitä kutsuvat. Valitsen imageista Ubuntun 16.04 version.

5e8b69f1bc302f63d57793598065f47f

Hinnaksi valitsen $10 kuukaudelta.

hinta.png

Maaksi valitsin Saksan ja Frankfurtin serverin.

maa

En ottanut mitään lisätarjouksia vaan siirryin suoraan nimen valitsemiseen.nimi

Klo 14.05 Dropletin asennettua sähköpostiin oli lähetetty rootin salasana. Kirjaudun sillä palvelimelle ssh root@iposoite asennettuani ssh:n ensin komennolla sudo apt-get install shh.

Klo 14.10 Kirjauduttuani palvelimelle, root vaati vaihtamaan salasanan ja vaihdoin sen omakseni.

Klo 14.11 Laitoin palomuuriin aukon ssh yhteydelle sudo ufw allow 22/tcp komennolla ja käynnistin palomuurin sudo ufw enable komenolla.

Klo 14.12 Tein käyttäjän sudo adduser tom ja annoin sille admin oikeudet sudo adduser tom adm  ja sudo adduser tom admin.

Klo 14.14 Otin yhteyden tom@iposoite. Ajan komennon sudo apt-get update palvelimella.

Klo 14.23 Menin komennolla sudoedit/etc/ssh/sshd_config tiedostosta muuttamaan PermitRootLogin Yes kohdan No, jotta rootilla ei pysty enään kirjautumaan. ‘

Klo 14.27 Aloitin asentamaan apachea palvelimelle sudo apt-get -y install apache2. Teen myös sille reiän palomuuriin sudo ufw allow 80/tcp.

Klo 14.31 Testasin nopeasti firefoxilla palvelimen ip osoitetta ja apachen2 default sivu toimi. Vaihdoin sen pois heti sen jälkeen komennolla echo “testi” |sudo tee /var/www/html/index.html.

Klo 14.48 Kävin varaamassa freenom.com osoitteesta itselleni osoitteen tomkurenmaa.tk. Varattuani kyseisen nimen menin sivujen dns managementtiin ja vaihdoin aseutkset osoittamaan palvelimelleni.

dnsmanagement.png

Klo 15.01 Apachen virtual hostin aloitin komennoilla

sudo a2enmod userdir
sudo service apache2 restart
mkdir public_html
cd public_html
nano index.html
sudoedit /etc/apache2/sites-available/tomkuremaatk.conf

Configurointi tiedostoon laitoin koodin

<VirtualHost *:80>
 ServerName tomkurenmaa.tk
 ServerAlias http://www.tomkurenmaa.tk

DocumentRoot /home/tom/public_html/

<Directory /home/tom/public_html/>
 Require all granted
 </Directory>
 </VirtualHost>

Klo 15.16 Tuloksena on nyt toimiva tomkurenmaa.tk osoite jossa kylläkin lukee vain testi… Mutta siitä on hyvä aloittaa.

Screenshot_2017-03-08_10-33-26

Linux Palvelimet H4

Klo 15.30 Livetikku läppäriin kiinni ja linux pyörimään. Aluksi yhdistäminen wifiin, että netti toimii. Ajan perus komennot “setxkbmap fi” ja “sudo apt-get update”

Klo 15.31 Availen Teron sivuilta ohjeet LAMPin asennukseen.

$ setxkbmap fi
$ sudo apt-get update

Klo 15.35 Ensiksi portteihin reiät komennoilla.

$ sudo ufw allow 22/tcp
$ sudo ufw allow 80/tcp

Tulimuuri pitää myös käynnistää

$ sudo ufw enable

Klo 15.39 Apache asentumaan komennolla

$ sudo apt-get install apache2

Testaan myös toimiiko se tässä vaiheessa avaamalla localhostin firefoxilla.

$ firefox "http://localhost"

Klo 15.40 Näyttäisi toimivan, enabloimalla käyttäjähakemistot ja reboottaamalla apachen.

$ sudo a2enmod userdir
$ sudo service apache2 restart

Klo 15.42 Teen kansion kotihakemistoon.

$ cd
$ mkdir public_html

Klo 15.45 Tarkistan viellä “whoami” komenolla, että käyttäjäni on xubuntu ja testaan firefoxilla sivuja osoitteesta “http://localhost/~xubuntu. Kaikki toimii.

Klo 15.47 Seuraavaksi vuorossa MySQL asentaminen. Asennan sen komennolla.

$ sudo apt-get -y install mysql-server mysql-client

Klo 15.50 MySQL vaatii salasanan root käyttäjälle asennuksen yhteydessä.

Klo 15.51 Kirjaudun sisään tietokantaan komennolla

$ mysql -u root -p

Klo 15.52 Aloitan tietokannan tekemisen tekemällä “auto” nimisen  tietokannan utf8 merkistöllä.

mysql> CREATE DATABASE auto CHARACTER SET utf8;

Klo 15.54 Tietokanta tarvitsee viellä salasanan

mysql> GRANT ALL ON auto.* TO auto@localhost IDENTIFIED BY 'password-here';

Klo 15:59 Aloitan tietokannan muokkauksen valitsemalla “auto” tietokannan

mysql> USE auto;

Klo 16.00 Teen sinne taulukon nimeltä “autos”

mysql> CREATE TABLE autos (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024));

Klo 16.01 Laitan “autos” taulukkoon muutaman auton.

mysql> INSERT INTO autos(name) VALUES ("volvo");
mysql> INSERT INTO autos(name) VALUES ("mersu");
mysql> INSERT INTO autos(name) VALUES ("bemmi");

Klo 16.07 Kirjaudun ulos tietokannoista ja teen public.html kansioon index.php tiedoston phpta varten.

$ cd
$ nano public_html/index.php

Klo 16.10 Tein nopean html koodin autoista ja kokeilin teron koodia

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Autoja</title>
</head>
<body>
<p> Lista autoista </p>
<?php
// public_html/index.php - Read MySQL from PHP
// (c) 2016 Tero Karvinen http://TeroKarvinen.com

// MySQL Login
$user='auto';
$password='password-here';

// Data Source Name i.e. connection details
$database=$user;
$dsn="mysql:host=localhost;charset=UTF8;dbname=$database";

// Open Connection, create new object of PDO class
$pdo=new PDO($dsn, $user, $password);

// Perform SQL Query
$pdoStatement=$pdo->prepare('SELECT * FROM autos;');
$pdoStatement->execute();
$hits=$pdoStatement->fetchAll();

// Print the $hits Array
foreach($hits as $row) {
 echo "<p>".$row['id']." ".$row['name']."</p>\n";
}
?>
</body>
</html>

Klo 16.11 Nettisivut näyttävät jotain php koodia, jossain on vika.

Klo 16.32 Asensin apachen php kirjastot ja käynnistin apachen uudestaan.

$ sudo apt-get install apache2 libapache2-mod-php php-mysql
$ sudo service apache2 restart

Klo 16.43 Muistin, että apachen2 jostain tiedostosta piti enabloida kotihakemisto muuttamalla koodia.

$ grep -r php /etc/apache2/

Etsin grepillä kyseisen tiedoston ja muokkaan sitä.

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

Klo 16.45 Ja sitten viellä apache2 uudelleenkäynnistys

$ sudo service apache2 restart

Klo 16.46 Vihdoin nettisivuni toimivat php koodin kera!

Screenshot_2017-02-13_14-46-47.png

Klo 16.58 Ajoin viellä lopuksi komennon jolla kerätään eri logit tekstitiedostoksi.

tail /var/log/syslog /var/log/auth.log /etc/lsb-release /var/log/apache2/*.log /proc/uptime >log.txt

==> /var/log/syslog <==
Feb 13 14:44:47 xubuntu systemd[1]: Starting LSB: Apache2 web server…
Feb 13 14:44:47 xubuntu apache2[18278]:  * Starting Apache httpd web server apache2
Feb 13 14:44:47 xubuntu apache2[18278]: AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Feb 13 14:44:48 xubuntu apache2[18278]:  *
Feb 13 14:44:48 xubuntu systemd[1]: Started LSB: Apache2 web server.
Feb 13 14:47:22 xubuntu upowerd[4820]: (upowerd:4820): UPower-Linux-WARNING **: energy 57.260000 bigger than full 57.250000
Feb 13 14:47:56 xubuntu dbus[4340]: [system] Activating via systemd: service name=’org.freedesktop.hostname1′ unit=’dbus-org.freedesktop.hostname1.service’
Feb 13 14:47:56 xubuntu systemd[1]: Starting Hostname Service…
Feb 13 14:47:56 xubuntu dbus[4340]: [system] Successfully activated service ‘org.freedesktop.hostname1’
Feb 13 14:47:56 xubuntu systemd[1]: Started Hostname Service.

==> /var/log/auth.log <==
Feb 13 14:39:01 xubuntu CRON[18166]: pam_unix(cron:session): session closed for user root
Feb 13 14:43:53 xubuntu sudo:  xubuntu : TTY=pts/6 ; PWD=/home/xubuntu ; USER=root ; COMMAND=sudoedit /etc/apache2/mods-available/dir.conf
Feb 13 14:43:53 xubuntu sudoedit: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Feb 13 14:44:00 xubuntu sudoedit: pam_unix(sudo:session): session closed for user root
Feb 13 14:44:16 xubuntu sudo:  xubuntu : TTY=pts/6 ; PWD=/home/xubuntu ; USER=root ; COMMAND=sudoedit /etc/apache2/mods-available/php7.0.conf
Feb 13 14:44:16 xubuntu sudoedit: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Feb 13 14:44:30 xubuntu sudoedit: pam_unix(sudo:session): session closed for user root
Feb 13 14:44:46 xubuntu sudo:  xubuntu : TTY=pts/6 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/sbin/service apache2 restart
Feb 13 14:44:46 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Feb 13 14:44:48 xubuntu sudo: pam_unix(sudo:session): session closed for user root

==> /etc/lsb-release <==
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=”Ubuntu 16.04.1 LTS”

==> /var/log/apache2/access.log <==
192.168.1.90 – – [13/Feb/2017:14:33:07 +0000] “GET /~xubuntu/ HTTP/1.1” 304 181 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:33:08 +0000] “GET /~xubuntu/ HTTP/1.1” 304 180 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:33:09 +0000] “GET /~xubuntu/ HTTP/1.1” 304 180 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:19 +0000] “GET /~xubuntu/ HTTP/1.1” 200 995 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:20 +0000] “GET /~xubuntu/ HTTP/1.1” 200 995 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:20 +0000] “GET /~xubuntu/ HTTP/1.1” 200 995 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:41 +0000] “GET /favicon.ico HTTP/1.1” 404 504 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:41 +0000] “GET /favicon.ico HTTP/1.1” 404 503 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:35:45 +0000] “GET /~xubuntu/ HTTP/1.1” 200 995 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”
192.168.1.90 – – [13/Feb/2017:14:44:49 +0000] “GET /~xubuntu/ HTTP/1.1” 200 394 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”

==> /var/log/apache2/error.log <==
[Mon Feb 13 14:28:54.824765 2017] [core:notice] [pid 17145] AH00094: Command line: ‘/usr/sbin/apache2’
[Mon Feb 13 14:30:26.417597 2017] [mpm_prefork:notice] [pid 17145] AH00169: caught SIGTERM, shutting down
[Mon Feb 13 14:30:27.528960 2017] [mpm_prefork:notice] [pid 17238] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Mon Feb 13 14:30:27.528995 2017] [core:notice] [pid 17238] AH00094: Command line: ‘/usr/sbin/apache2’
[Mon Feb 13 14:31:32.081463 2017] [mpm_prefork:notice] [pid 17238] AH00169: caught SIGTERM, shutting down
[Mon Feb 13 14:31:33.197464 2017] [mpm_prefork:notice] [pid 18058] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Mon Feb 13 14:31:33.197490 2017] [core:notice] [pid 18058] AH00094: Command line: ‘/usr/sbin/apache2’
[Mon Feb 13 14:44:46.518845 2017] [mpm_prefork:notice] [pid 18058] AH00169: caught SIGTERM, shutting down
[Mon Feb 13 14:44:47.633970 2017] [mpm_prefork:notice] [pid 18296] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Mon Feb 13 14:44:47.633997 2017] [core:notice] [pid 18296] AH00094: Command line: ‘/usr/sbin/apache2’

==> /var/log/apache2/other_vhosts_access.log <==

==> /proc/uptime <==
5481.04 21585.35

 

 

 

 

 

Linux Palvelimet H3

Klo 14.03 Linux käyntiin ja sudo apt-get installilla apache2 asentumaan.

Klo 14.11 Luin Teron sivuja ja siellä olikin yksinkertainen ohje apachen asennukseen.

http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

Klo 14.15 Avasin firefoxilla localhostin sivut.

screenshot_2017-02-07_12-13-02

Klo 14.16 Etsin /var/log/apache2/ kansiosta access.login ja avasin sen

screenshot_2017-02-07_12-12-35

Jatkan viellä Apachen testailua, jotta ymmärrän siitä hiukan enemmän.

Linux Palvelimet H2

a)

Klo 18.21: käynnistin xubuntun live tikulta. Xubuntun käynnityttä vaihdoin komentorivin fontin isommaksi ja kielen suomeksi. Sen jälkeen ajoin päivitykset “apt-get updatella”.

Klo 18.32: Päätin asentaa ssh:n saadakseni auth.logiin tapahtumia.

Klo 18.33: Kirjauduin omalle palvelimelleni ensin epäonnistuneesti, koska minulla ei ollut salasanaa.

Jan 27 16:31:51 xubuntu sshd[7071]: Failed password for xubuntu from 192.168.1.90 port 51938 ssh2
Jan 27 16:31:51 xubuntu sshd[7071]: Connection closed by 192.168.1.90 port 51938 [preauth]

Klo 18.35: Sen jälkeen vaihdoin salasanan ja kirjauduin sisälle onnistuneesti.

Jan 27 16:32:06 xubuntu sshd[7080]: Accepted password for xubuntu from 192.168.1.90 port 51940 ssh2
Jan 27 16:32:06 xubuntu sshd[7080]: pam_unix(sshd:session): session opened for user xubuntu by (uid=0)
Jan 27 16:32:06 xubuntu systemd-logind[4251]: New session 2 of user xubuntu.

b)

Klo 18.37: Kokeilin scp komentoa tehtyäni nopeasti foo.txt tiedoston. Se ilmeisesti lähettää tiedoston käyttäjän hakemistoon?

c)

Klo 18.58 xubuntu@xubuntu:~$ sudo apt-get install playonlinux vlc libreoffice steam

En saanut google chromea asennettua ollenkaan kokeiltuani monia eri kikkoja. Steam vaati myös komennon “sudo dpkg –add-architecture i386” ennen kuin se suostui asentumaan

d)

Klo 19.15 Hetken googlailin ohjelmia ja päätin asentaa ensiksi cURLn. cURLtn pyyntöjä nettisivulle, joilta se saa vastaukseksi erilaista dataa.

Tässä ajoin komennon “curl -is google.com -L |grep HTTP/” joka kertoo onko google pystyssä vai alhaalla.

Screenshot_2017-01-27_17-19-56.png

Komenolla “curl http:wttr.in/Helsinki” saat tietää helsingin sään.

Screenshot_2017-01-27_17-22-13.png

Klo 19.24: Asensin ohjelman mtr. Mtr on verkkotyökalu jolla voi tutkia verkko virheitä ja esimerkiksi tehdä hyödyllisiä reportteja niistä. Mtr käyttää traceroute ja ping komentoja yhdessä.

Kokeilin mtr google.comiin.

Screenshot_2017-01-27_17-24-27.png

Klo 19.27:  Asensin viimeiseksi turhan sovelluksen nimeltä “Cowsay”. Sillä voi tehdä lehmän joka sanoo haluamansa viestin. Kai tätä sovellusta voi käyttää jos haluaa vaikka jättää työkaverilleen lyhyen viestin, että hän näkee sen.

Screenshot_2017-01-27_17-28-36.png

e)

Klo 19.32: Tein näitä tehtävia jo koulussa tasoon 4 joten tämä meni suht nopeasti ulkomuistista.

Klo 19.33: Ensin komenolla “ssh bandit0@bandit.labs.overthewire.org” ja salasanaksi bandit0.

Klo 19.34: Käytin komentoa “ls” katsoakseni mitä siellä on. Ja siellä oli tiedosto “readme.txt” Avasin sen komennolla “cat readme.txt” ja sieltä löytyi tason 1 salasana “boJ9jbbUNNfktd78OOpsqOltutMc3MY1.amaan ”

Klo 19.35: Ensin komennolla “exit” pois bandit0 ja tilalle bandit1. Seuraavaksi “ls” ja katson mitä siellä on. Siellä on tiedosto nimeltä “-” ja koska “cat -” komento ei toimi joutuu viivan eteen laittamaan tiedoston absoluuttisen polun ./-. Sieltä löytyi salasana seuraavalle tasolle.

 

 

Linux Palvelimet H1

a) Ensiksi asensin rufus ohjelman, jolla voi luoda boottaavan usb-laitteen. Latasin myös xubuntu.orgista 16.04.1 lts version linuxista ja tein niistä boottaavan muistitikun 4gb tikulle. Kokeilin xubuntua lenovon ideapad Y700 mallisella läppärillä. Aluski piti painaa F2 bootin aikana jotta voin biossista vaihtaa bootti järjestystä ja asettaa usb-tikun ensimmäiseksi.

Linux käynnistyi onnistuneesti livebootilla ilman mitään ongelmia. Vaihdoin heti consolesta kielen suomeksi komennolla “setxkbmap fi” helpottaakseni kirjoittamista.

b) Kirjoitin komennon “sudo lshw -short -sanitize” saadakseni tietää tietokoneeni hardwaret.

xubuntu@xubuntu:~$ sudo lshw -short -sanitize
H/W path               Device     Class          Description
============================================================
system         80NV (LENOVO_MT_80NV_BU_idea_FM
/0                                bus            Allsparks 5A
/0/0                              memory         128KiB BIOS
/0/4                              processor      Intel(R) Core(TM) i5-6300HQ CPU
/0/4/6                            memory         128KiB L1 cache
/0/4/7                            memory         1MiB L2 cache
/0/4/8                            memory         6MiB L3 cache
/0/5                              memory         128KiB L1 cache
/0/1c                             memory         16GiB System Memory
/0/1c/0                           memory         8GiB SODIMM Synchronous 2133 MH
/0/1c/1                           memory         [empty]
/0/1c/2                           memory         8GiB SODIMM Synchronous 2133 MH
/0/1c/3                           memory         [empty]
/0/100                            bridge         Sky Lake Host Bridge/DRAM Regis
/0/100/1                          bridge         Sky Lake PCIe Controller (x16)
/0/100/1/0                        display        GM107M [GeForce GTX 960M]
/0/100/2                          display        Intel Corporation
/0/100/14                         bus            Sunrise Point-H USB 3.0 xHCI Co
/0/100/14/0            usb2       bus            xHCI Host Controller
/0/100/14/0/6                     multimedia     Intel(R) RealSense(TM) 3D Camer
/0/100/14/1            usb1       bus            xHCI Host Controller
/0/100/14/1/1          scsi4      storage        DataTraveler G2
/0/100/14/1/1/0.0.0    /dev/sda   disk           4007MB SCSI Disk
/0/100/14/1/1/0.0.0/1  /dev/sda1  volume         3821MiB Windows FAT volume
/0/100/14/1/3                     input          USB Receiver
/0/100/14/1/b                     communication  Bluetooth wireless interface
/0/100/16                         communication  Sunrise Point-H CSME HECI #1
/0/100/17                         storage        Sunrise Point-H SATA Controller
/0/100/1c                         bridge         Sunrise Point-H PCI Express Roo
/0/100/1c/0                       generic        SD/MMC Card Reader Controller
/0/100/1c.2                       bridge         Sunrise Point-H PCI Express Roo
/0/100/1c.2/0          wlp8s0     network        Wireless 8260
/0/100/1c.3                       bridge         Sunrise Point-H PCI Express Roo
/0/100/1c.3/0          enp9s0     network        RTL8111/8168/8411 PCI Express G
/0/100/1d                         bridge         Sunrise Point-H PCI Express Roo
/0/100/1d/0                       storage        Samsung Electronics Co Ltd
/0/100/1f                         bridge         Sunrise Point-H LPC Controller
/0/100/1f.2                       memory         Memory controller
/0/100/1f.3                       multimedia     Sunrise Point-H HD Audio
/0/100/1f.4                       bus            Sunrise Point-H SMBus

c) Nyt pitäisi ladata 3 ohjelmaa xubuntulle. Aloitin kirjoittamalla komennon sudo apt-get update. Ensiksi piti googlata asennus komennot koska en muistanut niitä ulkoa.

Sudo apt-get install komennolla siis päätin aloittaa asentamalla VLC:n koska se on paras media player mitä tiedän. Läppärissäni ei ole cd-paikkaa niin en pystynyt nopeasti laittamaan jotain leffaa sisään, joten laitoin toiselle tikulle .mp3 tiedoston ja kokeilin soittaa musiikkia VLC:llä, ja onnistuihan se.

screenshot_2017-01-24_11-36-04

Seuraavaksi asensin libreofficen, “sudo apt-get install libreoffice” komennollla. Kokeilin writeriä ja se toimi myös.

Screenshot_2017-01-24_11-44-07.png

Kolmanneksi päätin asentaa gimpin, koska en hirveästi muita ohjelmia keksinyt, mitä ubuntusta mahdollisesti löytyy.

Screenshot_2017-01-24_11-47-21.png

d) VLC: GNU Lesser General Public License v2.1+

GNU LGPL tarkoitus on, että LGPL-ohjelmistot voi linkittää ei-GPL-lisensoidun ohjelman kanssa. Eli kaupallisten ohjelmistojen ei tarvitse julkaista lähdekoodia.

Libre Office: MPL v2.0, toiset lisenssit LGPL v3+ ja Apache License 2.0

Mozilla Public License on vapaa ohjelmistolisenssi, joka kehitettiin Mozilla-projekteja varten. Nykyään useimmat Mozilla-projektin ohjelmistot, kuten Firefox ovat kolmoislisensoitu MPL 1.1:n, LGPL 2.0:n ja GNU GPL 2.1:n alaisuudessa.

Gimp: GNU GPL v3+

GNU in vapaiden ohjelmistojen lisenssi, joka antaa kenelle vaan oikeudet käyttää, kopioida ja jakaa ohjelmia ja niiden lähdekoodia. Jos GPL-ohjelmaa muokkaa ja jakaa eteenpäin sen lisenssi pitää olla sama eikä sen käytölle saa asettaa rajoituksia.

e)

Median toisto = VLC/WMP – Linuxissa VLC

Tekstinkäsittely = MS Word – Linuxissa LibreOffice Writer

Kuvan käsittely = Photoshop/Paint/Gimp – Linuxissa myös Gimp

 

Lähteet

Erilisenssien tiedot wikipediasta.