h6

Tässä harjoituksessa asennettiin kolme eri ohjelmointiympäristöä. Valitsin ympäristöiksi Java, C ja Ruby. Lisäksi ohjelmoin sovelluksen, joka pyytää ensimmäisen luvun ja laskee siitä eteenpäin Fibonacci sarjaa syötettyyn päättävään lukuun asti. Lisäksi aloitettiin vanha labraharjoitus.

Nämä harjoitukset ovat http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op sivustolta osana Haaga-Helian järjestämää Linux-palvelimet kurssia.

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

http://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04

https://www.linux.fi/wiki/Ohjelmointikielet

JAVA:

Kirjoitin ohjelman nimeltä HelloWorld.java.

Yritin kääntää sitä komennolla javac HelloWorld.java. Sain ilmoituksen puuttuvista ohjelmista.

Kun olin asentanut kaikki ohjeessa olevat ohjelmat, sain käännettyä .ohjelman komennolla javac HelloWorld.java. Yritin ajaa ohjelmaa https://www.linux.fi/wiki/Java sivuston ohjeen mukaan, mutta sain virheilmoituksen. Teron sivujen http://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04 ohjeen mukaan huomasin, että luokkaa ei tule lisätä ajokomentoon. Komennolla java HelloWorld sain ohjelman toimimaan.

C:

Kirjoitin ohjelman HelloWorld.c.

Yritin kääntää gcc HelloWorld.c, mutta sain ilmoituksen, että gcc kääntäjää ei löytynyt.

Asensin ohjelman ilmoituksen mukaan ja käänsin ohjelman uudestaan komennolla gcc HelloWorld.c -o HelloWorld. Kääntämisen jälkeen ajoin ohjelman komennolla ./HelloWorld.

Ruby:

Kirjoitin ohjelman HelloWorld.rb.

Yritin ajaa sitä komennolla ruby HelloWorld.rb. Ei onnistunut, vaan sain ilmoituksen ruby ympäristön puuttumisesta.

Asensin ilmoitetun ohjelman komennolla sudo apt-get install ruby
Asennuksen jälkeen ajo uudestaan komennolla ruby HelloWorld.rb
ja ohjelma toimi halutunlaisesti.


b) (vapaaehtoinen) Kirjoita kullakin kielellä yksinkertainen ohjelma, jolla on jokin käyttötarkoitus. Ideoita: hyödynnä kielen vahvuuksia. Ota käyttäjältä syöte, tee jokin lasku ja tulosta vastaus (input-processing-output).

JAVA:

Tähän koodasin Fibonacci https://en.wikipedia.org/wiki/Fibonacci_number sarjan:

Ja tässä ohjelman suoritus:

Jätin koodauksen tähän ja siirryin toiseen vapaaehtoiseen eli vanhan tuntitentin ratkaisuun.

Googlaamalla ja opettajan ohjeilla löysin labraharjoituksen oheisesta linkistä:

http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-6-torstai-alkukevat-2018-5-op:

Sivusto pitää sisällään seuraavan ohjeen aina ensimmäiseen omaan sysstat asennukseen asti.

## LAMP Asenna LAMP (Linux, Apache, MySQL, PHP) ja testaa sen toiminta. ## Kuormitusta Kerää kuormitustietoja koneelta koko harjoituksen ajalta. Analysoi tiedot tiiviisti aivan harjoituksen lopuksi. ## Sorkka ja Rauta Oy:n CRM Tarvitsemme asiakastietokannan. Tee tietokanta, jossa on seuraavat asiakkaat: - Kulta ja Kaivos ky - Piilosana ry - MetalliMake Tee PHP-ohjelma, joka lukee nämä tietueet. Laita tämä sivu näkyviin osoitteessa http://sorkkacrm.example.com Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. Tässä harjoituksessa sivulle pääsyä ei tarvitse rajoittaa salasanalla, vaan sen tule näkyä kaikkialle nettiin. ## Rosvoja porteilla Onko koneellemme yritetty murtautua? (Kyllä). Etsi omalta paikalliselta koneeltasi todisteet tapauksesta, jossa koneellesi on yritetty murtatua. Analysoi tiiviisti tähän liittyvät tiedot. ## Sorkan sivut Tee staattinen HTML5 weppisivu, jonka otsikkona (molemmat title ja h1) on "Sorkka ja Rauta Oy". Laita sivu näkyviin osoitteeseen http://rauta.example.com/ . Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. ## Einarin esimerkki Einari Vähä-aho ryhtyy koodaamaan. Tee einarille käyttäjä 'einari'. Tee einarille esimerkkikotisivu PHP:lla ja laita se näkymään osoitteessa http://localhost/~einari/ . Esimerkkisivun pitää tulostaa "Einari" käyttäen PHP:n print-funktiota. [Ohje päivittyi harjoituksen edetessä]

Lopuksi

Moodleen palautetaan neljä tiedostoa: Screenshot*.png, lab.txt, labter.log ja lab.tar.gz.
1) Laita ruudulle testit jokaisesta asiasta, jota olet tehnyt. Ota täsmälleen yksi ruutukaappaus ja tallenna se oletusnimellä
Screenshot*.png (PrintScrn, enter, enter).
2) Suorita labter saadaksesi /var/log/
labter.log. (Labter-komento on koneellasi valmiina. Yksi opiskelija luovutti toimivan konepaikan toiselle ja teki omalla läppärillä, tässä hänelle pakettina nämä samat ohjelmat.)
3) Kirjoita seuraavalle ylläpitäjälle
lab.txt, jossa on

  • Nimesi ja opiskelijanumerosi
  • Linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi
  • Lista toimivista, testatuista palveluista osoitteineen (URL tms)
  • Lista palveluista, jotka eivät vielä toimi
  • Vastaukset ohje.txt:n kysymyksiin (analysoi, etsi todisteet…)
  • Kaikkien käyttäjien salasanat ja käyttäjätunnukset
  • Kopio einarin esimerkkisivun php-lähdekoodista
  • Kopio /var/log/labter.log -tiedostosta
  • Oma arviosi arvosanasta Haaga-Helian asteikolla 1-5: läksyt, arvioitava harjoitus, kokonaisarvio.

Asensin sysstat-ohjelman tarkkailemaan palvelimen kuormaa: sudo apt-get install sysstat

Muokkasin sudoedit /etc/default/sysstat -komennolla tiedostoa eli vaihdoin ENABLED=”true” ohjeen ruudulla näkyvän ohjeen mukaan.

Käynnistettin sysstat uudelleen: sudo service sysstat restart
Tarkisttin CPU päivän käyttö: sar -u, josta huomataan, että palvelu oli juuri käynnistetty uudelleen.

Asensin ssh: sudo apt-get install ssh

Sallin portit 22 ja 80: sudo ufw allow 22/tcp ja sudo ufw allow 80/tcp

Palomuuri päälle: sudo ufw enable

Asensin Apache: sudo apt-get install apache2

Apachen testausta:

Luotiin hakemisto: mkdir public_html ja siirrytään siihen cd public_html
Luotiin kotisivu nano index.html
Mahdollistettiin käyttäjän kotisivu sudo a2enmod userdir
Käynnistettiin Apache uudestaan: systemctl restart apache2

Saatiin kotisivu näkyviin ja voitiin todeta, että Apache toimi:

Asennettiin PHP sudo apt-get install libapache2-mod-phpMuokattiin PHP konfig-tiedostoa: sudoedit /etc/apache2/mods-available/php7.2.conf
Tiedostosta kommentoitiin rivejä lopusta:

Muokattiin kotisivua:

Käynnistettiin Apahcen uudelleen: systemctl restart apache2

Yritin asentaa MySQL: sudo apt-get -y install mysql-server mysql-client
Asennus päättyi virheeseen, kuten h3 tehtävässä…

Luovutin ja yritin asentaa MariaDB:n: sudo apt-get install mariadb-client mariadb-server
Asennus ei onnistunut, vaan sain nipun herjoja:

Ensimmäinen MySQLServerin asennus rikkoi ilmeisesti tämänkin….

Tässä vaiheessa palautin tehtävän ja yritän asennuksia puhtaalta pöydältä palautuksen jälkeen.

Tänään on 10.3.2019 ja jatkan harjoitusta 4.3 tehdyn palautuksen jälkeen:

Tällä kertaa aloitin Apachen asennuksesta, koska viimeksi juutuin tietokannan asennukseen.

<!DOCTYPEe html>

<html lang="fi">
  <head>
    <meta charset="utf-8">
    <meta name="author" content="Anne">
    <meta name="description" content="Sivun kuvaus: Tämä on Annen kotisivu.">
    <title>Annen kotisivu</title>
  </head>
<body>
<h1>This is Ann's home page</h1>
</body>
</html>

Tässä kotisivun koodi HTML-muodossa. Muutoin Apache ja PHP asennukset kuten aikaisemminkin. Huomasin, että Apache oletussivua en ollut muuttanut viimeksi, joten siihen komento: echo ”Uusi sivu” | sudo tee /var/www/html/index.html

Alkuperäisestä puuttui, että index.html pitää kopioida index.php ja poistaa index.html. Komennot siis cp index.html index.php ja rm index.html. Tai sitten nimetään index.html index.php-tiedostoksi eli komentona mv index.html index.php.

Tällä kertaa MariaDB asennus meni läpi komennolla sudo apt-get install mariadb-client mariadb-server

Asennus ei kysynyt salasanaa, joten sudo mysql_secure_installation

Asensin toisessa ikkunassa salasanageneraattorin komennolla sudo apt-get install pwgen. Komennolla pwgen 15 1 loin uuden salasanan.

Komennolla sudo mariadb -u root sain MariaDB promptin esiin.

Testausympäristön luonti (tässä ei kuvia eikä selityksiä:
CREATE DATABASE books;
GRANT ALL ON books.* TO books@localhost IDENTIFIED BY ’jooFoh2oophei6W’;
mariadb -u books -p;
USE books;
create table if not exists books(id bigint auto_increment primary key, name varchar(128)) charset utf8;
INSERT INTO books (name) VALUES (”Verikivet”), (”Kultamuna”), (”Pedon palkka”);



Loin uuden tietokannan komennolla CREATE DATABASE asiakkaat ENTER ja ;. Jos tietokanta pitää pudottaa, se tehdään komennolla DROP DATABASE. Katsoin kaikki tietokannan komennolla show databases;

Käyttäjäoikeudet tietokantaan: MariaDB [(none)]> GRANT ALL ON asiakkaat.* TO asiakkaat@localhost IDENTIFIED BY ’Cie3rahr8aichie’;

Kirjauduin pois tietokannasta exit-komennolla ja kirjauduin uudestaan asiakkaat-käyttäjänä xubuntu@xubuntu:~$ mariadb -u asiakkaat -p;

Vaihdoin tietokannan: USE ASIAKKAAT;

Loin taulun create table if not exists asiakas(id bigint auto_increment primary key, name varchar(128)) charset utf8;

Komennolla INSERT INTO asiakas (name) VALUES (”Kulta ja Kaivos Oy”), (”Piilosana ry”), (”MetalliMake”); lisäsin tehtävän asiakkaat asiakas-tauluun.
Tarkistin, että asiakkaat ovat taulussa:

Annoin komennon sudo apt-get install php-mysql, jotta sain php-koodista yhteyden tietokantaan.

Koodasin PHP:lla sovelluksen, joka hakee asiakkaat tietokannasta: Esimerkkikoodia löytyy opettajan sivustolta: http://terokarvinen.com/2018/php-database-select-and-insert-example-php-pdo

Tässä koodia opettajan esimerkin pohjalta:

<!DOCTYPEe html> <html lang="fi">   <head>     <meta charset="utf-8">     <meta name="author" content="Anne">     <meta name="description" content="Sivun kuvaus: Tämä on Annen kotisivu.">     <title>Annen kotisivu</title>   </head> <body> <h1>This is Ann's home page</h1> 
<?php // connect $pdo=new PDO("mysql:host=localhost;charset=UTF8;dbname=asiakkaat", 'asiakkaat', 'Cie3rahr8aichie');
// list
$pdoStatement=$pdo->prepare('SELECT * FROM asiakas;'); $pdoStatement->execute();
$hits=$pdoStatement->fetchAll();
foreach($hits as $row) { echo "<p>".$row['id']." ".htmlentities($row['name'])."</p>\n"; }
?> </body> </html>



Sama kuvana:

Ohjelma näytti tyhjää sivua, joten komennolla $ tail /var/log/apache2/error.log pääsin katsomaan, mikä vika PHP-koodissa oli.

En saanut täysin selvää virheilmoituksesta, mutta googlaamalla asia vähän selvisi ja lopputulos oli, että asensin uudestaan sudo apt-get install php-mysql ja uudelleenkäynnistin Apahcen, niin sain tiedot näkyviin. Pitääkö nano .my.cnf tiedostoa muokata, se jäi minulle vielä vähän epäselväksi.

Hosts tiedoston muokkaus: xubuntu@xubuntu:/etc$ sudo nano hosts

Lisäsin sorkkacrm.example.com localhostiin.

Loin public_html kansion alla sorkkacrm.example.com hakemiston. jonka alle kopioin aikaisemmin luodun index.php-tiedoston. xubuntu@xubuntu:~/public_html$ cp index.php sorkkacrm.example.com/

Muokkasin Apachen config-tiedostoa uudelle sivulle: xubuntu@xubuntu:/etc/apache2/sites-available$ sudoedit sorkkacrm.example.com.conf

Tiedostoon pääsee myös käsiksi komennolla: sudoedit /etc/apache2/sites-available/sorkkacrm.example.com.conf

Annoin oikeudet: sudo a2ensite sorkkacrm.example.com

Jos sivut eivät vieläkään näy, tarkista, että .conf-tiedosto on oikein, tietokanta, käyttäjä ja salasana on oikein, taulun nimi on oikein ja osoite on oikein. Muista myös shif-näppäin ja virkistys…

Sorkan sivut näkyivät osoitteessa sorkkacrm.example.com

Murtautumisyrityksiä tarkkailin /var/log hakemistossa komennolla: tail -F auth.log.

Asensin whois-ohjelman, jolla pystyy selvittämään, kuka yrittää hakkeroitua palvelimelle: sudo apt-get install whois.

IP-osoitteita voin kysellä komennollawhois IP-osoite

rauta.example.com – sivujen luonti:

Kopioin aikaisemmin luodun .conf tiedosto uudeksi sudo cp sorkkacrm.example.com.conf rauta.example.com.conf

Tiedoston muokkaus xubuntu@xubuntu:/etc$ sudoedit rauta.example.com.conf

Hosts-tiedoston muokkaus:

sudo nano hosts

Staattisen sivun luonti:


Oikeudet kuntoon sudo a2ensite rauta.example.coms
Serverin uudelleenkäynnistys: systemctl restart apache2

Einari käyttäjän puuhat:

Lisään käyttäjän einari: sudo adduser einari
Jostain syystä einarin salasana ei mene läpi…

Kuvastakin näkyi, että nyt käyttäjä einari on luotu, mutta einarilla ei ole salasanaa…
Yritin poistaa einaria https://www.linux.fi/wiki/K%C3%A4ytt%C3%A4jien_hallinta sivustolta löytyvän ohjeen avulla, mutta se ei onnistunut. Lopuksi keksin antaa sudo passwd einari – komennolla uuden salasanan ja se onnistui. Alla kuva näistä kokeiluista.

Minulla oli SSH aikaisemmin tehtävässä asennettuna, joten annoin suoraan ssh einari@localhost komennon ja olin sisällä einari käyttäjänä.
Loin kansion mkdir public_html ja siirryin siihen cd public_html.
Muokkasin Einarin sivua nano index.php.

Einarin kotisivu:

Katsoin lisää vanhoja labraharjoituksia ja huomasin, että jossain harjoituksissa oli käytetty pythonia. Opettajan linkistä http://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04 löytyy esimerkki myös python-kielellä. Asennuksessa asennetaan siis Python3.

Olin kertaustunnin sairaana, joten tässä vielä vähän lisää.


Tähän perään vielä osa toisesta labraharjoituksesta: http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-7-tiistai-alkukevat-2018-5-op

## mitakello Tee uusi komento 'mitakello', joka tulostaa kellonajan. Komennon tulee toimia kaikilla käyttäjillä, kaikista hakemistoista pelkällä nimellä kutsuttuna. 
## Metapaketti Tee meille metapaketti, joka asentaa ohjelmat: git, httpie, curl, mitmproxy. Kuulemma "karvinen equivs" hakusanalla saattaisi löytyä ohjeita. Liitä metapaketin lähdekoodi palautettavan lab.txt:n loppuun.
## Metapaketin uusi nimi Muuta metapaketin nimeksi xoy-tools. Asenna se.

mitakello:
nano mitakello
Täältä löytyi asiaan liittyvää materiaalia: https://www.tldp.org/LDP/abs/html/timedate.html
ja https://www.cyberciti.biz/faq/how-to-read-time-in-shell-script/

Tiedoston oikeudet näkyvät komennolla ls-l

Oikeuksien muutos: chmod ugo+x mitakello.sh
Kopiointi hakemistoon, jossa yleisesti ajettavia ohjelmia: sudo cp mitakello.sh /usr/local/bin/
Asennetaan ssh: sudo apt-get install ssh
Lisätään käyttäjä: sudo adduser toinen ja salasana
Kirjaudutaan sisään toinen käyttäjänä: ssh toinen@localhost
Annetaan komento mitakello.sh ja saadaan päivä ja kellonaika.

Kokeilen saman vielä ilman .sh päätettä, kun en ollut varma pitääkö se olla mukana…

Täällä lisää oikeuksista: https://www.linux.org/threads/file-permissions-chmod.4124/

Metapaketti ohjetta löytyy http://terokarvinen.com/2011/create-deb-metapackage-in-5-minutes








Tässä tervapallon teko-ohjetta opettajan sivulta:

Tee tervapallo lab*.tar.gz tärkeimmistä tiedostoista.

$ sudo tar --exclude .mozilla --exclude .cache --exclude lab-*.tar.gz -zcf lab-$(whoami)-$(date +%Y-%m-%d).tar.gz /etc/ /var/log/ /home/
$ sudo chown $(whoami) lab-*-*.tar.gz

Ohjetta löytyy myös: https://www.linux.fi/wiki/Tarball


Labraharjoituksesta löytyi myös wowstats komento ja tässä siihen ohjetta…

https://mikkoknutas.wordpress.com/2017/10/09/linux-kurssin-kertausta/


Viitteet:

Karvinen, Tero: Oppitunnit 2019-02-26, Linux palvelimet -kurssi

http://terokarvinen.com/2006/raportin-kirjoittaminen-4

http://terokarvinen.com/2018/aikataulu-linux-palvelimet-ict4tn021-3004-ti-alkukevat-2019-5-op

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google photo

Olet kommentoimassa Google -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s