30. Aug 2022 |

Eestiblogid.eu uuendus – Eloquent ja e-mailid

Panin lÔpuks uue blogi lisamise vormi tööle (lehe allosas). See ei tee muud, kui saadab mulle e-mailile uue blogi lisamise info.

Pisut oodatust kauem kulus aega sellele, et .env failis e-maili saatmise konfiguratsiooni paika saada.  Arenduse ajal kasutasin mailtrap.io teenust aga toodangus tahtsin ikka Zone enda SMTPd kasutada. Siin nĂ€idises oleva konfiguratsiooniga tekkis pildil olev viga. PĂ”hjuseks, et mul oli Laravel 8 → Laravel 9 uuendamise kĂ€igus puudu jÀÀnud mail.php failis rida 'verify_peer_name' => false (StackOverflow, Github).

Lisaks asendasin (peamiselt Ôppimise eesmÀrgil) Query Builder andmebaasipÀringud Eloquent ORM pÀringutega, mis eeldatavasti vÔiksid olla kiiremad (eeldusel, et Eloquent oskab natuke nutikama pÀringu kokku panna kui ma ehk ise oskaks) ja paremini loetavad (kuigi nad on kohati pÀris Ôudsed). NÀiteks selline nÀeb vÀlja rubriigi pÀring.

PostsController show method query.

TĂ€iendasin mudeleid seostega (et Eloquent neid kasutada oskaks).

Kui .NETis (koolis) arendus kĂ€is nii, et teed mudeli+seosed ja mudeli pĂ”hjal scaffoldid migrationi (me enamasti isegi ei sĂŒvenenud, mida ĂŒldse toodeti sinna), siis Laravelis teen mĂ”lemad kĂ€sitsi ja nad ĂŒksteisest midagi ei tea. Migration on ainult andmebaasi muudatusteks (mÀÀrad baasis indeksid ja seosed). Model on Eloquenti pĂ€ringute jaoks ja ta ei tea midagi sellest, mis baasis toimub.

Lisaks kirjutasin PostsSeeder‘i, mis Fakeri abil teeb kiiresti palju postitusi, et saaksin vaadata, kuidas rakendus 100k vĂ”i miljoni postitusega töötab. Arenduse andmebaas on Dockeri konteinerina mul pisikeses Hetzneri CPX11 purgis (2 vCPU, 2GB RAM ja 40GB ketast).

Kellaaegadega tegelesin ka. Avastasin, et blogide RSS annab UTC ajad. SellepÀrast vÔis jÀÀda mulje, et Eestis on vÀga palju varahommikusi blogijaid aga tegelt oli lihtsalt kellaaeg vale. Need on vaja kuidagi Europe/Tallinn aegadeks saada. Lahendasin hetkel nii, et Carbon teeb need mallis korda aga ma sellega lÔpuni rahul ei saa olla, sest mul on andmebaasis kuupÀev ja kellaaeg eraldi. Natuke pean veel nuputama, kuidas seda veakindlalt lahendada.

10. Sep 2021 |

Tee endale vanast arvutist server

Kui ma oleksin teadnud, et enda serveri tegemine on nii lihtne, siis ilmselt oleksin seda teinud juba varem.

Otsides kohta, kust enda arenduse asjadeks pisike VPS vÔtta, jÔudsin selleni, et tegin (esialgu) enda vanast riiulis seisvast Dell XPS13 lÀpakast Linuxi serveri. 2011 mudel, i5-2467M, 4GB RAM, 512 SSD (dual masin boot, millest osa on Win7 all). See seisab ka serverina 99% ajast ilma koormuseta.

NĂŒĂŒd mĂ”tlen, et peaks vĂ”ibolla lĂ€paka Raspberry Pi 4B‘ga asendama (komplekt lĂ€heks kuskil 145 eurot). Kui kellegi on pakkuda, siis anna mĂ€rku 🙂 Update: Hetkel tundub hea mĂ”te, et ma sellega ei kiirustanud. ARM protsessoril ei tööta Docker normaalselt (viide) nii et kui ĂŒldse, siis pigem mĂ”ni Inteliga NUC vĂ”i mini-PC (nt IBMi ThinkCentre).

Mul on kodus kĂ”ige tavalisem Elisa 50/10 internet ja meeldivaks ĂŒllatuseks on kĂ”ik public IP pordid lahti. Public IP’le pĂ€ringuid tehes saan enda serverile ligi. Jah, see on aeglane 😀 Kui Zone annab VPSile 1 Gbit/s sisenev ja 100 Mbit/s vĂ€ljuv liiklus, siis minu puhul on need hetkel vastavalt 20x ja 10x pisemad. Aga andmebaasipĂ€ringuteks piisab kĂŒll.

Kuna mul zone.ee’s on ka mĂ”ne domeenid registreeritud, siis tegin ĂŒhele neist A-kirje ja nii ei pea ma enda IP’d meeles pidama. Kuna IP ei ole staatiline, siis IP muutumisel, piisab A-kirje uuendamisest.

Mis mul seal on

OperatsioonisĂŒsteemina on serveris Ubuntu Desktop 18.04.5 LTS (sest juba ammu installitud). KĂ”ik asjad, mis serveris jooksevad on Dockeri konteinerina.

Esimene asi, mille tööle pĂŒĂŒdsin saada oli see, et IP’le pĂ€ringu tehes avaneks kĂ”ige tavalisem nginx (hÀÀldatakse nagu “engine X”) Welcome Page. Piisas sellest, kui:

  • Docker on installitud (snap install docker vĂ”i snap remove docker eemaldamiseks)
  • nginxi kontener kĂ€ivitada docker run --name nginx_container --rm -d -p 8080:80 nginx (viide). –rm tĂ€hendab, et kui teed docker stop containerId, siis konteiner kustutatakse Ă€ra.
  • Ruuteris teha port forward sisse tuleva public IP port 80 mappida sisemises vĂ”rgus oleva seadme (ehk siis laptopi) IP porti 80. Minu puhul oli vaja mappimine teha Elisa antud Technicolori ruuteris (kuhu server-lĂ€pakas on kaabliga ĂŒhendatud). See on kĂ”ige lihtsam setup.

SeejĂ€rel installisin (kĂ”ik eraldi dockeri konteinerid) MariaDB, phpMyAdmin (selle MariaDB kĂŒlge) ja Microsoft SQL Serveri.

Millest on abi

tracert that.ee – nĂ€ed, kust seadmetest su liiklus lĂ€bi lĂ€heb ja kuhu ta jĂ”uab.

Turvalisus

Selle koha peal ma olen kÔige tuhmim hetkel ja mul ei ole head ettekujutust, missugused ohud mind varitsevad.

  • Ufw (Uncomplicated Firewall) panin peale
  • Sisse saab ainult SSHga, parooliga sisselogimise keerasin kinni

Kasulikud Dockeri kÀsud

Dockeriga toimetamine tahab super useri Ôiguseid. Ehk siis sudo su.

sudo snap install docker – installib Dockeri
sudo snap remove docker – eemaldab Dockeri
sudo docker ps -a – nĂ€itab kĂ”iki konteinereid ja nende infot
sudo docker start <containerId> – kĂ€ivitab konteineri
sudo docker stop <containerId> – peatab konteineri
sudo docker rm <containerId> – kustutab konteineri

sudo docker image list – nĂ€itab arvutis olevate image’te nimekirja
sudo docker image rm <imageId> – kustutab image

Kui mingi asjaga tekib raskuseid, siis Google otsing ja Digital Oceani juhendid aitavad enamasti alati.

3. Feb 2021 |

Kuidas saab miski olla nii odav (VPS)

Selleks, et mul oleks hajussĂŒsteemide aines oma dev andmebaas… OK, alustame sellest, et mul ei olnud esialgu ettekujutust, et mis on Docker ja kuidas VPSi kasutamine kĂ€ib. VĂ”tsin mĂ”ne pĂ€eva sellest nĂ€dalast, mis eksamite ja uue semestri vahele jĂ€i ning natuke uurisin.

NĂŒĂŒd ma olen seal kohas, et mul on Hetzneris see kĂ”ige odavam VPS (1 vCPU, 2 GB RAM, Helsinki), kus jookseb tavaline Ubuntu Server, kuhu olen installinud Dockeri ja selles jookseb MS SQL server. Seni identne selle barreli omaga, mis KĂ€veril. Ma ei ole selle eest mitte midagi maksnud, sest lihtne Google otsing andis 24 eurose kupongi veebruari lĂ”puni 🙂 Aga, see maksaks muidu 2.96 eurot (koos maksudega!). Nagu, misasi see on!? Kuidas see saab nii odav olla 😀

Kui Hetzneri kupongi poleks leidnud, siis ilmselt oleks Ôppimiseks kasutanud siit artikli lÔpust UpCloudi vÔi DigitalOceani kupongi.