Harjoitus 5

Tehtävä, asenna LAMP pino

Tavoitteena on asentaa LAMP pino eli

  • Linux
  • Apache2
  • MariaDB
  • PHP

Asennuksen teen virtuaalipalvelimelle, jonka hankin Digital Ocean palvelusta.

Linux on jo asennettu aiempien harjoitusten yhteydessä. Samoin Apache2 ja PHP.

Tässä harjoituksessa jatkan ympäristön rakentamista, ja asennan MariaDB:n, ja teen CRUD toiminnallisuudet tietokantaa käyttävään PHP ohjelmaan.

MariaDB asennus

Asennus komennoilla

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Tämän jälkeen root salasana ja tietosuojan parannuksia

sudo mysql_ssuecure_installation

Asetukset seuraavasti

Enter current password for root (enter for none): Press Enter for none.

  • Set root password? Y
  • Create and confirm a new password
  • Remove anonymous users? Y
  • Disallow root login remotely? Y
  • Remove test database and access to it? Y
  • Reload privilege tables now? Y

Testataan root kirjautuminen

$ sudo mysql -u root -p

Login onnistuu ja MariaDB on asenenttu.

screenshot.62

Luodaan tietokanta ja käyttäjä

MariaDB [(none)]> CREATE DATABASE book CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

Tarkistetaan vielä luotu tietokanta

MariaDB [(none)]> SHOW DATABASES;

+——————–+
| Database |
+——————–+
| book |
| information_schema |
| mysql |
| performance_schema |
+——————–+
4 rows in set (0.00 sec)

Käyttäjän luominen
MariaDB [(none)]> GRANT ALL ON book.* TO book@localhost IDENTIFIED BY ’tahan_hyva_salasana_tuli_laitettua’;

Testataan vielä, että luotu käyttäjä toimii

mono@ubuntu-mono-02:~$ mysql -u book -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 56
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the current input statement.

MariaDB [book]> exit

Automatisoidaan MariaDB login käyttäjälle book

$ cd
$ nano .my.cnf

Kirjoitetaan rivit .my.cnf tiedostoon

[client]
user=”student”
password=”tahan_hyva_salasana_tuli_laitettua”
database=”student”

Muutetaan vielä tiedoston suojaukset paremmaksi

$ chmod -go-rwx .my.cnf

mono@ubuntu-mono-02:~$ chmod go-rwx .my.cnf
mono@ubuntu-mono-02:~$ ls -la .my.cnf
-rw——- 1 mono mono 63 Sep 21 12:03 .my.cnf

Testaus tämän jälkeen komennolla mariadb, jolloin sisäänkirjatuminen mariadb:hen tapahtuu helposti.

mono@ubuntu-mono-02:~$ mariadb
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 53
Server version: 10.1.34-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the current input statement.

MariaDB [book]> exit

Tietokannan toimintojen testaus (CRUD)

Luodaan taulu (CREATE TABLE)

MariaDB [book]> CREATE TABLE books (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024));
Query OK, 0 rows affected (0.01 sec)

id kenttä on taulun PRIMARY KEY eli rivin yksilöivä kenttä, ja sen arvon muodostaa tietokanta parametrilla AUTO_INCREMENT PRIMARY KEY. Käytännössä se on juokseva numero.

screenshot.63

Lisätään rivi tauluun (INSERT)

MariaDB [book]> INSERT INTO books(name) VALUES (”The gift of fear”);
Query OK, 1 row affected (0.00 sec)

Ja kokeillaan lisätä pari muuta riviä tauluun samalla

MariaDB [book]> INSERT INTO books(name) VALUES (”On Combat”);
Query OK, 1 row affected (0.00 sec)

MariaDB [book]> INSERT INTO books(name) VALUES (”On killing”);
Query OK, 1 row affected (0.00 sec)

Haetaan dataa taulusta (SELECT)

MariaDB [book]> SELECT * FROM books;

+—-+——————+
| id | name |

+—-+——————+
| 1 | The gift of fear |
| 2 | On Combat |
| 3 | On killing |
+—-+——————+
3 rows in set (0.00 sec)

Päivitetään dataa (UPDATE)

MariaDB [book]> UPDATE books SET name=”Perfect Practise” WHERE name=”On killing”;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

MariaDB [book]> SELECT * FROM books;

+—-+——————+
| id | name |
+—-+——————+
| 1 | The gift of fear |
| 2 | On Combat |
| 3 | Perfect Practise |
+—-+——————+
3 rows in set (0.00 sec)

 

Poistetaan dataa (DELETE)

MariaDB [book]> DELETE FROM books WHERE name=”Perfect Practise”;
Query OK, 1 row affected (0.00 sec)

MariaDB [book]> SELECT * FROM books;

+—-+——————+
| id | name |
+—-+——————+
| 1 | The gift of fear |
| 2 | On Combat |
+—-+——————+
2 rows in set (0.00 sec)

Tehdään PHP ohjelma, joka toteuttaa CRUD operaatiot tietokantaan

PHP on asennettu ympäristöön aiemmin ja se toimii käyttäjien kotihakemistoista.

screenshot.64

Jotta PHP ohjemat saadaan kommunikoimaan MariaDBn kanssa pitää asentaa PHPtä varten ajuri PHP-PDO.

Asennetaan se komennolla

$ sudo apt-get install php-mysql

Toiminta vaatii Apahen restartin

$ sudo systemctl restart apache2

Linkki ajettavaan ohjelmaan: http://juhaimmonen.com/list.php

Tietokantayhteyden luominen PHPllä

Luodaan oma tiedosto tietokantayhteyden luontia varten, ja tämä teidoston voidaan liittää sitä käyttävään PHP ohjelmaan ”include(”connection.php”);” komennolla.

nano connection.php

<?php

$database = ”book”;
$user = ”book”;
$password = ”salainen”;
$dns = ”mysql:host=localhost;charset=UTF8;dbname=$database”;
echo ”$dns, $user”;
$con = new PDO($dns,$user,$password);

?>

Tietokantaa lukeva PHP ohjelma (SELECT)

Luodaan ohjelma

nano list.php

<!DOCTYPE html>

<html>
<head>
<title>Book list</title>
</head>

<body>

<h1>Book list</h1>

<table>

<tr>
<th>
Name
</th>
<th>
Id
</th>

<?php

include(”connection.php”);

$sql = ”SELECT id, name

FROM books
ORDER BY name DESC”;

$query = $con->prepare($sql);
$query->execute();

while ($row = $query->fetch()) {

$name = $row[”name”];
$id = $row[”id”];
echo ”<tr>”;
echo ”<td>{$name}</td>”;
echo ”<td>{$id}</td>”;
echo ”<td><a href=’modify.php?id={$id}’>M</td> ”;
echo ”<td><a href=’delete.php?id={$id}’>X</td> ”;
echo ”</tr>”;

}
?>

</table>
<a href=”add.php”>Add book</a>

</body>

</html>

Testataan ohjelmaa selaimella: http://juhaimmonen.com/php/list.php

screenshot.65

Lisätään tietoa tietokantaan PHP ohjelmasta (INSERT)

Tehdään ensin lomake kirjan tietojen syöttämistä varten.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Uusi nimi</title>
</head>

<body>
<h1>Add book</h1>

<form action=”addBook.php” method=”post”>
<p>Nimi: <br> <input type=”text” name=”name”></p>
<p><input type=”submit” value=”Send”></p>
</form>

</body>
</html>

Lisäksi tehdään PHP-ohjelma, jolle lomakkeelta välitetään tiedot. addBook.php tallentaa uuden kirjan tiedot tietokantaan.

Virheitä tulee koodatessa, ja niitä voi etsiä kommenolla

$ tail -F /var/log/apache2/error.log

Esimerkki:

[Fri Sep 21 13:57:46.495459 2018] [php7:emerg] [pid 7455] [client 91.152.137.83:
54704] PHP Parse error: syntax error, unexpected ’list’ (T_LIST) in /home/mono/
public_html/addBook.php on line 13, referer: http://178.128.199.241/~mono/add.ht
ml

Korjausten jälkeen ohjelma näyttää tältä
<?php
include(”connection.php”);

$name = htmlspecialchars($_POST[”name”]);

$sql = ”INSERT INTO books (name)
VALUES (:name)”;

$query = $con->prepare($sql);
$query->bindParam(’:name’, $name);
$query->execute();

print (”<h2>Added book: {$name}</h2>”);
print (”<p><a href=’list.php’>Back to booklist</a></p>”);

?>

Testattu ja tulos

 

screenshot.66

Muutetaan kirja tietoja (UPDATE)

Tehdään lomake, jolle haetaan id:n perusteella halutun kirjan nimi. Tätä lomaketta kutsutaan kirjalistalta (booklist). Tällöin id saadaan GET-parametrina ja nimi haetaan tietokannasta.

modify.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Update book</title>
</head>
<body>
<h1>Update book</h1>
<form action=”modBook.php” method=”post”>
<?php
include(”connection.php”);

$id = htmlspecialchars($_GET[”id”]);

$sql = ”SELECT id, name
FROM books
WHERE id=(:id)”;

$query = $con->prepare($sql);
$query->bindParam(’:id’, $id);
$query->execute();

$row = $query->fetch();
$name = $row[”name”];

echo ” <p>Name: <br> <input type=’text’ name=’name’ value=’${name}’></p>
”;
echo ” <input type=’hidden’ name=’id’ value=’${id}’></p>”;
?>
<p><input type=”submit” value=”Send”></p>
</form>
</body>
</html>

Tulos testistä

screenshot.67

Ohjelma joka tallentaa muutetun kirjan tiedot tietokantaan

modBook.php

<?php
include(”connection.php”);

$id = htmlspecialchars($_POST[”id”]);
$name = htmlspecialchars($_POST[”name”]);

$sql = ”UPDATE books SET name = :name WHERE id = :id”;

$query = $con->prepare($sql);
$query->execute(array(’:name’ => $name, ’:id’ => $id));

print (”<h2>Book name {$name} modified</h2>”);
?>
<p><a href = ”list.php”>Back to booklist</a></p>

 

Tulos testistä, kun muutettiin kirja nimi ”Otavan Suuri Satukirja” –> ”Otavan Suuri Satukirja!”

screenshot.68

Kirjalista muutoksen jälkeen

screenshot.69

Kirjan poistaminen PHP ohjelmasta (DELETE)

Ohjelma delete.php tekee poistaa rivin taulusta books. Ohjelma saa parametrina poistettavan kirjan id:n.

delete.php
<?php
include(”connection.php”);

$id = htmlspecialchars($_GET[”id”]);

$sql = ”DELETE FROM books WHERE id = (:id)”;

$query = $con->prepare($sql);
$query->bindParam(’:id’, $id);
$query->execute();

echo ”<h2>Book deleted </h2>”;

echo ”<p><a href=’list.php’>Back to Booklist</a>”;
?>

Testi

Alkutilanne:

screenshot.70

Ja poiston jälkeen:

screenshot.71

 


 

Mainokset

Harjoitus 4

Virtuaalipalvelimen vuokraus ja alkutoimet

Tehtävää varten poistin olemassaolevan virtuaalipalvelin Digital Ocean palvelusta.

Tämä tapahtui Digital Oceanin itsepalvelusta, poisto meni ilman ongelmia.

Palvelimen vuokraus

Aloitin uuden luomisen Create buttonista ja valitsin käyttöjärjestelmäksi Ubuntun version 18.04

screenshot.37

Muistia 1GB ja hintaa tulee 5$ / kk

screenshot.39

Sijanti EU (Frankfurt)

screenshot.40

Nimeksi tuli: ubuntu-mono-02

Ei muita valintoja (backup, SSH key, Add block storage) –> painettu Create.

Tuli virheilmoitus

screenshot.41

Itsepalvelussa näytti ok:lta:

screenshot.43

Sähköpostiin tuli ilmoitus onistuneesta luonnista. Jossa tiedot:

Droplet Name: ubuntu-mono-02
IP Address: 178.128.199.241
Username: root
Password:

Kirjauduin uudelle serverille Puttylla, login onnistui ja vaihdoin salanan uudeksi.

screenshot.44

tulimuuri konffaus

Ajettu komennot, eli sallitaan portti 22 (ssh) ensin ja sitten palomuuri päälle

$ sudo ufw allow 22/tcp
$ sudo ufw enable

screenshot.45

normaali sudo-käyttäjä

Ajettu komennot

$ sudo adduser mono
$ sudo adduser mono sudo
$ sudo adduser mono adm
$ sudo adduser mono admin

Login testattu ssh:lla

screenshot.46

root lukkoon

Lukittu tunnus root

sudo usermod –lock root

Konffattu root.tunnus, siten että login ei toimi

$ sudoedit /etc/ssh/sshd_config

# …
PermitRootLogin no
# …

$ sudo service ssh restart

päivitys

Ajettu

sudo apt-get update

sudo apt-get upgrade

Asennuksen testaus

Kirjauduttu ulos ja kokeilta root loginia. Access denied:

screenshot.47

Kirjauduttu uudella mono-tunnuksella

screenshot.48

Lähde: http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean

Apache asennus ja kotisivut näkyviin

Ensin pakettien päivitys varmuudeksi

$ sudo apt-get upgrade

Asennus

$ sudo apt-get install apache2

Testaus: http://178.128.199.241 –> can’t reach this page. Palomuurissa ei ole avattu porttia 80/tcp.

Avataan portti 80 liikenteelle.

$ sudo ufw allow 80/tcp

screenshot.49

Testaus uudestaan: http://178.128.199.241 –> toimii.

screenshot.50

Ylikirjoitetaan apachen oletus index.html

$ echo ”Moi” | sudo tee sudoedit /var/www/html/index.html

Käyttäjien kotisivujen salliminen

Tehdään käyttäjälle mono public_html hakemisto ja sinne index.html-tiedosto

Konfiguroidaan Apache

$ sudo a2enmod userdir

$ sudo systemctl restart apache2

Testaus: http://178.128.199.241/~mono –> toimii

screenshot.51

Vuokraa domain-nimi osoittamaan pavelimeesi

Domain nimi on vuokrattu NameCheap palvelusta, ja se on juhaimmonen.com. Toinen hyvä palvelu on Gandhi.

Namecheap /www.namecheap.com

screenshot.52.jpg

Valittu domain nimi tottoroo.com. Mitään lisäpalveluita ei ole otettu.

screenshot.53

Ammattikäyttöön 5-vuoden lisenssi, joka kannattaa ottaa siten, että se uusitaan automaattisesti. Samoin Whoisguard päälle ilmaiseksi.

screenshot.54

Confirm Order jälkeen laskutustietojen täyttäminen, ohita lisämyynti, laita päälle automaattinen domain nimen uusiminen ja tilaus on valmis.

Domain nimen kytkeminen IP-osoitteeseen

Ohje: https://www.namecheap.com/support/knowledgebase/article.aspx/319/2237/how-can-i-set-up-an-a-address-record-for-my-domain

Kirjaudu sisään namecheap-palveluun. Valitse Domain List ja klikkaa Manage-buttonia.

screenshot.55.jpg

Tämän jälkeen klikkaa Advanced DNS-linkkiä

screenshot.56

Add new record-painikkeesta pääset syöttämään uuden A-recordin

screenshot.57

Syötä tiedot: host=uusi domain, IP-osoite

Esimerkki:

@ – used to point a root domain (yourdomain.tld) to the IP address: A Record | @ |  11.22.33.44

www – is selected when it is needed to point http://www.yourdomain.tld to the IP address:
A Record | www |  11.22.33.44

Tiedot syötettynä, roskalaatikosta poista päällekkäiset määritykset. Alla olevassa kuvassa on vielä näkyvissä määritykset, joissa Domain nimi oli sidottu toiseen IP-osoitteeseen.

screenshot.58

Lisämyyntivalinnat voi jättää huomioimatta. Tallenna Save all changes-buttonista.

Määrityksen valuminen verkkoon kestää n. 30min. Asetuksen kytkeytymistä voi testata komennolla

$ host example.com dns1.registrar-servers.com

Tuloste

screenshot.59

Ja lopullinen testi menemällä osoitteeseen: http://juhaimmonen/~mono/

Tulostuu aiemmin tehty kotisivu

screenshot.60

Käyttäjän kotihakemistossa olevat sivut näkymään palvelimen etusivulla

Lähde: http://terokarvinen.com/2018/name-based-virtual-hosts-on-apache-multiple-websites-to-single-ip-address

Tavoitteena siis, että osoite http://juhaimmonen.com palauttaa suoraan käyttäjän kotihakemiston index.html tiedoston. Tällä tekniikalla voidaan myös määritellä useita domain nimiä samalle IP-osoitteelle, ja Apachen konffien avulla näytetän oikea site selaimelle.

Konfigurointi

Vaihda hakemisto

$ cd /etc/apache2/sites-available

Luo hakemistoon uusi konfiguraatio

$ sudoedit juhaimmonen.com.conf

Ja lisää sinne rivit

<VirtualHost *:80>

ServerName juhaimmonen.com
ServerAlias http://www.juhaimmonen.com
DocumentRoot /home/mono/public_html

<Directory /home/mono/public_html>

Require all granted

/Directory>

</VirtualHost>

 

Konfiguraatio voimaan

$ sudo a2ensite juhaimmonen.com

Apache restart

$ sudo systemctl restart apache2

Testi: http://juhaimmonen.com

screenshot.61

Esimerkkejä murtautumisyrityksistä

Serveri oli pystyssä 11:40 Suomen aikaa eli 8:40 CET

auth.log
Sep 14 08:57:06 ubuntu-mono-02 sshd[1369]: Invalid user friends from 125.70.230.
211 port 38066
Sep 14 08:57:06 ubuntu-mono-02 sshd[1369]: pam_unix(sshd:auth): check pass; user
unknown
Sep 14 08:57:06 ubuntu-mono-02 sshd[1369]: pam_unix(sshd:auth): authentication f
ailure; logname= uid=0 euid=0 tty=ssh ruser= rhost=125.70.230.211

Mistä maista ja miltä operaattoreilta murtautujat tulevat

Komennot: (host, geoiplookup, whois)

mono@ubuntu-mono-02:/var/log$ whois 125.70.230.211
% [whois.apnic.net]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html

% Information related to ’125.64.0.0 – 125.71.255.255’

% Abuse contact for ’125.64.0.0 – 125.71.255.255’ is ’anti-spam@ns.chinanet.cn.net’

inetnum: 125.64.0.0 – 125.71.255.255
netname: CHINANET-SC
descr: CHINANET Sichuan province network
descr: China Telecom
descr: A12,Xin-Jie-Kou-Wai Street
descr: Beijing 100088
country: CN
admin-c: CH93-AP
tech-c: CS408-AP
mnt-by: APNIC-HM
mnt-lower: MAINT-CHINANET-SC
mnt-routes: MAINT-CHINANET-SC
status: ALLOCATED PORTABLE
remarks: ——————————————————–
remarks: To report network abuse, please contact mnt-irt
remarks: For troubleshooting, please contact tech-c and admin-c
remarks: Report invalid contact via http://www.apnic.net/invalidcontact
remarks: ——————————————————–
last-modified: 2016-05-04T00:02:05Z
source: APNIC
mnt-irt: IRT-CHINANET-CN

……

% This query was served by the APNIC Whois Service version 1.88.15-46 (WHOIS-UK4)

 

 

Linux palvelimet – harjoitus 3

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

Ensin pakettien päivitys varmuudeksi

$ sudo apt-get upgrade

Apachen asennus

$ sudo apt-get install apache2

Apachen testaus

Selaimella  osoitteeseen http://localhost, ja avautuu apchen aloitussivu

Apache2 Ubuntu Default Page: It works - Mozilla Firefox_001

Kotisivut toimimaan

Alkutilanne

Selection_004Luodaan kotisivulle hakemisto

Selection_002

ja testisivu

$nano index.html

Selection_003

Apachen konfigurointi

Selection_005

Testaus

Linkki: http://localhost/~mono/

Selection_006

Toimii

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

Oman koneen IP osoitteen selvitys

$ ip addr

Selection_008

IP osoite on http://192.168.10.52/~mono/

Selection_009

200 ok

Kotisivun päivitys SHIFT-reload yhdistelmällä

access.log lokiin tulostui rivi

Selection_007

access lokin selitys:

127.0.0.1 IP josta tultiin

[07/Sep/2018:17:15:36 +0300] Aikaleima, Suomen aikaa

GET /~mono/ HTTP/1.1″ MetodinatET, haettu kotihakemiston index.html

200 sivu ladattu ok

293 palautetun tiedoston koko

”-” ” ??

Mozilla/5.0 Selain ja versio?

(X11; Ubuntu; Linux x86_64; rv:62.0)Palvelimen tiedot?

Gecko/20100101 Firefox/62.0 Selaimen itsestään lähettämät tiedot?

Apachen access lokin sisällön lähde: https://httpd.apache.org/docs/2.4/logs.html

404 not found

Testi:

Selection_010

Lokissa

Selection_011

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

PHP asennus

$ sudo apt-get install libapache2-mod-php

Apachen restart

$ sudo systemctl restart apache2

Testisivun tekeminen

$ nano koe.php

Koodi

Selection_016

PHP salliminen käyttäjille

Pitää muuttaa konfigurointitiedostoa:  /etc/apache2/mods-available/php7.2.conf

rivit

Selection_013

Ajetaan komento sudoedit php7.2.conf ja muokataan

Selection_014

Testi

Virheellinen ohjelma.

tiedosto:  print (”Tämä on PHP); ”-merkki puuttuu.

Ajon tulos on tyhjä sivu.

Loki: /var/log/apache2/errorlog

[Mon Sep 10 16:22:48.006840 2018] [php7:emerg] [pid 895] [client 127.0.0.1:56808] PHP Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in /home/mono/public_html/koe.php on line 20

Kertoo tapahtuman ajan Suomen ajassa

Virheviesti, josta ainaka itselle ei ihan heti aukea, että”-merkki puuttuu.

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

Lomake

Selection_020

Testattu

Selection_021

PHP ohjelma

Selection_019

Tulos

Selection_022

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.

Linux, Apache ja PHP asennukset on  tehty aiemmissa tehtävissä.

MariaDB asentaminen

Ajettu komennot

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Testattu asennus komennolla: sudo systemctl status mariadb.

Näyttäisi olevan ok tässä vaiheessa:

Selection_025

Kirjaduttu root oikeuksilla sisään: $ sudo mysql -u root -p

Selection_026

Salasanan asetus, tästä en tiedä mitä tekee? Pitää tarkistaa.

use mysql;
update user set plugin='xxxxxxx' where user='root';
flush privileges; 
quit;

Yllä oleva komento rikkoi MariaDB, en pääse enää sisään:

Selection_027

Sammutin tietokannan sudo systemctl stop mariadb, jatkan varmaan uudelleen installoinnilla.

MariaDB poisto: sudo apt-get remove mariadb-server mariadb-client

ja

Uudelleen asennus

sudo apt-get update

sudo apt-get install mariadb-server mariadb-client

Ei toimi, koska komento sudo apt-get remove mariadb-server mariadb-client ei poistanut kantaa. ilmeisesti vain jakelupaketin.

$ sudo mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ’/var/run/mysqld/mysqld.sock’ (2 ”No such file or directory”)

Pitää jatkaa tällä: https://askubuntu.com/questions/806107/remove-mariadb-mysql-databases/806441

Jatkettu 10.9.2019 klo 16:30

sudo systemctl stop mariadb

sudo apt-get --purge remove "maria*"

Selection_028

Valittu: No

10.9.2018 klo 16:49. kokeillaan uudelleen asennusta.

sudo apt-get update

sudo apt-get install mariadb-server mariadb-client

Ei toimi

 

Selection_029

 

Lopputulos

  • Huolellisuutta asennusvaiheessa
  • En osaa poistaa paketteja

Lähde: https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-mariadb-on-ubuntu-16-04.html

 

Jatko

Jatkoin kokeilua linux tikulla.

  • Asensin uudestaan Apache2
  • Asensin uudestaan PHP
  • Asensin MariaDB uudestaan

MariaDB asennus

Nyt ohjeen mukaan

sudo apt-get update
sudo apt-get install mariadb-server mariadb-client

Tämän jälkeen root salasana

sudo mysql_secure_installation

Asetukset:
  • Enter current password for root (enter for none): Press Enter for none.
  • Set root password? Y
  • Create and confirm a new password
  • Remove anonymous users? Y
  • Disallow root login remotely? Y
  • Remove test database and access to it? Y
  • Reload privilege tables now? Y

Tämän jälkeen roottina MariaDB:hen

$ sudo mysql -u root -p

ja
use mysql;
update user set plugin='mysql_native_password' where user='root';
flush privileges; 
quit;

Testattu login asetetulla salasanalla, toimii.

 

phpmyadminia varten asetettu vielä seuraava

sudo mysql -u root -p mysql

update user set plugin=' 'where user='root';
flush privileges;
exit

 

Tämän jälkeen phpMyAdmin asennus ja kokeilu

Lähteet

https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-mariadb-on-ubuntu-16-04.html

https://websiteforstudents.com/install-apche2-php-phpmyadmin-ubuntu-17-04-17-10/

e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.

Lähde: https://websiteforstudents.com/install-apche2-php-phpmyadmin-ubuntu-17-04-17-10/

PhpMyAdmin asennus

Selection_023

Valittu apache -> ok

Selection_024

Valittu –> No

Asennus meni läpi ilman virheilmoituksia.

toiminnnan testaus

http://localhost/phpmyadmin ei toimi

Korjaus

Tutkittu internettiä.

Tehty tämän artikkelin mukaan: https://help.ubuntu.com/community/ApacheMySQLPHP#Troubleshooting_Phpmyadmin_.26_mysql-workbench

Eli

sudoedit /etc/apache2/apache2.conf
Lisätty tiedoston loppuun rivi
$ Include /etc/phpmyadmin/apache.conf

 

Tämän jälkeen toimi.

Selection_001

Login

Selection_002

Linux palvelimet – harjoitus 2

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

Tutkitaan kahta lokitapahtumaa

  • Kirjautuminen onnistuu
  • Kirjautuminen epäonnistuu väärän salasanan takia

Alkutoimet

  • Mennään lokihakemistoon cd /var/log
  • Seurataan lokitapahtumia tail -F auth.log
  • Lokihakemiston sisältö:
xubuntu@xubuntu:/var/log$ ls
Xorg.0.log        bootstrap.log  dpkg.log         journal   speech-dispatcher
alternatives.log  btmp           faillog          kern.log  syslog
apt               casper.log     fontconfig.log   lastlog   tallylog
auth.log          cups           gpu-manager.log  lightdm   unattended-upgrades
boot.log          dist-upgrade   hp               samba     wtmp
  • Kirjaudutaan sisään ubuntuun
    • Tunnus: mono
    • loki: /var/log/auth.log
  • Loki rivi:
  • Aug 31 18:30:06 mono-HP-Pavilion-dv6-Notebook-PC systemd: pam_unix(systemd-user:session): session opened for user mono by (uid=0)
  • Loki sisältö

päivämäärä kellonaika koneen nimi daemoni: pam_unix(systemd-user:session): teksti onnistuneesta session avauksesta (luotu user id)

pam_unix https://linux.die.net/man/8/pam_unix. Tekee salasana autentikoinnin.

systemd https://wiki.debian.org/systemd. Systeemi ja palveluohjelma, käynnistänyt session

  • Yritetään kirjautua väärällä salasanalla
  • Lokissa rivi:

Aug 31 18:49:14 mono-HP-Pavilion-dv6-Notebook-PC lightdm: pam_unix(lightdm:auth): authentication failure; logname= uid=0 euid=0 tty=:1 ruser= rhost= user=mono

päivämäärä kellonaika koneen nimi daemoni: pam_unix(lightdm:auth): virheviesti;

logname= uid=0 euid=0 tty=:1 –> user id, euid? ja pääte?

ruser= rhost= user=mono –> etäkäyttäjä / käyttäjänimi

b) Vapaaehtoinen kohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)

SSH testi

  • Testattu ssh mono@localhost, kirjautuminen onnistui, salasana kysyttiin
    • $ ssh mono@localhost
      The authenticity of host ’localhost (127.0.0.1)’ can’t be established.
      ECDSA key fingerprint is SHA256:LoHHlwDVZ3SiO2duGFD/U+NWKDj4cKg4AQC8yZl8Ngo.
      Are you sure you want to continue connecting (yes/no)? yes
      Warning: Permanently added ’localhost’ (ECDSA) to the list of known hosts.
      mono@localhost’s password:
      Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-33-generic x86_64)
  • SSH-demonin lokia tutkittu exit-komennin jälkeen
    • Aug 31 19:42:48 mono-HP-Pavilion-dv6-Notebook-PC sshd[15568]: pam_unix(sshd:session): session opened for user mono by (uid=0)
    • Aug 31 19:44:45 mono-HP-Pavilion-dv6-Notebook-PC sshd[15659]: Received disconnect from 127.0.0.1 port 40536:11: disconnected by user
    • Aug 31 19:44:45 mono-HP-Pavilion-dv6-Notebook-PC sshd[15659]: Disconnected from user mono 127.0.0.1 port 40536
    • Aug 31 19:44:45 mono-HP-Pavilion-dv6-Notebook-PC sshd[15568]: pam_unix(sshd:session): session closed for user mono
  • Lokin mukaan on kirjauduttu ssh:n yli

SCP testi

  • Tehty myös scp testi, eli kopioitu tiedosto scp:n avulla SSH:ta käyttäen
  • komento: scp foo.txt mono@localhost:/home/mono/testissh
    $ 
    $ scp foo.txt mono@localhost:/home/mono/testissh
    mono@localhost's password: 
    foo.txt                                                                           100%   20    37.2KB/s   00:00    
    $ cd testissh/
    $ ls
    foo.txt

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

sudo apt-get install inkscape

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

gcc

  • sudo apt-get install gcc
  • After this operation, 73,0 MB of additional disk space will be used.
    Do you want to continue? [Y/n] y
  • nano hello.c
  • kirjoita koodi
  • käännä ohjelma: gcc hello.c -o hello.
  • Ajettu ohjelma komennolla ./hello
  • Tulostuu: Hello, World

Java

  • Asenna ajoympäristö: sudo apt-get install default-jre
  • After this operation, 191 MB of additional disk space will be used.Do you want to continue? [Y/n] y
  • Asenna käännösympäristö: sudo apt-get install default-jdk
  • kirjoita ohjelma hello.java
  • käännä javac hello.java
  • aja ohjelma java HelloWorld.java

Tulostus:
$ javac HelloWorld.java
$ java HelloWorld
Hello, World

Markdown

  • sudo apt-get install markdown
  • Kirjoita tekstiä nano teksti.md tiedostoon
  • Malli:
  • # kappale
    asdasd
    sdfdsf
    sdfsdf
    sdfsdf

    ## alakappale
    DSFDSF
    SDFSfsf
    sfsdfdsf
    sdfsdfds
    sdfsf

  • Aja Markdown:
  • $ markdown teksti.md
    <h1>kappale</h1>

    <p>asdasd
    sdfdsf
    sdfsdf
    sdfsdf</p>

    <h2>alakappale</h2>

    <p>DSFDSF
    SDFSfsf
    sfsdfdsf
    sdfsdfds
    sdfsf</p>

 

Linux palvelimet – harjoitus 1

a) Oman Linux-livetikun tekeminen

Haettu Ubuntu asennustiedosto url:sta

Ladattu tiedosto

Asennettu UNetbootin livetikun tekoa varten

Unetbootinista valittu asennusvaiheessa

  • Sovelluspaketiksi Ubuntu
  • Diskimage: aiemmin ladattu ISO tiedosto

USB tikun kokeilu

  • Läppäri: HP Pavilion dv6. win7
  • Ubuntu käynnistyy USB tikulta, kun painetaan F9 heti koneen käynnistämisen jälkeen ja valitaan Default boot valikosta
  • Asetettu näppäimistön kieli kun Ubuntu käynnistynyt: setxkbmap fi

USB Tikun testaus

  • Avattu Firefox, menty osoitteeseen http://haaga-helia.fi, avattu moodle ja kirjauduttu sisään. Toimii
  • Kirjoitettu tämä sivu koneella, jossa USB tikulla Ubuntu. Ääkköset toimii.

b) Koneen rauta (komento ‘sudo lshw -short -sanitize’).

Rauta

 

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

Inkskape

  • Asennus: sudo apt-get -y install inkscape
  • Piirto-ohjelma
  • Piirretty viivoja sovelluksella

VLC

  • Videoiden toisto
  • Asennus: sudo apt-get -y install vlc
  • Asennus onnistui vasta sudo apt-get update komennon jälkeen
  • Katsottu DVD ohjelmalla

GCC

  • C-kääntäjä
  • Kännetty Hello World V-ohjelma gcc hello.c -o hello.
  • Ajettu ohjelma komennolla ./hello

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

Inkscape

  • Lisenssi: https://inkscape.org/en/about/license/
  • Ohjelmistolisenssi on GNU General public license, version 3 or later
  • GNU General Public License (GPL) ehkä kuuluisin vapaan lähdekoodin lisenssi.
  • GPL sallii teoksen levityksen ja muokkauksen, kunhan seuraavia ehtoja noudatetaan:
    • Lisenssiä ei saa muuttaa tai poistaa
    • Muokkauksista pitää lisätä huomio
    • Ohjelman tulee sisältää tieto lisenssistä
    • Lähdekoodi pitää tehdä saataville kaikille, joille ohjelma on levitetty
    • Johdannaisteokset tulee lisensoida samalla lisenssillä

VLC

  • Lisenssi: https://www.videolan.org/legal.html
  • GNU lesser General public license 2.1+ (LGPL)
  • GPL-lisenssistä on olemassa versio ohjelmistokirjastoja varten: Lesser General Public License (LGPL).
  • LGPL höllentää lisenssiehtoja niin, että ohjelman joka käyttää LGPL-lisensoitua modulia ei tarvitse itse olla LGPL-lisensoitu

GCC

 

Lähteet

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)

Word, tekstinkäsittely. Linux: LibreOffice Writer

Excel, taulukkolaskenta. Linux: LibreOffice Calc

Powerpoint, esitysgrafiikka. Linux: LibreOffice Impress

f) Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä)