3. Serveri tööle saamine TalTechi masinas¶
3.1. Ettevalmistus¶
Ava oma serveri projekt IntelliJ IDEA’ga
Teile antud TalTechi masinates on Eesti piires avatud TCP ja UDP pordid 8080-8090, seega määra serveri kuulatav port (pordid) sinna vahemikku
3.2. Vajalike failide genereerimine¶
Teeme Gradles vajalikud muudatused:
Ava serveri kaustas
build.gradleMuuda seda nii, et:
pluginsploki all oleksid 'application'lisa plokk
applicationja sinna sissemainClass, mille väärtus viitab sinu projekti serveri sisenemispunktile (nt näiteprojekti järgi,ee.example.server.ChatServerviitabee.example.serverpakis olevaleChatServerklassile, kust hiljem Java otsibmain()meetodit)
// ... plugins { // ... id 'application' } application { mainClass = 'ee.example.server.ChatServer' // asendada enda projekti täispika sisenemispunkti nimega (fully qualified name for project entry point, i.e. where the main method is) } // ...
Vali IDEA paremalt ribalt Gradle’i menüü ja “Sync All Gradle Projects”

Kui Gradle ikooni ei näe, vali peamenüüst
View->Tool Windows->Gradle
Nüüd vali samast menüüst
server->Tasks->distributionja tee topelt-klikkdistTarpeal
Voilà, nüüd on
build/distributionskataloogi loodudtararhiivifail, kus on kõik vajalikud failid rakenduse käivitamiseks kokkupakituna sees. (Alternatiivina võib kasutada ka GradledistZipkäsku, et luua zip-arhiiv).
Soovituslik: testime, kas server kohalikult üldse töötab:
Loodud tar-arhiiv tuleks individuaalseteks failideks lahti pakkida. Näiteks:
- Käsurealt:
tar -xvf <arhiivinimi>.tar(näitekstar -xvf server.tar): -x(extract) tähistab lahtipakkimist.-v(verbose) selle valiku kasutamisel näidatakse terminalis kõiki faile, mida käsu käigus töödeldakse.-f(file) võimaldab määrata käsule, millise failiga töötada. Pärast-ftuleb alati konkreetne failinimi (näiteksarhiivinimi.tar).
- Käsurealt:
Windows File Explorer’is arhiivile parem-klikk ja
Extract All...
Kui oled arhiivi lahti pakkinud, jooksuta tekkinud
bin/kaustas olevat vastavat faili:käsurealt või IDE lookaalses terminalis
./bin/<teie-faili-nimi>(Linux/Mac) või.\bin\<teie-faili-nimi>.bat(Windows PowerShell) näiteks.\bin\server.batWindows File Explorer’is topelt-klikk antud
.batfailile (NB! Nii ei pruugi näha veateateid, kuna aken läheb kohe kinni)
Peaksid nägema tuttavat serveri väljundit!
3.3. Faili TalTechi masinasse saamine¶
Soovituslik: testime, kas SSH ühendus üldse töötab:
Ava käsurida, kus lõid võtmepaari
ssh-keygen’iga (kust avaliku võtme GitLabi kopeerisid)Windows: kas PowerShell, või eraldi paigaldatud WSL või Git Bash
Linux/Mac: Terminal
Jooksuta
ssh ubuntu@IP, kus IP asenda Moodles olevast tabelist enda tiimi omaga. (P.S., kui tabel on eelmisest aastast vana, anna projekti chatis märku)Kui küsitakse parooli, ei leia ssh-programm üles sinu privaatvõtit; selle saab vajadusel ette anda argumendiga
-i path/to/private_key
Kui OK, siis hetkel võib ühenduse lõpetada (
exitkäsk võiCtrl + D)
Kopeerime loodud faili üle SSH:
PowerShell/Terminal (enda kohalikus arvutis):
scp source target, näiteksscp server.tar ubuntu@193.40.255.43:/home/ubuntu(ikka asendada source ehk tar faili nimi ja IP vastavalt enda projektile)Ka
scp’le saab vajadusel anda privaatvõtme asukoha-i’ga ette
3.4. Serveri käivitamine ja töös hoidmine¶
SSH masinasse:
ssh ubuntu@IP- Peaksid kohe sattuma kasutaja “ubuntu” kodukataloogi (
/home/ubuntu).Kiire meeldetuletus mõnest Linuxi käsust:pwd- print working directorycd dir- change work. dir. into 'dir'ls -la(Ubuntus aliasla) - list all (incl. hidden) files in current work. dir.
Pakime tar-i lahti:
tar -xvf <arhiivinimi>.tarPaneme serveri käima:
./<teie-faili-nimi>/bin/<teie-faili-nimi>näiteks:./server/bin/serverVajadusel uuenda Java versiooni, nt
sudo apt install openjdk-17-jre-headless(või 21, …)
Kuidas hoida serverit töös pärast SSH-st väljalogimist? Vaata: https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session (nt
tmuxvõinohup ... &variant)
3.5. Tar faili kustutamine TalTechi masinas ja uue üleslaadimine¶
Kui te teete serveris muudatusi, siis tuleb need muudatused ka TalTechi masinasse lisada!
Loo uus tar fail, kasutades ülaltoodud juhendit
Kustuta TalTechi masinas vana tar fail kasutades käsku
rm server-example-1.0-SNAPSHOT.tarLisa uus tar fail asemele
3.6. Alternatiiv serveri jooksutamiseks - fat/uber JAR¶
Teine variant on lisada build.gradle lõppu järgnevad read, seejärel
jooksutada Gradle’i jar käsku. builds/libs kataloogi luuakse üks
rasvane JAR-fail, mida saab samamoodi TalTech-i masinasse scp’ga
kopeerida ja seda jooksutada: java -jar failinimi.jar.
jar {
manifest {
attributes(
'Main-Class': 'siia asenda mainClass nagu esimeses variandiski'
)
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
Lisainfo:
Gradle "Building Java applications": https://docs.gradle.org/current/userguide/building_java_projects.html#sec:building_java_applications
Gradle "The Application Plugin": https://docs.gradle.org/current/userguide/application_plugin.html#application_plugin
StackOverflow "Creating runnable JAR with Gradle": https://stackoverflow.com/a/21743527
Baeldung "Creating a Fat Jar in Gradle": https://www.baeldung.com/gradle-fat-jar
3.7. Kliendi JAR-faili loomine¶
Ava IDEA’s kliendi projekt ja vali Gradle menüüst desktop ->
Tasks -> Other -> dist. Kataloogi build/libs luuakse
JAR-fail, mida Javaga käivitada.
Tegelikult kasutatakse sama "fat JAR" meetodit, nagu ülal kirjeldatud (vaata Gradle build faili desktop/build.gradle sisu).
Kui mingil heal põhjusel kasutada libGDX-i serveri poolel, tuleks samuti seda meetodit kasutada.
Lisainfo:
libGDX "Deploying your application": https://libgdx.com/wiki/deployment/deploying-your-application
3.8. Huvitavat¶
Kõik saab ära teha ka käsurealt (vs. IDEA menüü kaudu, nt
./gradlew distTar või Windows PowerShellis
.\gradlew.bat distTar).
Gradle loodud build kausta võib vabalt kustutada (seda teeb ka
Gradle clean task).
Ka JAR-fail on zip-fail. Selle sisu saab lahti pakkimata vaadata nt nii:
käsurealt
jar -tf fail.jarvõiunzip -l fail.jarmistahes graafilise arhiivitööriistaga, nt 7-Zip või WinRAR.