Linux Palvelimet 2024 alkusyksy –kurssin seitsemännessä ja viimeisessä kotitehtävässä harjoittelin ohjelmointikielien alkeita Linuxilla sekä kokeilin muutaman skriptin kirjoittamista. Tein myös vanhan arvioitavan laboratorioharjoituksen soveltuvin osin. Lopuksi asensin uuden tyhjän virtuaalikoneen oman kurssini arvioitavaa labraa varten, mutta tätä kohtaa ei käsitellä raportissa.
Tein tehtävän useammassa osassa. Aloitin lukemalla taustamateriaaleja perjantaina 4.10. klo 11.30-14.00. Seuraavaksi tein ohjelmointiharjoitukset klo 14.00-17.00. Vanhaa arvioitavaa laboratoriotehtävää en ehtinyt tehdä raportin palauttamisen määräaikaan mennessä, mutta palautin raportin ensin tiistaina 8.10 klo 17.30, ja aloin sen jälkeen tekemään tehtävää. Täydensin raporttia myöhemmin tämän tehtävän osalta.
Käytössäni on Windows 11 Home -käyttöjärjestelmällä varustettu jokusen vuoden vanha HP:n kannettava kone, jonka tiedot ovat seuraavat:
- HP:n kannettava Envy x360
- 64-bittinen käyttöjärjestelmä: Windows 11 Home Edition
- CPU ja näytönohjain: AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx 2.30 GHz (4 ydintä, 8 säiettä)
- RAM: 16,0 GB (käytettävissä 13,9 GB)
- Levytila: 476 GB SSD, vapaana 202 GB
- Virtualisointiympäristönä Oracle VM VirtualBox 7.0.20
- Virtuaalikoneena Debian GNU/Linux 12.6.0 (”Bookworm”)
- CPU 4 ydintä
- RAM: 4 GB
- Levytila: 30 GB
Kirjoita ja aja "Hei maailma" kolmella kielellä.
Tehtävän a-osassa tukena toimi Karvisen artikkeli Hello World Python3, Bash, C, C++, Go, Lua, Ruby, Java – Programming Languages on Ubuntu 18.04. Lisäksi kyselin Chat-GPT:ltä apuja kielien asentamiseen Linuxille, sekä perusasioita kustakin kielestä; koodauskokemukseni on toistaiseksi hyvin rajoittunutta. Chat-GPT auttoikin am kommenteissa ja tulkinnoissa.
Ennen kunkin kielen kokeilua, se täytyy asentaa Linuxiin. Pythonin osalta tämä oli jo tehty edellisellä viikolla (sudo apt-get install python3, python3 –version), joten etenin luomaan kotihakemistooni code-kansion, sen alle python-kansion, ja sen alle heipy-kansion (mkdir heipy). Siirryin kansioon cd-komennolla. Seuraavaksi loin microlla tiedoston, johon python-koodi tallennettaisiin (micro hello.py), ja kirjoitin itse koodin, print (”Hello, world!”). Koodi ajettiin komennollapython3 hello.py. Pelkkä cat puolestaan näyttää tiedoston sisällön, ajamatta koodia.
Bash on Debianin sisäänrakennettu oletusympäristö (komentotulkki), joten sitäkään ei tarvitse yleensä erikseen asentaa tai käynnistää. Tarkistin version:
Kooditiedosto on muotoa .sh, ja se ajetaan komennolla bash.
Ruby asennetaan sudo apt-get update, sudo apt-get upgrade, sudo apt-get install ruby-full.
Kooditiedosto on muotoa .rb, ja se ajetaan komennolla ruby.
Bonuksena Java.
Tässä olennaista on, että tiedoston nimi on sama kuin luokan nimi. Tiedostopääte on .java. javac Hello.javakääntää koodin, java Hellosuorittaa sen. Ensimmäisessä yrityksessä oli kirjoitusvirhe (”system” pienellä).
Laita Linuxiin uusi komento niin, että kaikki käyttäjät voivat ajaa sitä.
B-tehtävän ohjeistuksena toimi Karvisen (varsin niukkasanainen) artikkeli Shell Scripting. Kyselin jälleen tekoälyltä, että mitä tässä oikein ollaankaan tekemässä. Yleisissä tietoteknisissä kysymyksissä Chat-GPT on mielestäni aloittelijalle oikein oiva apu, vaikka eriäviäkin mielipiteitä kurssilla on esitetty.
Ei kun luomaan skriptiä. Otin hieman vinkkiä aiemmista kurssitoteutuksista, ja päätin luoda skriptin hello.sh, joka tulostaa käyttäjän nimen, nykyhakemiston polun, sisällön, päivämäärän sekä koneen käynnissäoloajan.
Tässä #!/usr/bin/bash määrittti, että skripti ajetaan bashilla kansiosta /usr/bin/bash (olisin voinut kirjoittaa myös /bin/bash). Sitten listattiin komennot. bash hello.shajoi skriptin.
chmod a+x hello.sh antoi kaikille käyttäjille oikeuden ajaa komento.
sudo cp hello.sh /usr/local/bin/ kopioi skriptin kaikkien käyttäjien käytettäväksi ilman ./ kansioon /usr/local/bin.
Ratkaise vanha arvioitava laboratorioharjoitus soveltuvin osin.
Tein harjoitustehtävänä kevään 2024 Linux-kurssin labratehtävän, https://terokarvinen.com/2024/arvioitava-laboratorioharjoitus-2024-linux-palvelimet/. Harjoitusta varten asensin uuden tyhjän virtuaali-Debianin. Tein koneelle päivitykset, asensin palomuurin ja micron. Aloitin harjoituksen keskiviikkona 9.10. klo 11.30, ja lopetin klo 16.00.
Kirjoitan raportit Windows-koneella Wordissa, mutta labraharjotusta varten loin uudelle koneelle kansion reports, ja sinne index.md-tiedoston, johon labraharjoituksen eteneminen tulisi tositilanteessa merkitä. Testasin myös näyttökuvien ottamista Linuxilla sekä kuviin viittaamista raportissa (tähän asti olen copy-peistannut näyttökuvat GitHubissa luotuihin .md-tiedostoihin linkkeinä)
- Oma nimi
- Opiskelijanumero
- Linkki omaan kotitehtäväpakettiin
- Vastaa tähän kohtaan aivan viimeisenä
- Mikä toimii, mikä ei
- Tämä toimii: toimivien palveluiden osoitteet tai polut komentoihin
- Tämä ei vielä toimi: luettelo kohdista, joita ei ratkaistu.
- Huomaa, että nopeimpienkin viihdyttämiseksi tässä tehtävässä on enemmän kohtia kuin mitä muutamassa tunnissa ehtii ratkoa.
Sain tehtyä viimeistä lukuunottamatta kaikki labran harjoitukset. Weppisivuja ja Djangoa en saanut toimimaan yhtä aikaa localhostista.
- Suojaa raportti Linux-oikeuksilla niin, että vain oma käyttäjäsi pystyy katselemaan raporttia
En tehnyt tätä vielä, siltä varalta, että raportille tulisi harjoituksessa lisäkäyttöä, mutta komento olisi chmod u=r, go= index.md.
Tällä erää oikeuksia oli enemmän:
- Tee kaikkien käyttäjien käyttöön komento 'howdy'
- Tulosta haluamaasi ajankohtaista tietoa, esim päivämäärä, koneen osoite tms
- Pelkkä "hei maailma" ei riitä
- Komennon tulee toimia kaikilla käyttäjillä työhakemistosta riippumatta
Tämä tehtävä oli toisinto kohdan b) skriptaus-tehtävästä.
Hups, komennon nimeksi tuli epähuomiossa hello howdyn sijasta. No, virallisemmalla linjalla jatketaan.
- Asenna Apache-weppipalvelin
- Tee yrityksellemme "AI Kakone" kotisivu
- Kotisivu tulee näkyä koneesi IP-osoitteella suoraan etusivulla
- Sivua pitää päästä muokkaamaan normaalin käyttäjän oikeuksin (ilman sudoa). Liitä raporttiisi listaus tarvittavien tiedostojen ja kansioiden oikeuksista.
Asensin Apachen ja loin uuden name based virtual hostin alkakone.com, joka vastaa locaslhostista.
Sivun muokkaukseen tarvittavan kansion alkakone.com oikeudet:
- Asenna ssh-palvelin
- Tee uusi käyttäjä omalla nimelläsi, esim. minä tekisin "Tero Karvinen test", login name: "terote01"
- Automatisoi ssh-kirjautuminen julkisen avaimen menetelmällä, niin että et tarvitse salasanoja, kun kirjaudut sisään. Voit käyttää kirjautumiseen localhost-osoitetta
Asensin OpenSSH-palvelimen tämän artikkelin ohjeilla, tein uuden käyttäjän, loin uuden avainparin ja kopioin julkisen avaimen uudelle käyttäjälle. Lopuksi otin yhteyden SSH:lla.
- Asenna omalle käyttäjällesi Django-kehitysympäristö
- Tee tietokantaan lista tekoälyistämme, jossa on nämä ominaisuudet
- Kirjautuminen salasanalla
- Tietokannan muokkaus wepissä Djangon omalla ylläpitoliittymällä (Django admin)
- Käyttäjä Erkille, jossa ei ole ylläpito-oikeuksia
- Taulu Assistants, jossa jokaisella tietueella on nimi (name)
- Jos haluat, voit lisäksi bonuksena laittaa mukaan kentän koko (size)
Asensin Djangon, ja aloitin testiprojektin.
Kaikki muut localhostit, mukaan lukien äsken luodut Al Kakosen weppisivut piti ottaa pois päältä, jotta Djangon testiliittymä lähti pyörimään. /etc/apache2/sites-available/, sudo a2dissite 000-default.conf, sudo a2dissite alkakone.com.conf.
Loin admin-liittymässä käyttäjän Erkki ilman ylläpitooikeuksia (superuserin on luonut jo aiemmin).
Loin sovelluksen aiassistants, ja loin hallintaliittymässä sille muutaman tietueen.
- Jos olet tässä kohdassa, olet kyllä työskennellyt todella nopeasti (tai sitten teet tätä tehtävää huviksesi kurssin jälkeen). Mutta älä huoli, tässä haastetta, jotta et joudu pyörittelemään peukaloita.
- Tee tuotantotyyppinen asennus Djangosta
- Laita Django-lahjatietokanta tuotantotyyppiseen asennukseen
- Voit vaihtaa tämän sivun näkymään etusivulla staattisen sivun sijasta
Tätä kohtaa harjoituslabrasta en ajanpuutteen vuoksi tehnyt.
Karvinen, T. 12.3.2024. Final Lab for Linux Palvelimet 2024 Spring. Tero Karvinen – Learn Free Software with me. Luettavissa: https://terokarvinen.com/2024/arvioitava-laboratorioharjoitus-2024-linux-palvelimet/ .
Karvinen, T. 27.9.2018. Hello World Python3, Bash, C, C++, Go, Lua, Ruby, Java – Programming Languages on Ubuntu 18.04. Tero Karvinen – Learn Free Software with me. Luettavissa: https://terokarvinen.com/2018/hello-python3-bash-c-c-go-lua-ruby-java-programming-languages-on-ubuntu-18-04/
Karvinen, T. 2024. Linux Palvelimet 2024 alkusyksy. Tero Karvinen – Learn Free Software with me. Luettavissa https://terokarvinen.com/linux-palvelimet/ .
Karvinen, T. 4.12.2007. Shell Scripting. Tero Karvinen – Learn Free Software with me. Luettavissa: https://terokarvinen.com/2007/12/04/shell-scripting-4/ .
PhoenixNAP. 20.3.2024. Hoe to Enable SSH on Debian 12. Luettavissa: https://phoenixnap.com/kb/how-to-enable-ssh-on-debian























