Tilastoi eri resurssien (CPU, RAM…) kuormitus koko harjoituksen ajalta. Tilastointi tulee siis aloittaa, ennenkuin teet muita harjoituksia. Kirjoita aivan lopuksi lyhyt analyysi keräämästäsi tilastosta.
Opettaja oli tunnilla ehdottanut Munin-ohjelman asentamista
Sain sen ladattua, mutta sen toimiaan laittaminen vaikutti liian hankalalta, ja olisi pitänyt ladata mysql (jonka asentaminen ei jostakin syystä onnistu käyttämälleni xubuntu-versiolle)
Katsoin sitten software kaupasta Gnome Systme Monitorin
se kertoi vain sen hetkisen tilanteen, mutta ei ottanut ylös historiaa
Kokeilin parin muun asentamista, mutta nekin olivat vain sen hetkisen tilanteen
Tässä vaiheessa päädyin siihen päätökseen, etten laita mitään tilatsointiohjelmaa pyörimään ja toivon, ettei labraharjoituksessa sitä pyydetä laittamaan (varmaan tulee, mutta se on sitten torstain Emman ongelma)
Avauduin myös muistiinpanoihini siitä, miten en osaa oikeasti käyttää Linuxia kunnolla, vaikka olen käynyt kurssin ja jotakin mukamas oppinut. Ehkä Linux ei vain sovi minulle käyttöjärjestelmänä sen CLI:n käytön takia. Ehkä Windowsin UI on parempi minulle
Joka tapauksessa siirryin urhollisesti tekemään harjoituksen seuraavaa tehtävää, vaikka tiesin, etten siinäkään onnistu.
PHP:tä kaukomailta
Asenna meille tarvittavat palvelut, jotta voimme tehdä PHP-sivuja etänä.
Käyttäjämme ovat Maija Mehilälinen, Peter Ö, Oskar Jäärä, John Do, Verner Vrij,Mikko Möttönen, Jalmari Ähkä, Håkan Swarz ja Maija Maitoparta. Tee kullekin esimerkkisivu PHP:lla.
Listaa kaikki käyttäjätunnukset ja salasanat tiedostoon lab.txt (“/home/*/lab.txt”). Suojaa tiedosto niin, etteivät muut käyttäjät voi lukea sitä.
Sitten olisi pitänyt mySQl asentaa tietokannaksi, mutta sen asentaminen ei jostakin syystä onnistu käyttämääni try-xubuntuun, joten yritin ladata jonkun toisen tietokannan.
tein varmaan jotenkin väärin, mutta tässä vaiheessa en taaskaan jaksanut enää alkaa välittää, koska olin jo päättänyt, etten osaa tai tule koskaan osaamaan käyttämään Linuxia. Toivon vain, etten tulevaisuudessa tule sitä tarvitsemaan tai ettei minun tarvitse asennella tietokantoja, joita en osaa ollenkaan käyttää tai asennella
En osannut tehdä tehtävää, mutta voin kertoa tässä, mitä sain aikaiseksi ennen kuin lopetin sen tekemisen.
Yritin tehdä tehtävää noin tunnin ajan.
a) Tietokanta wepissä. Tee oma yksinkertainen, tietokantaa käyttävä ohjelma. Ohjelmalla tulee olla jokin käyttötarkoitus. Voit tehdä ohjelman muokkaamalla Teron koodia (muista lähdeviite).
En ollut tunnilla, joten näiden tehtävien tekeminen oli vähän hankalaa. Tein ensin joitakin asioita väärin, mutta mielestäni sain ne kuitenkin suurilta osin tehtyä oikein. En osaa yhtään Pythonia, joten siltä osalta tehtävät olivat todella hankalia.
Error: The file/path provided (hello) does not appear to exist. Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py
Korjausyritys: poista se aiempi tiedosto ja luo uusi sudo nano hello.py. Mutta tämäkään ei auttanut.
Tässä vaiheessa kilautin kaverille, joka oli ollut tunnilla. Hän sanoi, että opettana sivulla on ohjeet tälle tehtävälle. *facepalm*
Nyt tajusin tehneeni väärin, kun tein tämän omalle palvelimelleni enkä omalle paikalliselle koneelleni. Miten oma kannettavani mukama avaisi tuon sivun, jos kirjoitan selaimeen localhost:5000? Otin järkeni käteen ja tein kaiken edellä mainitun omalle koneelleni.
Ja voila! Nyt se onnistui!
b) Tuotanto-Flask. Tee tuotantotyyppinen asennus Flaskista käyttäen Apachen WSGI-modulia. Kokeile, että pystyt muokkaamaan koodia ilman sudoa ja saat uuden version käyttöön käynnistämättä Apachea uudelleen. (’touch foo.wsgi’).
AH00526: Syntax error on line 33 of /etc/apache2/sites-enabled/000-default-le-ssl.conf:
SSLCertificateFile: file ’/etc/letsencrypt/live/hattu.emmavaittinen.social/fullchain.pem’ does not exist or is empty
Action ’configtest’ failed.
The Apache error log may have more information.
$ sudo apt-get -y install libapache2-mod-wsgi-py
$ sudo systemctl restart apache2
$ apache2ctl configtest
Apache2ctl configtest should say ”Syntax OK”. Any complaints about servername blah blah localhost are harmless. If there are actual errors, this usually tells the line number, too.
Katsotaan, mitä sivu sanoo nyt:
$ curl localhost
<!DOCTYPE HTML PUBLIC ”-//IETF//DTD HTML 2.0//EN”>
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don’t have permission to access this resource.</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
</body></html>
Luodaan sinne seuraavaksi kansio ja muutetaan käyttäjien oikeuksia:
fixing the permissions, because normally we don’t go around sudoing in user’s home directories
$ sudo chmod g=rwxs /home/krissetest/public_wsgi
Let all users in terowsgi group edit the directory (g+rwx), and let’s keep the terowsgi group for new files and folders (g+s).
Seuraavaksi luodaan se tiedosto (tero.wsgin tilalle se krissetest.wsgi):
$ nano /home/terowsgi/public_wsgi/tero.wsgi
importsys
assert sys.version_info.major >= 3, ”Python version too old in tero.wsgi!”
sys.path.insert(0, ’/home/terowsgi/public_wsgi/’)
from hello import app as application
Katsotaan, mitä sivu sanoo nyt:
$ curl -s localhost|grep title
<title>404 Not Found</title>
$ tail -1 /var/log/apache2/error.log
[Sun Mar 01 09:41:03.771760 2020] [wsgi:error] [pid 2296:tid 140010145634048] [client 127.0.0.1:36652] Target WSGI script not found or unable to stat: /home/krissetest/public_wsgi/krissetest
Sitten luodaan se hello.py -tiedosto:
$ nano hello.py
fromflaskimport Flask
app = Flask(__name__)
@app.route(”/”)
def hello():
return ”Learn Flask at TeroKarvinen.com!\n”
# Removed the app.run line
Katsotaan, mitä sivu sanoo nyt:
$ curl localhost
error 404
Unohdin potkaista apachea:
$ sudo systemctl restart apache2
Uudestaan:
$ curl localhost
500 internal server error
$ tail -1 /var/log/apache2/error.log
[Sun Mar 01 09:51:42.918946 2020] [wsgi:error] [pid 2589:tid 140297772435200] [remote 127.0.0.1:36656] ModuleNotFoundError: No module named ’flask’
Eli modduli Flaskia ei ole aseennettu, joten asennetaan se:
$ sudo apt install python3-flask
Jos nyt toimisi:
$ curl localhost
”Learn Flask at TeroKarvinen.com!”
Hurraa!
c) Lisää tuotanto-Flaskiin muotit (templates).
Tässä kohtaa voin sanoa, ettei minulla ollut oikein yhtään hajua mitä olin tekemässä. Opettajan sivuilta löytyi tekstiä muoteista, mutta ne eivät jotenkin auenneet minulle. Tein tehtävän kuitenkin jotenkin ja toivottavasti edes jotenkin oikein.
En tietenkään päässyt katsomaan sitä nyt, kun se ei ollut minun omalla koneellani pyörimässä eikä se tullut, kun menin nettisivulle.
d) Sun IP. Tee Flask-sivu, jolla näkyy tietoja käyttäjästä. Esimerkiksi request.user_agent.string, request.remote_addr. Muista ”from flask import request”.
Tämä tehtävä oli kanssa hankala, koska en osaa yhtään Pythonia. Tajusin, mitä siinä piti tehdä (samalla tavalla kuin a)-tehtävässä), mutten tiennyt, miten koodia piti muokata, jotta sen saisi toimimaan. Kokeilin tätä vähän eri tavalla. Löysin netistä valmiin koodin, jonka avulla sain jotakin tapahtumaan, kun kirjoitin selaimeen localhost:5000.
Aloitin tehtävien tekemisen klo 10.32 / 12.32 ja tein niitä tunnin ajan.
Tällä kertaa tehtävä oli helppo eikä ilmennyt mitään ongelmia. Olimme tehneet tehtävän jo tunnilla, joten sen toistaminen onnistui helposti muistiinpanoja seuraamalla.
Tein tehtävän omalla Lenovon x220 ThinkPad -kannettavallani. Avasin xubuntun livetikulta try-moodissa.
a) Tee alusta lähtien oma julkinen palvelin Internetiin.
Vinkkejä: Tee siis uusi virtuaalipalvelin (esim ”Droplet”) ja sille tarvittavat alkutoimet. Tee uusi DNS-nimi. Alanimiä voi yleensä tehdä maksutta: esim. jos hallitsee TeroKarvinen.com, voi tehdä hattu.TeroKarvinen.com. Tässä tehtävässä on tarkoitus sujuvoittaa koko prosessi, tee siis uusi A-tietue nimipalvelimeen ja uusi virtuaalipalvelin alusta lähtien, vaikka sinulla olisi jo sekä nimi että palvelin. Kun kaikki toimii ja raportti on valmis, voit poistaa turhan palvelimen ja jättää itsellesi esimerkiksi vain yhden käyttöön. Jos jäät jumiin, pyri päättelemään, mitkä osat toimivat ja mitkä eivät; ratkomme viimeiset ongelmat yhdessä tunnilla. Palautusaika on tuttuun tapaan 24h ennen seuraavaa tapaamiskertaa, eli vasta talvivapaan jälkeen.
Minulla oli aiempi palvelin digitalocean:issa, joten tein sinne uuden dropletin samalla tavalla kuin tunnilla tein sen aiemman: Distro: ubuntu; plan: standard ja 5$/month; hostname: harj4
SSH-yhteyttä varten tarvittava kertakäyttöinen salasana ilmestyi sähköpostiin ip-osoitteen kanssa.
ssh root@*ip-osoite*
Loin uuden salasanan nyt rootille, vaikka se kohta lukitaan, kun luomme uuden käyttäjän, jolla hallita palvelinta.
Ensiksi teimme reiän palomuuriinssh:lle:
#sudo ufw allow 22/tcp
#sudo ufw enable
Sitten teemme käyttäjän:
#sudo adduser emma
(anna salasana), (anna Full Name, ei muita tietoja)
adduser luo käyttäjän, mikä on helpoin tapa luoda käyttäjiä. Sitten haluamme luomamme käyttäjän sudo ja adm -ryhmiin eli:
#sudo adduser emma suo
#sudo adduser emma adm
Testaus toisella terminaalilla:
#ssh emma@*ip-osoite*
(anna salasana)
#sudo apt-get update (testaa toimiiko) -> Toimii
Lukitse root-käyttäjä:
#sudo usermod –lock root
Root-käyttäjä lukitaan, koska kaikki tunkeilijat tietävät sen nimen.
Seuraavaksi luon aladomainin. Menen name.com-sivulle, jossa domain sijaitsee. Sieltä Manage DNS:
Nyt hattu.emmavaittinen.social ottaa vastaan liikennettä. Teen sille vielä weppipalvelimen. Lataan Apache2, tein palomuuriin reiän:
#sudo ufw allow 80/tcp
#sudo ufw allow 443/tcp
#sudo ufw allow in ”Apache Full”
Nyt sain sen ”It works” -sivun tulemaan, kun laitan selaimeen tuon osoitten.
b) Vapaaehtoinen: Etsi lokeistasi merkkejä murtautumisyrityksistä ja analysoi ne.
#grep ”failure” /var/log/auth.log
Sain listan epäonnistuneista kirjautumisyrityksistä.
3. Choose how you’d like to run Certbot Either get and install your certificates…
#sudo certbot –apache
Run this command to get a certificate and have Certbot edit your Apache configuration automatically to serve it, turning on HTTPS access in a single step.
Sitten se pyysi sähköpostiosoitetta, ToS piti hyväksyä, kysyi haluanko antaa emailin Electronic Frontier Foundationille (vastasin että ei), pyysi domain nimen: hattu.emmavaittinen.social. Lopuksi kysyi haluanko uudelleenohjata HTTP liikennettä HTTPS:ään.
Testasin, onnistuiko se:
Ilmestyi sinne se lukon kuva eli sen laittaminen onnistui!
Lopuksi #exit -komento, jotta kirjauduin ulos SSH-yhteydestä.
Tämän harjoituksen aiheena ovat Apache-weppipalvelin ja LAMP kehitysalusta. Eli harjoittelimme Apachen asentamista ja käyttämistä.
Harjoituksia piti tehdä vähintään viisi. Olimme tehneet samoja asioita jo tunnilla, joten ne olivat tuttuja. Ongelmia tuli kuitenkin vastaan.
Tein tehtävät omalla Lenovon Thinkpad x220 kannettavalla tietokoneella. Aloitin tekemään neljää ensimmäistä tehtävää klo 11.56/13.56 ja niiden kanssa meni kaksi tuntia. Viimeistä tehtävää tein vähän yli tunnin.
Avasin xUbuntun livetikultani try-moodissa. Koneen perustoiminto oli OK (näppäimistö, hiiri, näyttö ym. toimivat kuin niiden piti toimia).
a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
Tämän teimme jo tunnilla, joten oli helppo vain toistaa uudestaan. Olin tehnyt muistiinpanot tunnilla ja seurasin niitä suurilta osin.
sudo apt-get update
sudo apt-get install apache2
TESTAUS: selaimeen localhost ja ip-osoite -> tuli ”It works!”-sivusto eli asentaminen onnistui
Tunnilla teimme reiän palomuuriin, mutta en tiennyt tarvitseeko sitä nytkin tehdä, joten en tehnyt (tämä osoittautui virheeksi!)
Seuraavaksi tein oman kotisivun käyttäjälle. Olin tehnyt muistiinpanot enkä oikein saanut kaikista kohdista selvää tai tajunnut miksi jokin asia tehtiin, mutta tein nyt miten niissä luki.
echo ”Emma” |sudo tee /var/www/html/index.html
TESTAUS: selaimeen localhost tai ip-osoite -> teksti ”Emma” näkyi:
Seuraavaksi loin sinne index.html tiedoston, johon kirjoitin “Emman kotisivu”. Tallennettuani sen ja päivitettyäni kotisivun sain tekstin näkymään sinne (en ottanut kuvankaappausta).
Seuraavaksi luodaan Virtual Host, jotta saa osoitteen emma.com toimimaan.
Mennään ensiksi /etc/apache2/sites-available hakemistoon, josta näkee mitä sivuja siellä on. Sieltä löytyy 000-default.conf -tiedosto, joka on automaattinen default-sivu. Haluamme nyt muuttaa sen.
Luomme uuden sivun: sudoedit emma.com.conf, johon kirjoitamme tekstin:
sudo a2ensite emma.com.conf (#jotta saadaan sivu enablettua)
sudo systemctl restart apach2 (-> apache taas päälle)
*tätä ennen olisi kannattanut testata sitä komennolla apache2ctl configtest
sudo a2dissite 000-default.conf (#jolla sai sen sivun pois päältä)
sudo systemctl restart apache2
Tässä kohtaa joku meni varmaan väärin, koska, kun menin emma.com tai www.emma.com sivuille, pääsin sivulle, joka myy domain nimiä enkä sille omalle palvelimeni sivulle.
Kokeilin laittaa /etc/hosts tiedostoon kohdan *ip-osoite*/~xubuntu/ emma.com www.emma.com, mutta sekään ei auttanut.
Laitoin sitten sinne hosts-tiedostoon *ip-osoite* emma.com www.emma.com. Nyt pääsin 403 Forbidden kohtaan eli sillein onnistuin saamaan sen yhteyden MUTTA vain www.emma.com osoittella, emma.com vei sinne domainostamis sivulle. Tuo 403 Forbidden tuli varmaan jostakin aiemmasta kohdasta.
Kokeilin sudo a2ensite 000-default.conf, mutta sekään ei toiminut. Disablasin sen sitten.
Kokeilin laittaa /etc/hosts tiedostoon erikseen sen emma.com (eikä siinä jatkona), mutta sekään ei auttanut. En siis pääse edes Localhost-urliin katsomaan tiedostoa. Se oli varmaan sen takia, kun tein tuon emma-sivun, poistan sen ja katson mitä tapahtuu. Nyt pääsen *ip-osoite*/~xubuntu katsomaan sitä tekstiä.
Olin tehnyt siis edellisessä kohdassa lisää virtual hosteja ja nettisivua (blingi.com ja http://www.blingi.com).
Palasin tekemään tehtävää ja tein sen reiän palomuuriin. (kommentti muistiinpanoistani: ”*kirosana* jos se on sen takia mennyt perseelleen” ja ”satavarmasti on”). [Tein reiän siis komennoilla: sudo ufw enable, sudo ufw allow 80/tcp]
Kuinkas ollakkaan jotakin alkoi menemään oikein: http://www.emma.com toimi (eli selaimeen tuli se sivu, jossa oli tekstiä), mutta emma.com ei toiminut. blingi.com ja http://www.blingi.com eivät toimineet. Olin ihan hukassa enkä tiennyt miten näin pääsi käymään. Varmaan on joku ilmiselvä selitys, mutten osaa sitä nyt itse sanoa.
(Olin siis siirtynyt tekemään seruaavaa tehtävää ja tehnyt sinne tuollaisen BMI-laskurin. Ajattelin, että saisin virheilmoituksia jos kirjoittaisin siihen vääriä muuttujia.)
b)Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.
Onnistunut sivulataus:
En nyt muista kirjoitinko siihen *ip-osoite*/~xubuntu vai mitä. Luultavasti tuon tai sitten localhost.
[06/Feb/2020:13:16:00 +0000] = aika, jolloin toiminto tapahtui
GET / HTTP/1.1 = GET is the request. The / is the resource we want to obtain, and the HTTP/1.0 tells the server that this is a HTTP/1.0 request
” 200 854 ” = 200 is the status code that the server sends back to the client. 854 = the size of the object returned to the client, not including the response headers
”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0” = the user agent. The User-Agent request header is a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or version of the requesting user agent.
Tässä on samat tiedot kuin tuossa edellisessä. Erona ovat lihavoidut kohdat. Jos status code alkaa 4:lla, virhe johtuu asiakkaasta. /~xubunt on virheellinen sivusto.
d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
Tein muutoksen apachen configuration tiedostoon. Kirjoitin sinne keyboardsmash tekstiä.
/etc/apache2$ apache2ctl configtest
Tuloksena sain:
AH00526: Syntax error on line 2 of /etc/apache2/apache2.conf:
Invalid command ’sfsdsd#’, perhaps misspelled or defined by a module not included in the server configuration
Action ’configtest’ failed.
The Apache error log may have more information.
Nyt tätä raporttia tehdessäni tajusin, että otin väärän tiedon talteen. En mennyt katsomaan error-logista, mitä siellä luki. Mutta tuossa kuitenkin kerrotaan, että siellä config-tiedostossa on invalid command.
i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.
En tätä tehtävää varten tehnyt erillisiä toimintoja. Katsoin vain, mitä olin jo saanut aikaiseksi. Sain viidestä eri statuksesta ainakin yhden merkinnän.
304 = client redirection response code indicates that there is no need to retransmit the requested resources. It is an implicit redirection to a cached resource.
301 = used for permanent URL redirection, meaning current links or records using the URL that the response is received for should be updated. The new URL should be provided in the Location field included with the response.
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.
Tämän kohdan tekemisessä meni tunti. En tehnyt tätä edellisten tehtävien perään, joten jouduin aloittamaan kaiken alusta.
Sain asennettua Apachen ja PHP:n, mutta MySQL:n asennus ei onnistunut. En siis voinut käyttää koko LAMP:ia yhtenä kokonaisuutena. MySQL:n asennuksen epäonnistumisen analysointi ja debuggaus olisi vienyt varmasti todella kauan aikaa ja ongelma vaikttui suuremmalta kuin minä, joten en tehnyt sitä.
sudo ufw allow in ”Apache Full” (#tämä päästää HTTP ja HTTPS liikenteen sisään)
TESTAUS: kirjoitin ip-osoitteen selaimeen ja pääsin aloitussivulle
Vaihe 2 – Asenna MySQL
sudo apt install mysql-server
Tässä vaiheessa tuli jo virheilmoitus, ettei asennus onnistunut kunnolla, mutten tajunnut sitä, koska se luki siinä niiden asennusrivien kanssa samassa. Tuon ohjeen mukaan olisi pitänyt tulla joku salasanan määrittely kohta, mutta sellaista ei tullut. Päätin myös, etten tekisi niitä, koska niiden tekeminen vaikutti monimutkaiselta ja koska tämä oli vain testi.
Vaihe 3 – Asenna PHP
sudo apt install php libapache2-mod-php php-mysql
sudo nano /etc/apache2/mods-enabled/dir.conf
Alin komento tehtiin, jotta saadaan weppi palvelin antamaan index.php tiedostoja eikä .html tiedostoja ensisijaisesti. Tiedostossa siirsin index.php jonon ensimmäiseksi.
sudo systemctl restart apache2
Nyt kuvittelin, että kaikki kolme oli asenneettu ja että LAMP oli kasassa.
Sitten lähdin testaamaan kaikkia yksitellen:
Apache 2-testaus
Testasimme jo, että weppi sivu näkyy, kun kirjoittaa ip osoitteen selaimeen. Ohjeet ehdottivat vielä, että tekisin virtual hostin. Tein sen samalla tavalla kuin edellisessä tehtävässä. Sain sen toimimaan blingi.com, mutta en www.blingi.com. Aluksi ei toiminut, kun olin tehnyt ohjeiden mukaan. Sitten menin laittamaan etc/hosts:iin sen ip-osoite www.blingi.com blingi.com, jolloin se toimi.
PHP-testaus
Ohjeet neuvoivat, miten sen toimivuutta voi testata. Luo tiedosto aikaisemmin luotuun web-rootiin:
sudo nano /var/www/your_domain/info.php
jonne lisätään pieni koodin pätkä:
<?php
phpinfo();
?>
TESTAUS: selaimeen ip-osoite/info.php, jolloin tuli se perussivu, joka pitäisi tulla. Eli PHP toimi.
MySQL-testaus
Tämän testaus ei onnistunut, koska se ei ollut asentunut kunnolla.
Katsoin ensiksi, onko se päällä:
mysqladmin -u root -p status
(#pyysi salasanaa, mutta en ollut antanut sellaista ja painoin vain enteriä)
(#sitten tuli tieto, että connect to server at localhost failed)
/etc/init.d/mysql status
active: failed
(mysql ei suostunut restarttaamaan)
$ systemctl status mysql.service ● mysql.service – MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; e Active: failed (Result: exit-code) since Tue 2020-02 Process: 15473 ExecStartPre=/usr/share/mysql/mysql-sy
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Se helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Sc helmi 11 11:37:09 xubuntu systemd[1]: Stopped MySQL Com helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: St helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Fa helmi 11 11:37:09 xubuntu systemd[1]: Failed to start M lines 1-11…skipping… ● mysql.service – MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Tue 2020-02-11 11:37:09 UTC; 13s ago Process: 15473 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Service hold-off time over, scheduling restart. helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Scheduled restart job, restart counter is at 5. helmi 11 11:37:09 xubuntu systemd[1]: Stopped MySQL Community Server. helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Start request repeated too quickly. helmi 11 11:37:09 xubuntu systemd[1]: mysql.service: Failed with result ’exit-code’. helmi 11 11:37:09 xubuntu systemd[1]: Failed to start MySQL Community Server.
Tässä vaiheessa yritän poistaa mySQL, mutta se ei onnistunut:
ERROR: Unable to start MySQL server: mysqld: Can’t read dir of ’/etc/mysql/conf.d/’ (Errcode: 13 – Permission denied) mysqld: [ERROR] Fatal error in defaults handling. Program aborted! Please take a look at https://wiki.debian.org/Teams/MySQL/FAQ for tips on fixing common upgrade issues. Once the problem is resolved, run apt-get –fix-broken install to retry. dpkg: error processing package mysql-server-5.7 (–configure): installed mysql-server-5.7 package post-installation script subprocess returned error exit status 1 Errors were encountered while processing: mysql-server-5.7 E: Sub-process /usr/bin/dpkg returned an error code (1)
FML
En nyt jaksa listaa tässä, mitä kaikkea kokeilin, mutta joku virhe oli jossakin mysql:n tiedostostossa.
Päätin sammuttaa koko koneen ja tehdä koko hässäkän alusta uudestaan.
Tuli taas sama ongelma sen kanssa. Seuraava on siitä asennuksen loppuosasta:
● mysql.service – MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Tue 2020-02-11 12:04:31 UTC; 10ms ago Process: 6797 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE) dpkg: error processing package mysql-server-5.7 (–configure): installed mysql-server-5.7 package post-installation script subprocess returned error exit status 1 dpkg: dependency problems prevent configuration of mysql-server: mysql-server depends on mysql-server-5.7; however: Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (–configure): dependency problems – leaving unconfigured Processing triggers for libc-bin (2.27-3ubuntu1) … No apport report written because the error message indicates its a followup error from a previous failure. Processing triggers for ureadahead (0.100.0-21) … Processing triggers for systemd (237-3ubuntu10.24) … Errors were encountered while processing: mysql-server-5.7 mysql-server E: Sub-process /usr/bin/dpkg returned an error code (1)
Tuolla oli tullut samanlainen ongelma. Eli jossakin socketissa oli joku asia väärin.
Yritin mennä katsomaan /var/lib ja sieldä cd mysql, niin en päässyt sisään. Tuli “Permission denied”
Tässä vaiheessa päätin antaa asian olla. En päässyt testaamaan LAMP:ia kokonaisuutena, mikä on harmi.
Tässä lopuksi vähän teoriaa LAMP:ista
A “LAMP” stack is a group of open-source software that is typically installed together to enable a server to host dynamic websites and web apps.
The Apache web server is among the most popular web servers in the world. It’s well-documented and has been in wide use for much of the history of the web, which makes it a great default choice for hosting a website.
MySQL is a database management system. Basically, it will organize and provide access to databases where your site can store information.
PHP is the component of your setup that will process code to display dynamic content. It can run scripts, connect to your MySQL databases to get information, and hand the processed content over to your web server to display
a)Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.
Tätä tehtävää tehdessäni koin pieniä ahdistuksen ja turhautumisen tunteita, koska en joko saanut lokiin merkintöjä tai sitten sain, mutten osannut lukea niitä, koska ”hauki on kala”-tyylisiä ohjeita ei oltu annettu lokien lukemisesta. Lopulta sain kuitenkin lokiin merkintöjä, jotka ymmärsin itse aiheutetuksi.
Tavallaan ymmärrän, ettei ole saatavilla yksityiskohtaisia dioja ja tekstimateriaaleja, mutta toisaalta, kun olen vielä aloittelija linuxin suhteen, kaipaisin sellaisia. Toisaalta itse googlettelemalla ja hakemalla tietoa pystyn löytämään ratkaisun ongelmiin/tehtäviin. Se, että siihen menee todella kauan aikaa, on vain turhauttavaa.
Sitten itse tehtävään. Eli tehtävänantona oli aiheuttaa onnistunut ja epäonnistunut/kielletty toimenpide lokiin ja analysoida rivi yksityiskohtaisesti.
Käytin tätä sivua: https://stackify.com/linux-logs/ tehtävän tekemisessä. Siellä neuvottiin, kuinka lokeihin pääsee käsiksi ja mitä mistäkin lokista näkee. cd/var/log -komennolla pääsi suoraan lokeihin.
Aloitetaan epäonnistuneesta ”onnistumisesta” (eli tein jotakin, mutten tiedä kirjattiinko se lokiin):
Aluksi yritin ladata Powershellin koemennolla sudo apt-get install powershell, mutta tuli ilmoitus, että sellaista pakettia ei ollut. Yritin katsoa syslogista, joko sinne olisi tullut merkintä: ei ollut (tai sitten en osannut katsoa, mikä oli merkintä tällaisesta tapahtumasta [en myöskään ottanut kopiota mistään tekstikohdasta, joten en jälkikäteen voi edes tarkastaa asiaa]). Tällein jälkikäteen mietittynä koko powershell ohjelmaa ei varmaan edes ollut saatavilla software centeristä (myöhemmin toisessa tehtävässä vastaan tuli samanlainen tilanne).
Sitten latasin onnistuneesti VLC-videontoisto-ohjelman komentorivillä. Tein taas saman virheen, enkä ottanut kopiota syslogista, kun menin sitä tarkastelemaan. Sinne varmaan tuli merkintä, mutten nähnyt/tajunnut mikä oli sen. Ongelmaksi huomasin sen, etten katsonut aikaa, jolloin tein toimintoja. Nyt kirjoitin ylös ajankohdat, jotta voisin lokeista lukea, mitä tapahtui juuri silloin. Poistin VLC-ohjelman sudo apt-get remove vlc -komennolla kello 16.58. Lokin kohta tuolta ajalta:
Feb 1 16:58:17 xubuntu systemd[1]: Starting Snappy daemon…
Feb 1 16:58:17 xubuntu snapd[6673]: AppArmor status: apparmor is enabled and all features are available
Feb 1 16:58:17 xubuntu snapd[6673]: backend.go:128: snapd enabled root filesystem on overlay support, additional upperdir permissions granted
Feb 1 16:58:17 xubuntu snapd[6673]: daemon.go:379: started snapd/2.39.2+18.04 (series 16; classic) ubuntu/18.04 (amd64) linux/5.0.0-23-generic.
Yritin googletella eri hakusanoilla vastauksia, mutta päätin, etten tuhlaa tämän asian analysointiin/selvittelyyn enempää aikaa. Teki mieli alkaa itkeä, kun ei näyttänyt mikään toimivan tai näkyvän missään. Ehkä tuossa lukee, että vlc-ohjelma poistettiin komentorivikehotteella. En nyt ala sitä sen enempää analysoimaan, vaan siirryn onnistuneisiin onnistumiseen ja epäonnistumiseen.
Päätin kokeilla jotakin muuta kuin ohjelmien asentamista. Loin kello 17.07 sudolle salasanan. En nyt yhtään muista, mitä komentoa käytin tai mistä löysin neuvon siihen (luultavasti tein komennolla passwd root, jos luen alla olevia lokeja oikein). var/log -> less auth.log lokista löytyi merkintä tapahtumasta:
Feb 1 17:07:24 xubuntu sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Feb 1 17:07:28 xubuntu passwd[7000]: pam_unix(passwd:chauthtok): password changed for root
Feb 1 17:07:28 xubuntu passwd[7000]: gkr-pam: couldn’t update the login keyring password: no old password was entered
Feb 1 17:07:28 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Tässä kohdassa haluan vain tuoda esille sen universaalin faktan, että omien heikkouksien ja virheiden myöntäminen on vahvuus. Tätä koko tehtävänantoa tekiessä tuli monta kertaa sellainen ”vitsi olen tyhmä” -hetki vastaan.
Ylläolevat lokit ovat siis auth.logista, jotka kopioin, mutten sen enempää analysoinut. Nyt kun niitä liitin tähän wordpressin taulukkoon, huomasin, että ihan ensimmäisellä rivillä lukee kirjaus VLC:n asentamisesta. Olin näköjään etsinyt lokimerkintää väärästä paikasta. Ehkä jossakin muualla on myös merkintä, mutta tuolla ainakin on siitä kirjaus.
Palataan salasanan muuttamiseen sudo:lle. Siitä tuli tällainen kirjaus: Feb 1 17:07:28 xubuntu passwd[7000]: pam_unix(passwd:chauthtok): password changed for root
”A PID is an acronym for process identification number on a Linux or Unix-like operating system. A PID is automatically assigned to each process when it is created. A process is nothing but running instance of a program and each process has a unique PID on a Unix-like system.” (lähde: https://www.cyberciti.biz/faq/howto-display-process-pid-under-linux-unix/)
Eli tässä tapauksessa: service = passwd & pid = numero 7000.
passwd:chauthtok -kohdan analysoisin siis niin, että se ilmoittaa, mitä palvelulle tehdään eli vaihdetaan salasana tässä tapauksessa (tai annetaan sellainen).
Lokimerkintä siis ilmoittaa, että salasana vaihdettiin root:ille.
Seuraavaksi halusin kokeilla epäonnistunutta kirjautumista. Siihen tarvitsin uuden käyttäjän, jolle luon salasanan.
Loin käyttäjän komennolla sudo useradd Blingi. Seuraavat merkinnät tulivat auth.log:iin:
Feb 1 17:17:44 xubuntu sudo: xubuntu : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/usr/sbin/useradd Blingi Feb 1 17:17:44 xubuntu sudo: pam_unix(sudo:session): session opened for user root by (uid=0) Feb 1 17:17:44 xubuntu useradd[7122]: new group: name=Blingi, GID=1000 Feb 1 17:17:44 xubuntu useradd[7122]: new user: name=Blingi, UID=1000, GID=1000, home=/home/Blingi, shell=/bin/sh Feb 1 17:17:44 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Sitten annoin käyttäjälle Blingi salasanan Blongo* komennolla sudo passwd Blingi (*tiedän, että salasana on huono, mutten nyt tässä vaiheessa jaksanut miettiä asiaa sen enempää, halusin vain päästä tehtävässä eteenpäin). Tämä sivu https://www.techwalla.com/articles/how-to-switch-users-in-a-linux-shell kertoi, miten pääsin vaihtamaan käyttäjiä eli kirjautumaan sisään Blingi-käyttäjänä. (selvennyksesi siis koirani nimi on Blingi ja Blongo on lempinimi, yhdessä ne ovat myös instagramini käyttäjänimi). Eli type ”su -” followed by a space and the target user’s username.
Sitten yritin kirjautua väärällä salasanalla:
Feb 1 17:22:00 xubuntu su[7218]: Successful su for Blingi by xubuntu Feb 1 17:22:00 xubuntu su[7218]: + /dev/pts/0 xubuntu:Blingi Feb 1 17:22:00 xubuntu su[7218]: pam_unix(su:session): session opened for user Blingi by (uid=999) Feb 1 17:22:00 xubuntu su[7218]: pam_systemd(su:session): Cannot create session: Already running in a session Feb 1 17:22:38 xubuntu su[7218]: pam_unix(su:session): session closed for user Blingi Feb 1 17:22:49 xubuntu su[7253]: pam_unix(su:auth): authentication failure; logname= uid=999 euid=0 tty=/dev/pts/0 ruser=xubuntu rhost= user=Blingi Feb 1 17:22:51 xubuntu su[7253]: pam_authenticate: Authentication failure Feb 1 17:22:51 xubuntu su[7253]: FAILED su for Blingi by xubuntu
/dev/pts/0 = shows that one is connected to the device file at /dev/pts/0
ruser ja rhost – yritin googlettaa, mutten löytänyt vastausta. Arvelen niiden olevan lyhenteet sanoista rootuser ja roothost, koska yritin tehdä käyttäjänvaihdosta xubuntu-userina.
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:’)
Vaikka tämä kohta on vapaaehtoinen, yritin kuitenkin tehdä sen. (huom! yritin, en siis onnistunut omasta mielestäni). Aloitin komennolla ssh-copy-id, ennen kuin oli edes asentanut palvelinta.
xubuntu@xubuntu:/$ ssh-copy-id Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] …] [user@]hostname -f: force mode — copy keys without trying to check if they are already installed -n: dry run — no keys are actually copied -h|-?: print this help
Eli tuloksena oli neuvoja, miten tuota komentoa voi käyttää.
1.Open the terminal application for Ubuntu desktop.
2. For remote Ubuntu server you must use BMC or KVM or IPMI tool to get console access
3. Type sudo apt-get install openssh-server
4. Enable the ssh service by typing sudo systemctl enable ssh
5. Start the ssh service by typing sudo systemctl start ssh
6. Test it by login into the system using ssh user@server-nam
Sain tehtyä kohdat 1.-5., mutta viimeistä kohtaa en ymmärtänyt, joten annoin tehtävän olla.
c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.
Tässä kohtaa olin väsertänyt tehtäviä yhtä putkeen varmaan alle sen pari tuntia, joten en henkisesti jaksanut enää miettiä unelmakomentoani. Tehtävänannossa jää myös epäselväksi, pitääkö asentaa yksi vai useampi ohjelma. Menin katsomaan, mitä kurssin muut opiskelijat olivat tehneet tässä kohtaa, joten kopioin Jussi Pelkosen vastausta (lähde: https://pelkjus.wordpress.com/2020/02/01/teht-2-komentorivi/ ), jossa hän oli samalla komennolla päivittänyt ja asentanut ohjelmat:
d)Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.
Tämänkin osion tekeminen tuotti tuskaa, koska koneeni alkoi toimimaan hitaasti ja jopa pysähtyi kokonaan yhdessä vaiheessa. Sammuttamalla ja käynnistämällä koneen uudestaan se toimi taas hyvin. En nyt pysty sen enempää kertomaan, miksi näin tapahtui tai mikä aiheutti sen.
Aluksi yritin asentaa wikit -ohjelmaa. Tuli ilmoitus, ettei pakettia löydetty. Vianmääritystä tämän sivun ohjeiden mukaan: https://itsfoss.com/unable-to-locate-package-error-ubuntu/ Ohjelman nimi oli oikein kirjoitettu komentoriville eli se ei ollut ongelmana. Tässä vaiheessa kone alkoi toimia hitaasti (ei kirjoittanut mitään ja hiiri liikkui hitaasti). Seuraavana ohjeena oli päivittää komenolla sudo apt update, jolloin kone pysähtyi kokonaan ja jouduin sammuttamaan koneen.
Uudelleen käynnistämisen jälkeen sudo apt update -komento toimi ja kone ei hidastellut. En kuitenkaan pystynyt edelleenkään lataamaan wikit:iä. Vianmääritysohjeiden seuraavassa vaiheessa piti katsoa, mikä xubuntun versio minulla on ja yhden nettisivun kautta katsoa, onko kyseinen ohjelma saatavilla sille. Tässä vaiheessa olin jo, että perkele kun pitää näin vaikeaksi mennä. Menin sitten katsomaan software centeristä, saisinko ladattua sen sieltä. No, selvisi, ettei sitä edes ole siellä. *insert facepalm gif*
Sitten latasin sellaisia ohjelmia, jotka olivat saatavilla:
lolcat, joka muuttaa komentorivin värit sateenkaariväreiksi:
boxes, joka luo erilaisia laatikoita tekstien ympärille:
Figlet Toilet, joka muuttaa tekstin paksuiksi kirjaimiksi:
Lopulta sain kuin sainkin tehtävät tehtyä, vaikka se olikin välillä ahdistusta ja tuskaa.
Opin käyttämään ja etsimään tietoa lokeista. En ehkä osaa lukea niitä täydellisesti, mutta jotenkin ne ovat nyt vähän selkeytyneet.
Osaan tehdä vianmääritystä ja tiedän, että kannattaa aloittaa helpoimmasta syyllisestä kuin mennä vaikeamman kautta.
Tein kyllä tunnilla muistiinpanoja opettajan ohjeista ja samoja asioita tuli tuossakin ohjeessa esille.
Asentaminen oli yksinkertaista:
Latasin Rufus-ohjelman, laitoin USB 3-muistitikun koneeseen kiinni, jolloin ohjelma havaitsi sen. Sitten latasin XUbuntun (xubuntu-18.04.3-desktop-amd64.iso), johon meni muutama minuutti. Rufus-ohjelmassa valitsin ladatun xubuntun ja painoin Startia. Tällöin tuli muutama varoitus: Syslinuxin versioista tuli varoituksia, että piti ladata joitakin tiedostoja, joiden avulla UXubuntu toimisi. ISOHybrid imagesta eli miten se voidaan kirjoittaa joko ISO imagena tai DD imagena. Käytin sen ehdottamaa ISO Image moodia.
Ennen desktopin avausta yritin tehdä varmennuskopion tietokoneestani varmuuden vuoksi. Tämä kohta opetti minulle sen, ettei tehtäviä kannata jättää palautusta edeltävään päivään/iltaan, sillä varmuuskopiointi kesti huomattavan kauan. Sain ainakin sitä odotellessa tehtyä muita koulutehtäviä. Käyttämäni ulkoinen kovalevy olikin viallinen, joten varmuuskopion tekeminen ei edes onnistunut. Hukkasin tähän kohtaan monta tuntia. Ehdin käydä myös salilla siinä välissä.
Olin myös ymmärtänyt tehtävän väärin. Xubuntua ei tarvinnut asentaa koneelle, vaan sitä käyttämällä try-muodossa sai tehtävät tehtyä.
b)
Avasin terminal emulatorin, johon laitoin komennon ”sudo lshw -short -sanitize”, jolloin sain seuraavat tiedot koneestani:
/0/0/0.0.0/1 /dev/sda1 volume 100MiB Windows NTFS volume
/0/0/0.0.0/2 /dev/sda2 volume 222GiB Windows NTFS volume
/0/0/0.0.0/3 /dev/sda3 volume 628MiB Windows NTFS volume
/1 power 42T4940
c)
Kokeilin ensimmäisen ohjelman latauksessa komentoriviä. Ensiksi yritin komennolla sudo apt-get install FocusWriter, mutta se ei tunnistanut isoja kirjaimia. Pienillä se sitten onnistui. Kirjoittaminen onnistui ohjelmalla hyvin.
Yritin ladata Gnumericin (Excel-tyyppinen sovellus) software centeristä, mutta se epäonnistui, koska joku extension ei ollut saatavilla xubuntun versiolleni.
Latasin Celtx-käsikirjoitusohjelman software centerin kautta. Sen lataus onnistui ja se toimi niin kuin piti.
d)
Kaikilla kolmella ohjelmalla oli eri lisenssit.
FocusWriter:
Free Software
This means that the software can be freely run, copied, distributed, studied and modified.
Users are bound by the following license: GPL-3.0+