Linux palvelimet: Syventävä aihe weppipalvelimista

Tehtävä a)

Aika hankkia virtuaalipalvelin ja luoda sille normaalitason käyttäjä! Tehtävää varten olen hankkinut Digital Oceanilta Ubuntu pilvipalvelimen (muisti 1Gb, kovalevy 25Gb) ja oman domain nimen. Hankkimani pilvipalvelin oli halvin Digital Oceanin tarjoama vaihtoehto, mutta silti ehdottomasti tarpeeksi iso käyttööni.
HUOM! Muista käyttää ainoastaan hyviä salasanoja palvelimellasi!

Ensimmäiseksi kirjauduin palvelimelle SSH:n avulla root tason käyttäjänä komennolla ssh root@IP-osoite. Kuitenkin kahden ensimmäisen epäonnistuneen kirjautumisen jälkeen huomasin, että koneeni internetyhteys oli katkennut. Olin vahingossa kiskaissut irti USB johdon, josta kannettava tietokoneeni saa yhteyden. Uuden yhteydenluonnin jälkeen palvelin tervehti minua “Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-122-generic x86_64)” viestillä merkiksi siitä, että olin saanut SSH yhteyden onnistuneesti palvelimelleni.

Seuraavaksi päätin asentaa ja configuroida koneelle palomuurin, jotta saisin rajattua pois käytöstä kaikki sellaiset portit joita en itse käytä. Kuitenkin ennen palomuurin (ufw, eli Uncomplicated FireWall) käynnistämistä tulee palomuurista avata SSH-yhteyden käyttämä portti 22, tai palomuuri sulkee myös minut palvelimen ulkopuolelle. Samalla päätin aukaista myös Apachen käyttämän 8080 portin, koska tulen asentamaan palvelimelle myös Apachen myöhemmin.

Komennot:

sudo ufw allow 22/tcp
sudo ufw allow 8080/tcp
sudo ufw enable

Seuraavaksi loin palvelimelle uuden käyttäjän ja annoin tälle käyttäjälle sudo ja admin tason oikeudet koneelle. Loin myös testikäyttäjän, jolla ei ole admin eikä sudo oikeuksia, jos joskus tarvitsen enemmän käyttäjiä esimerkiksi kouluprojekteissa. Tämän jälkeen lukitsin pois Root käyttäjän.

sudo adduser topi
sudo adduser topi sudo
sudo adduser topi adm
sudo adduser topi admin
sudo adduser testi
#Tässä vaiheessa kannattaa testata että käyttäjät toimivat oikein!
sudo usermod --lock root

Tämän jälkeen poistin myös /etc/ssh/sshd_config tiedostosta root login mahdollisuuden PermitRootLogin yes/no valinnalla. Päätin myös testata sainko oikeasti rajattua luomani testikäyttäjän sudo oikeudet. Sudo mkdir testikansio sai kuitenkin aikaan vain viestin, että käyttäjällä testi ei ole sudo-oikeuksia ja yrityksestä käyttää niitä on tehty raportti. Kuulostaa uhkaavalta! Tarkistin ‘topi’ käyttäjänä palvelimen /var/log/auth.log lokin ja sieltä tosiaan näkyi, että käyttäjä ‘testi’ on aloittanut uuden session ja yrittänyt suorittaa sudo komentoja.

Feb 12 19:55:03 pilviasema sshd[25819]: Accepted password for testi from IP-NUMERO port 55751 ssh2
Feb 12 19:55:03 pilviasema sshd[25819]: pam_unix(sshd:session): session opened for user testi by (uid=0)
Feb 12 19:55:03 pilviasema systemd: pam_unix(systemd-user:session): session opened for user testi by (uid=0)
Feb 12 19:55:03 pilviasema systemd-logind[1325]: New session 477 of user testi.
Feb 12 19:55:55 pilviasema sudo:    testi : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/testi/kansioo ; USER=root ; COMMAND=/bin/mkdir testikansio

Lopulta päivitin palvelimen sudo apt-get update ja sudo apt-get upgrade komennoilla.


Tehtävä s)

Kun olin saanut luotua itselleni uuden käyttäjän palvelimelleni, oli seuraavana vuorossa Apachen asennus ja käyttöönotto. Apache asentui normaalisti paketinhallinnan kautta komennolla sudo apt-get install apache2. Tämän jälkeen testasin että saan firefoxilla Apachen aloitussivun näkyviin localhostissa ja omalla IP-osoitteellani, mikä onnistui ilman ongelmia. Tämän jälkeen luonnollisesti vaihdoin Apachen aloitussivun joksikin vähemmän huomiotaherättäväksi (sudoedit /var/www/html/index.html).

Kun Apache oli saatu testattua ja toimi, oli aika liittää siihen hankkimani domain nimi topiniskala.com. Tämä tapahtui namecheap sivustolla luomalla domainilleni A Record ja CNAME Record, jotka viittaavat palvelimelleni. Näiden täyttämistä varten löytyy namecheapiltä monia hyviä tutoriaaleja, jotka kannattaa lukea läpi (esim: https://www.namecheap.com/support/knowledgebase/article.aspx/434/2237/how-do-i-set-up-host-records-for-a-domain ). Tässä myös kuva sivustosta:

namecheap

Namecheappiin tehdyt muutokset eivät välttämättä asetu voimaan heti, mutta lopulta sain auki omat kotisivuni osoitteessa www.topiniskala.com/~topi/


Tehtävä y)

Aika tarkistaa lokeista onko palvelimelleni jo mahdollisesti yritetty murtautua? Nämä lokit saa näkymään komennolla tail /var/log/auth.log.

tässä pieni pätkä lokista Auth.log:

Feb 12 21:01:49 pilviasema sshd[26514]: Disconnected from 137.74.3.147 port 40912 [preauth]
Feb 12 21:01:51 pilviasema sshd[26516]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=58.218.198.151 user=root
Feb 12 21:01:54 pilviasema sshd[26516]: Failed password for root from 58.218.198.151 port 57817 ssh2
Feb 12 21:01:58 pilviasema sshd[26516]: message repeated 2 times: [ Failed password for root from 58.218.198.151 port 57817 ssh2]
Feb 12 21:01:58 pilviasema sshd[26516]: Received disconnect from 58.218.198.151 port 57817:11: [preauth]
Feb 12 21:01:58 pilviasema sshd[26516]: Disconnected from 58.218.198.151 port 57817 [preauth]
Feb 12 21:01:58 pilviasema sshd[26516]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=58.218.198.151 user=root

Kuten näkyy, koneelle on yritetty murtautua lukuisia kertoja. Selvittääkseni mistä nämä yritykset ovat peräisin asensin paketinhallinnasta ‘whois’ sovelluksen (sudo apt-get install whois).

-Ensimmäinen lokissa näkyvä ip 137.74.3.147 on whoisin mukaan peräisin Puolasta Wroclavista.
-Toinen lokissa oleva ip 58.218.198.151 johtaa taas Kiinaan Pekingiin, ja less auth.log komennon mukaan on yrittänyt koko illan murtautua palvelimelle varmasti satoja kertoja.


Tehtävä b/c)

Palvelimella olisi hyvä olla jotain sisältöä testausta varten, joten päätin luoda itselleni jonkinlaisen index.html tiedoston. Ensiksi loin palvelimelle /home/topi/public_html kansion. Sen jälkeen ‘scp’ toimintoa kokeillakseni avasin toisen linux terminaalin omalle koneelleni ja loin siellä nanolla yksinkertaisen html pohjan. Perus Hello Worldin sijaan päätin lisätä sivulle jonkinlaisen oikean tervehdyksen ja linkit githubiini ja mixcloudiini. Tämän jälkeen lisäsin vielä sivulle githubiin tallentamani PHP laskimen ja etusivulle sitä varten linkin. Koska html-tageja sisältävää koodia on hankala lisätä tänne wordpressiin, lisään tähän vain linkin sivulleni, josta sivun lähdekoodin voi tarkistaa jos tarvetta. Laskimen lähdekoodit taas löytyvät githubistani.

www.topiniskala.com/~topi/


LINKIT:
www.digitalocean.com/
www.namecheap.com/
http://terokarvinen.com/2017/first-steps-on-a-new-virtual-private-server-an-example-on-digitalocean
www.topiniskala.com/~topi/
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/calc.php

Advertisements

Linux palvelimet: Apache-weppipalvelin ja LAMP kehitysalusta

Tehtävä j)

Asennamme ja testaamme koko LAMP pinon. Aloitamme lähtöasetelmasta, jossa uusi Linux (Xubuntu 16.04 LTS) käyttöjärjestelmä on juuri asennettu koneelle. Ensimmäinen vaihe on luonnollisesti pitää huolta, että Linux on ajan tasalle ja päivitetty, eli:

sudo apt-get update
sudo apt-get upgrade

Seuraavaksi asennamme ja testaamme Apache palvelimen. Apache löytyy paketinhallinnasta nimellä apache2 ja asennuksen jälkeen testaamme löytyykö Apache palvelin locahost osoitteesta. Testaamme myös localhostin pelkällä ip osoitteella.

sudo apt-get install apache2
firefox "http://localhost"
firefox "http://xxx.xxx.xxx.xxx"

On myös hyvä idea korvata Apachen aloitussivu jollakin muulla, jotta se ei herätä huomiota hakukoneissa uusia servereitä etsittäessä. Lisää esimerkiksi jotakin tekstiä html koodin tilalle.

sudo nano /var/www/html/index.html

Seuraavaksi luomme kansion verkkosivuille joita Apache hostaa. Luomme samalla jonkinlaisen index sivun jolla voimme myöhemmin testata muita LAMP osia.

cd
mkdir public_html
cd public_html
nano index.html

Koodi index.html sivuille:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/index.php

Seuraavaksi teemme vielä lopulliset testit Apachen toiminnasta ennen kuin siirrymme eteenpäin. Ennen niitä meidän kuitenkin tulee asettaa public_html userdiriksi ja uudelleenkäynnistää Apache.

sudo a2enmod userdir
sudo service apache2 restart
#vanhemmissa linux distroissa sinun mahdollisesti täytyy käyttää edellisen rivin
#sijaan koodia: sudo /etc/init.d/apache2 restart
whoami
firefox "http://localhost/~linuxkäyttajanimi

Jos edellisten komentojen jälkeen firefoxiin aukeaa luomamme Hello World verkkosivu Apache toimii!

Seuraavaksi asennamme paketinhallinnasta MySQL serverin ja clientin ja avaamme mysql clientin:

cd
sudo apt-get install mysql-server mysql-client
mysql -u root -p

Asennuksen aikana terminaaliisi aukeaa sininen ikkuna, johon mysql pyytää sinua luomaa root tason salasanan. Tämä salasana ei saa olla sama kuin Linux salasanasi ja sen tulee olla vaikea. MySQL kysyy tätä salasanaa myös clienttiin sisään kirjautuessa.
Kun olet päässyt sisälle mysql clienttiin, on aika luoda ensimmäinen testitietokanta. Annamme samalla käyttäjänimellesi käyttöoikeudet tietokantaan. Muista antaa taas uudelle käyttäjälle uniikki ja vaikea salasana.

CREATE DATABASE testi CHARACTER SET utf8;
SHOW DATABASES;
GRANT ALL ON testi.* TO käyttäjänimi@localhost IDENTIFIED BY 'tähän_tulee_salasana';

Seuraavaksi testaamme että luomamme tietokanta toimii oikein:

exit
mysql -u käyttäjänimi -p
CREATE DATABASE testitestitesti;

Mikäli saat tietokannan luontiyrityksestä ‘Access Denied’ viestin, niin kaikki toimii oikein. Tämän jälkeen syötämme jotakin dataa testitietokantaan ja suljemme mysql clientin:

USE testi;
CREATE TABLE testi (id INT AUTO_INCREMENT PRIMARY KEY, teksti VARCHAR(255), numero INT);
SHOW TABLES;
INSERT INTO testi (teksti, numero) VALUES ("Harjoitus", 12345);
INSERT INTO testi (teksti, numero) VALUES ("Kokeilu", 23456);
SELECT * FROM testi;
exit

Lopuksi vielä tallennamme muistiin käyttäjänimesi ja salasanasi siten, että et tarvitse niitä enää jatkossa mysql:n kanssa, vaan sisään kirjautumiseen riittää pelkkä ‘mysql’ komento:


nano .my.cnf
#Kirjoita tiedostoon seuraavat rivit:
[client]
user="käyttäjänimi"
password="käyttäjälle asettamasi salasana"
database="testi"

Lopuksi asennamme PHP:n paketinhallinnasa ja samalla luomme ja testaamme php koodia apachepalvelimellamme:

cd
sudo apt-get install php7.0-cli
nano public_html/test1.php
#Hae täältä koodi:
#https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/test1.php
#tallennuksen ja sulkemisen jälkeen konsoliin:
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/test1.php"

Valitettavasti PHP koodimme ei kuitenkaan vieläkään toimi. Meidän on säädettävä Apachen asetuksissa PHP käyttöön.

sudoedit /etc/apache2/mods-available/php7.0.conf
#Kommentoi pois rivit conf tiedoston ohjeen mukaan
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/test1.php"

Lopputuloksena sivulla tulisi lukea ‘Hello World! 50’ ja täten LAMP pinomme on valmiina verkkosivujen tekoa varten. Lopuksi lisäämme verkkosivuille koodia, jolla voimme testata kerralla kokonaista pinoa.
Luo nanolla tiedosto test2 ja lisää sinne koodia:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/test2.php
Jos kaikki php-koodin lisäämisen jälkeen toimii yhä niin kuin pitääkin (muista uudelleenkäynnistää apache!), niin: ONNITTELUT! Olet juuri asentanut LAMP pinon jolla valtaosa internetistä on rakennettu!


Tehtävä b)

Aika käydä läpi apachen logeja. Tarkastamme onnistuneen sivun avauksen logit:

cd /var/log/apache2
firefox "http://localhost/~käyttäjänimi/
tail access.log

Tuloksena saamme rivit:

127.0.0.1 - - [04/Feb/2018:14:48:32 +0200] "GET /~topiniskala/ HTTP/1.1" 200 397 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0"
127.0.0.1 - - [04/Feb/2018:14:48:32 +0200] "GET /favicon.ico HTTP/1.1" 404 500 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0"

Molemmat lokirivit alkavat Localhost IP osoitteella, jota seuraa päivämäärä ja kellonaika. Seuraavaksi loki käy läpi suoritetun kommennon localhost osoitteessa, eli ensimmäisessä lokirivissä GET pyyntö osoitteeseen topiniskala/. Lopputuloksena saamme koodin 200, joka tarkoittaa, että prosessi suoritettiin onnistuneesti. Toiselle numerolle (397) en löytänyt selostusta. Lopussa lokiin listataan selain, selaimen gecko koodi pohja ja käyttöjärjestelmä, joilla prosessi suoritettiin.
Toisella rivillä meillä on kuitenkin 404 virhe, eli favicon.ico ei löytynyt palvelimelta (404), mikä aiheutti geneerisen virheviestin (500).


Tehtävä c)

Seuraavaksi testaamme virhettä PHP koodissa. Ensiksi muutamme yhden $ alkuisista komennoista joksikin sanaksi, jota php koodi ei tunnista. Muutin “$pdoStatement->execute();” rivin execute sanan tilalle ‘SUORITA!!!”.

cd
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi"
cd /var/log/apache2
tail error.log

Tuloksena saamme rivin:

[Sun Feb 04 15:15:12.177182 2018] [:error] [pid 27526] [client 127.0.0.1:52294] PHP Parse error:  syntax error, unexpected '!' in /home/topiniskala/public_html/index.php on line 21

Lokirivi alkaa taas päivämäärällä, jota seuraa :error ilmoitus ja pid (process identification code) koodi 27526. Seuraavaksi loki kertoo clientin, joka on localhostin 127.0.0.1. Seuraavaksi pääsemme käsittelemään itse erroria, joka lokissa ilmoitetaan PHP Parse syntaksivirheenä, jonka aiheutti “!” merkki index.php tiedostossa rivillä 21.


Tehtävä f)

PHP laskin:

Luo public_html kansioon uusi calc.php tiedosto ja lisää sinne koodi:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/calc.php

Seuraavaksi:

sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/calc.php"

Linux Palvelimet: Komentokehote, ylläpito ja paketinhallinta

Linux Palvelimet kurssin toisen tehtäväpaketin vastaukset:

Tehtävä a)

Tehtävän tarkoituksena on tuottaa Linuxin logeihin kaksi merkintää, toinen onnistuneesta toimenpiteestä ja toinen epäonnistuneesta. Lähtöasetelmana tehtävää varten minulla on linux läppärillä (täältä näkee koneen tiedot) kaksi konsoli-ikkunaa auki, joista toinen on rootissa ja toinen /var/log/ kansiossa logien lukua varten. Ensimmäisenä vuorossa onnistunut toimenpide:
Ikkuna 1:

sudo apt-get update

Ja salasana annettu oikein.

Ikkuna 2:
Komento tail auth.log paljastaa, että logiin ilmestyivät seuraavat kolme riviä:

Jan 29 02:43:59 linuxasema sudo: topiniskala : TTY=pts/4 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/apt-get update
Jan 29 02:43:59 linuxasema sudo: pam_unix(sudo:session): session opened for user root by topiniskala(uid=0)
Jan 29 02:44:12 linuxasema sudo: pam_unix(sudo:session): session closed for user root

Jokainen näistä kolmesta logirivistä alkaa päivämäärällä, joka kertoo mihin aikaan eri operaatioita kirjattiin logiin (sekä kammottavan huonosta unirytmistä). Seuraavaksi mainittu linuxasema on taas minun linux läppärini nimi ja sudo tarkoittaa komentoa ‘Super User DO’.
Ensimmäinen näistä kolmesta rivistä kertoo teknistä infoa annetusta komennosta. TTY=pts/4 tarkoittaa tekstityyppistä komentoa, joka annettiin terminaalista numero 4. PWD=/ (PWD = Print Work Directory), ja kertoo mistä sijainnista komento suoritettiin, eli tässä tapauksessa “/” eli ROOT kansiosta. USER=root taas kertoo, että komennon toteutti järjestelmän root käyttäjä ja COMMAND=/usr/bin/apt-get update suoritetun komennon sijainnin.
Toisella ja kolmannella rivillä logi kertoo, että sessio on avattu root eli pääkäyttäjälle topiniskala ja 13 sekunnin kuluttua suljettu. Riveillä mainittu pam_unix on unix pohjaisten käyttöjärjestelmien standardi salasana-autentikointijärjestelmä ja toisen rivin lopussa mainittu (uid=0) on id numero jonka järjestelmä antoi pääkäyttäjälle session ajaksi.

Seuraavaksi vuorossa epäonnistunut toimenpide:
Ikkuna 1:

sudo apt-get upgrade

Tällä kertaa annamme väärän salasanan. Varmuuden vuoksi kokeilin kahta erilaista väärää salasanaa jos se tuottaisi logiin jotakin uutta.

Ikkuna 2:
tail auth.log paljastaa seuraavat kolme uutta riviä:

Jan 29 03:12:04 linuxasema sudo: pam_unix(sudo:auth): authentication failure; logname=topiniskala uid=1000 euid=0 tty=/dev/pts/4 ruser=topiniskala rhost= user=topiniskala
Jan 29 03:12:37 linuxasema sudo: pam_unix(sudo:auth): auth could not identify password for [topiniskala]
Jan 29 03:12:37 linuxasema sudo: topiniskala : 2 incorrect password attempts ; TTY=pts/4 ; PWD=/ ; USER=root ; COMMAND=/usr/bin/apt-get upgrade

Ensimmäinen näistä riveistä ilmoittaa autentikaation epäonnistumisesta käyttäjänimellä topiniskala. ‘uid’ ja ‘euid’ ovat pam_unixin antamia id tietoja,tty on sama terminaalikomentotieto kuin aikaisemmin, mutta en tiedä miksi se nyt mainitsee /dev/ kansion mukana.
Toisella rivillä mainitaan syy epäonnistuneelle kirjautumiselle, eli väärä salasana. Tämäkin tieto tulee pam_unix järjestelmältä ja viittaa käyttäjään topiniskala. Kolmas rivi kertoo toisesta epäonnistuneesta kirjautumisyrityksestä ja on mielenkiintoista huomata, että auth.log ei pelkästään vain listannut mekaanisesti jokaista tapahtumaa vaan yhdisti ilmoitukseksi kahdesta epäonnistuneesta salasanan autentikoinnista.


Tehtävä b)

Asenna itsellesi SSH demoni ja ota sillä yhteyttä omaan koneeseesi. Olin jo tunnilla asentanut itselleni openssh-server sovelluksen (sudo apt-get install openssh-server). Seuraavaksi loin nanolla tekstitiedoston foo.txt roottiin (sudo nano foo.txt). Lopuksi vielä tarkistin IP osoitteeni ‘ip addr show’ komennolla. Aika siirtyä itse ssh demonin testaukseen:


sudo scp topiniskala@xxx.xxx.xxx.xxx:/foo.txt /home/topiniskala/

Tiedosto siirtyi kansioon /home/topiniskala/ kuten pitääkin ja tail foo.txt kirjaa terminaliin tekstitiedoston sisällön, eli ‘bar’. Ainoa ongelma tehtävän aikana oli googlella löytämäni virheellinen ssh komento, joka oli muotoa ‘sudo scp foo.txt topiniskala@iposoite /kohde’, joka ei toiminut.


Tehtävä c)

Kirjoita itsellesi unelmien apt-get komento. Koska käytän linux läppäriäni etupäässä ainoastaan koodaamiseen ja kouluprojekteihin en tarvitse siihen oikeastaan muuta kuin ohjelmointiin liittyviä paketteja, mutta ehkä ainakin VLC olisi myös hyvä olla mukana kesän mökkireissuja ajatellen, eli:


sudo apt-get install gedit git openjdk-8-jre-headless curl openssh-server mongodb vlc


Tehtävä d)

Asenna apt-get paketinhallinnan kautta itsellesi kolme sovellusta.

1. Node

Olen käyttänyt nodea aikaisemmin Windowsilla erilaisissa ohjelmointiprojekteissa, mutta Linux versio on minulle tuntemattomampi.


curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
cd /home/topiniskala/Koodit/Node/kokeilu1
npm install express-generator -g

Tämä komentosarja asensi minulle nodejs paketin ja loi kokeilu1 kansioon pohjan node express projektille, eli testasi että node toimii.

Tässä tutoriaali node express projekteihin jota käytin: https://expressjs.com/en/starter/generator.html

2. Mongodb

Mongodb NoSQL shell palvelin.


sudo apt-get install mongodb
sudo mkdir /data/db

MongoDB tarvitsee toimiakseen tuon data/db kansion, jonka default sijainti on /data/db. Minulle tuo oletussijainti sopii hyvin joten loin jo ennen asennusta kyseisen kansion. Lopulta testasin että MongoDB palvelin toimii komennolla ‘sudo mongod’, mutta palvelin ei käynnistynyt. ERROR viesti kertoi, että socket 27017 jota mongodb olisi halunnut käyttää oli jo jonkin prosessin käytössä. Niinpä päätin tarkistaa mikä prosessi kyseistä sockettia käyttää ja komennolla ‘sudo lsof -i:27017
sain selville että minulla oli jo päällä mongodb kuuntelemassa kyseistä porttia. Tämä oli kuitenkin mahdotonta, koska ainoa kerta kun olin käynnistänyt mongodb:n oli, kun kokeilin sitä ilman tuota /data/db kansiota. Komento ‘sudo killall mongod’ sulki tuon päälle jääneen mongodb:n ja nyt palvelin käynnistyi kiltisti ja jäi odottamaan yhteydenottoja.

3. Lynx

Lynx on konsolipohjainen verkkoselain. Ihan mielenkiitoinen testata mutta en kyllä firefoxia kaikkine ongelmineen tuohon vaihtaisi…


sudo spt-get install lynx

Lynx käynnistyi ilman ongelmia, joten päätin seuraavaksi kokeilla avata sillä jotakin tuttua sivua jonka URLin muista. http://www.cinemassacre.com aukesi normaalisti, mutta luonnollisesti yksikään sivun videolinkeistä ei auennut (youtube).

Linux palvelimet: Asennus, työpöytä ja linsennsit.

Tehtävä a)
Aika asentaa ja oppia hallitsemaan Linux! Olen aikaisemmin kokeillut muutamaa eri Linux distroa, mutta en ole ikinä sukeltanut niiden maailmaan tarpeeksi, että kykenisin käyttämään niitä sulavasti esimerkiksi työympäristössä. Siksi päädyinkin Linux Palvelin kurssille, jolla saisin nujerrettua kaksi kärpästä yhdellä iskulla: Oppisin käyttämään Linuxia tehokkaammin, sekä oppisin lisää palvelimista ja sitä kautta backend puolen ohjelmoinnista.
Aikaisempi Linux kokemukseni tosiaan rajoittuu isolta osin Ubuntuun normaalissa arkikäytössä. Aikaisemmin olen kokeillut myös Fedoraa ja jotakin todella vanhaa (90-luvun) Debiania, mutta nämä kummatkin kokeilut jäivät vain pintaraapaisuiksi. Nyt kokeiltavana distrona on Xubuntu, joka toivottavasti saa herätettyä vanhan puolikuolleen mökkiläppärini uudelleen henkiin.
Latasin Xubuntun 16.04 LTS version, rakensin .ISO tiedostosta asennustikun ja siirryin läppärin ääreen asennushommiin. Minkäänlaisia backuppeja en läppärin sisällöstä voinut ottaa, koska olin aikaisemmin syksyllä formatoinut koneen ja ottanut ne vähät koneella olleet tärkeät tiedostot talteen backup-kovolleni. Eli pääsin kirjoittamaan Linuxin täysin tyhjälle kovalevylle. Toteutin asennuksen muuten täysin koulun ohjeiden mukaan ja ainoa ongelma jonka kohtasin, oli nettiyhteyden kanssa. Jostain syystä kännykästä USB:llä saatu yhteys katkeili, eikä minulla ollut ylimääräisiä Ethernet kaapeleita modeemille. Onneksi sain silti asennuksen onnistuneesti loppuun ja Linuxin toimimaan.

 


 

Tehtävä b)

H/W path Device Class Description
=======================================================
system Aspire 5742G (Calpella_CRB)
/0 bus Aspire 5742G
/0/0 memory 1MiB BIOS
/0/1a memory 6GiB System Memory
/0/1a/0 memory 4GiB SODIMM DDR3 Synchronous 1067 MH
/0/1a/1 memory 2GiB SODIMM DDR3 Synchronous 1067 MH
/0/29 processor Intel(R) Pentium(R) CPU P6200
/0/29/2a memory 3MiB L3 cache
/0/29/2c memory 256KiB L2 cache
/0/29/2d memory 32KiB L1 cache
/0/2b memory 32KiB L1 cache
/0/100 bridge Core Processor DRAM Controller
/0/100/1 bridge Core Processor PCI Express x16 Root
/0/100/1/0 display GF108M [GeForce 610M]
/0/100/2 display Core Processor Integrated Graphics C
/0/100/16 communication 5 Series/3400 Series Chipset HECI Co
/0/100/1a bus 5 Series/3400 Series Chipset USB2 En
/0/100/1a/1 usb1 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1a/1/1/1 multimedia 1.3M HD WebCam
/0/100/1b multimedia 5 Series/3400 Series Chipset High De
/0/100/1c bridge 5 Series/3400 Series Chipset PCI Exp
/0/100/1c/0 enp2s0 network NetLink BCM57780 Gigabit Ethernet PC
/0/100/1c.1 bridge 5 Series/3400 Series Chipset PCI Exp
/0/100/1c.1/0 wlp3s0 network AR9287 Wireless Network Adapter (PCI
/0/100/1d bus 5 Series/3400 Series Chipset USB2 En
/0/100/1d/1 usb2 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1d/1/1/2 communication SAMSUNG_Android
/0/100/1e bridge 82801 Mobile PCI Bridge
/0/100/1f bridge HM55 Chipset LPC Interface Controlle
/0/100/1f.2 storage 5 Series/3400 Series Chipset 4 port
/0/100/1f.3 bus 5 Series/3400 Series Chipset SMBus C
/0/100/1f.6 generic 5 Series/3400 Series Chipset Thermal
/0/101 bridge Core Processor QuickPath Architectur
/0/102 bridge Core Processor QuickPath Architectur
/0/103 bridge Core Processor QPI Link 0
/0/104 bridge 1st Generation Core i3/5/7 Processor
/0/105 bridge 1st Generation Core i3/5/7 Processor
/0/106 bridge 1st Generation Core i3/5/7 Processor
/0/1 scsi0 storage
/0/1/0.0.0 /dev/sda disk 320GB WDC WD3200BPVT-2
/0/1/0.0.0/1 /dev/sda1 volume 487MiB Linux filesystem partition
/0/1/0.0.0/2 /dev/sda2 volume 297GiB Extended partition
/0/1/0.0.0/2/5 /dev/sda5 volume 297GiB Linux filesystem partition
/0/2 scsi1 storage
/0/2/0.0.0 /dev/cdrom disk DVD A DS8A5SH
/1 power Li-lon Battery
/2 power OEM_Define5


Tehtävä c/d)
Asenna itsellesi 3 uutta ohjelmaa ja testaa niitä:
(Itseasiassa lisäsin ohjelmia paljon enemmän kuin nämä kolme, joten päätin valita asennetuista ohjelmista kolme erilaista asennusprosessia.

Clementine:
Ensimmäiseksi tarvitsen jotakin musiikin kuuntelua varten. Minulla on levyhyllyssä yli tuhannen vinyylilevyn kokoelma synapoppia, postpunkkia ja teknoa dj hommia varten, sekä kovalevyllä näistä kopioidut digitaaliset versiot. Ennen keikkoja kappaleiden arkistointi, järjestely, soittolistoiksi rajaaminen ja kuuntelu ovat ehdottoman tärkeitä mukaan otettavia levyjä valittaessa. Windows puolella olen käyttänyt tähän Foobaria, joka on ylivoimaisesti paras sovellus tähän tarkoitukseen, jota olen ikinä käyttänyt, mutta jolle valitettavasti ei ole Linux versiota. Onneksi kuitenkin google löysi useita foorumikeskusteluita, joissa ihmisillä oli sama ongelma kuin minulla, eli tarvitsivat Foobarin kaltaisen luotettavan musiikkiohjelman Linuxille. Yleinen konsensus tuntui olevan, että ohjelma nimeltä Clementine olisi paras vaihtoehto. Sudo apt-get install clementinen jälkeen nopean testauksen perusteella kyseisessä ohjelmassa voisi olla potentiaalia. En osaa kuitenkaan sanoa ilman viikkoja kestänyttä aktiivista käyttöä, että tuleeko Clementinestä minulle pysyvä Linux puolen musiikkisovellus.

Lisenssi: Clemetine on vapaa ohjelmisto GPL v3 -lisenssillä.

Visual Studio Code:
Visual Studio on itseasiassa Microsoftin kehittämä sovellus, joten tuntuu hieman hullulta asentaa se Linux koneelle, mutta koska koulussa Ohjelmistotuotannon Teknologiat ja Ohjelmistoprojekti 2 kursseilla käytämme sitä React Nativen yhteydessä, ja koska käytämme kyseisillä kursseilla omia läppäreitä, on kyseisen ohjelman lataaminen (lähes) välttämätöntä. Visual Studiota ei saa ladattua perus apt-get komennolla, vaan ensin minun täytyi lisätä curl ja apt-get komennoilla lisää repositoryja apt-gettiin, ja vasta sitten normaali sudo apt-get install komento toimi. Itse ohjelma toimii niin kuin pitääkin, ei ongelmia.
(https://code.visualstudio.com/docs/setup/linux)

Lisenssi: Source code: MIT License; Binaries: Freeware;

ASMX:
Minulla on ollut jo parin vuoden ajan unelma, että saisin ohjelmoitua vanhalla 68k Assemblyllä Sega Mega Drive konsolille jonkinlaisen pelin. Olen tässä nyt joulun aikana pikkuhiljaa aloittanut kokeilut kyseisellä kielellä ja tarvitsen luonnollisesti compilerin binäärien luomista varten. Microsoft puolella olin pari kertaa ehtinyt kokeilla asm68k.exe compileria, mutta linux puolella ASMX on käsittääkseni eniten käytetty ja suositeltu compiler 68k assemblylle. ASMX:ää ei tietääkseni apt-get komennolla löydy, joten latasin sen .tar pakettina ja buildasin itse. Pienen kikkailun jälkeen sain compilerin toimimaan ja kokeilin sitä koodaamaani Hello Worldiin. Massiivisen errorilistan jälkeen sain ainakin testattua, että ASMX toimii oikein, vika omassa koodissa.

Lisenssi: En löytänyt mitään infoa ohjelman linsenssistä, mikä ei sinänsä olen ihme, sillä ensimmäisen Motorola 68000 prosessori valmistettiin 1979 ja viimeiset kyseistä prosessoria käyttävät laitteet taisivat olla Sega Mega Drive (1988) ja Amiga 500 (1987).


Tehtävä e)
Lista ohjelmista joita käytän usein, sekä niiden vapaat Linux versiot:

VLC -> Löytyy Linuxille käytännössä täysin identtisenä. GNU lisenssi.
Foobar -> Ei Linux versiota, Clementine on (toivottavasti) lähin vastine.
Virtual DJ -> Linux versio työn alla, tuskin valmistuu ikinä. Toimii Winellä huonosti. Yksikään linuxille tehty dj sovellus ei ole lähelläkään yhtä hyvä.
MS Word -> Libre Office Writer
Eclipse -> Löytyy Linux versio. Open Source, EPL lisenssi.
Notepad++ -> Gedit


Tehtävä f)
Musiikki, koulutehtävät, koodausprojektit, kuvat ja muu vastaava tallennettu backupkovolle.