Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: HannuTapio - 13.04.18 - klo:04.37
-
Hei,
Minulla on palvelimessa Java TCP ohjelma, serversocket.
Tämä on minun JS pelien siirtojen tarkkailuun ja suorittamiseen.
Minun ongelmana on, että, tämä palvelinohjelma mitä yritän käynnistää crontabista, niin, sitten ilmeisesti käynnistyy oikein, mutta, JS ohjelmat eivät saa siihen yhteyttä ?
Minä käynnistän palvelin ohjelmani seuraavasti crontabissa - "45 2 * * * /usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar"
Minä joudun aina käymään palvelimessa ja käynnistämään käsin uudestaan tämän palvelinohjelmani.
Mitä teen väärin taikka olen unohtana ?
--
-
Jos nuo lainausmerkit (") on siellä crontabissa niin ne pois.
-
:),
Ei oo,
:)
Täytyykö apache olla käynnissä kun tuo serversocket menee acceptia odottamaan, vai tuleeko apache käynnistää vasta sitten kun tuo serversocket on mennyt accept tilaan ?
--
-
Onko kyseinen /etc/crontab-tiedostossa ?
Jos on, niin siihen pitää määritellä, millä käyttäjällä kyseinen ajetaan.
Jos taas kyseiset asetukset on asetettu crontab -e:n avulla, niin minusta se näyttää oikealta.
-
crontab,
Joo, minulla on tuo crontab -e käsky jolla editoin cronia.
Kiitos vastauksesta, myös netin neuvojen mukaan se on oikein, olen googlannut jo muutamia päiviä.
Mutta, minulla ei tuo palvelinohjelma ole koskaan JS käytettävissä kun 2.45 jälkeen käyn katsomassa.
Minä yritän jotakin viritystä, jolla käynnistää palvelinohjelmani.
Tämä on kiusallinen ongelma ???
--
-
Mihin ohjaat virheilmoitukset ja/tai muut tulosteet?
-
Virhe ilmoitukset,
Minulla ei ole ihan kaikkia ubuntun ominaisuuksia tiedossa, olen vain lautapelaaja, en koodari.
Osaatko kertoa kuinka tulisi laittaa tuo virheilmoituksen ohjaus ?
--
-
Mitenköhän hyvin crontabin käyttö sopii pitkään ajettaville komennoille. Vai forkkaako tuo ja jää pyörimäön taustalle? Itse laittaisin tuollaisen käynnistymään systemd:n asetustiedostolla, jolloin sitä voi ohjata vähän monipuolisemminkin.
Jos koneella on MTA niin cronilla ajetujen komentojen tulosteet menevät käyttäjän sähköpostilaatikkoon.
-
systemd,
Kiitos uudesta sanasta, mitenkä tuo systemd toimisi ?
Onko se ihan yleistä vaiko harvinaisempaa ubuntu server käyttöä ?
En ole itse tuohon koskaan tutustuna ??
--
-
Just. :o
Itse lähtisin kokeilemaan tehdä bash scritptiä joka käynnistää tuon socket server ohjelman. Ja kaikki ongelmat vaikka putkella /tmp/whatever.log-tiedostoon.
-
Kiitos uudesta sanasta, mitenkä tuo systemd toimisi ?
Tarvitset tehdä unit-tiedoston (https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files) joka käynnistää tuon palvelusi taustalle. Sen sisältö olisi jotain tällaista:
[Unit]
Description=PalvelinOhjelma
After=network.target
[Service]
ExecStart=/usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar
Type=simple
User=käyttäjänimi_jona_ohjelma_suoritetaan
[Install]
WantedBy=multi-user.target
Tuonne Service-osaan voi halutessaan määritellä myös, että palvelu käynnistetään uudestaan, jos se kaatuu. Jotenkin tähän tapaan (laitetaan siis vaikkapa tuon User-rivin alle):
Restart=on-failure
RestartSec=30s
Unit-tiedosto pitää laittaa /etc/systemd/system/-hakemistoon eli esimerkiksi /etc/systemd/system/PalvelinOhjelma.service-nimelle. Sitten voit käynnistää sen:
sudo systemctl start PalvelinOhjelma
Korvaamalla start sanalla stop voit pysäyttää ja automaattisesti käynnistettäväksi sen saa sanalla enable, jolloin se käynnistyy käynnistyksen yhteydessä. Käyttämällä sanaa status näet ohjelman kulloisenkin tilan (eli käynnissä, pysäytetty tms.).
Lisäksi tulosteet löytyvät journalista eli:
sudo journalctl -b --unit=PalvelinOhjelma
Onko se ihan yleistä vaiko harvinaisempaa ubuntu server käyttöä ?
Sinänsä ihan normaalia, jos paketoi palveluja tai kehitää omia.
-
Crontab vai apache,
Minä hieman vielä kysyn tuosta crontabista ja apachesta, minulla on nyt .sh tiedosto, josta crontab käynnistää palvelinohjelman.
Tämä palvelinohjelma on top ja htop ohjelmien mukaan käynnissä palvelin resetin jälkeen, kun menen katsomaan palvelintani ja ohjelmia mitä se ylläpitää.
Eli, tuo palvelinohjelma käynnistyy oikein 2.45 kuten on määrätty, mutta, JS ohjelmat eivät vain saa siihen yhteyttä, ennen kuin uudelleen käynnistän käsin tämän palvelinohjelmani.
Voiko kyseessä olla sittenkin apache ongelma crontabin sijaan ?
:)
--
-
Voihan se tietenkin olla. Teetkö jotain eri tavalla kun käynnistät sen itse? Eli suoritatko jotain muuta kuin crontabista ajettuna? Onko eroa siinä millä käyttäjällä ajat sen ohjelmasi?
-
Palvelinohjelma,
Minulla on root tunnus, kun käynnistä ohjelman itse, ja kun minä käynnistän skriptistä crontabin kautta, niin, siinä on sudo edessä :)
sudo /usr/bin/java -Xmx5120M -jar /home/POv200/PalvelinOhjelma.jar &
--
-
Minulla on root tunnus, kun käynnistä ohjelman itse, ja kun minä käynnistän skriptistä crontabin kautta, niin, siinä on sudo edessä :)
sudo /usr/bin/java -Xmx5120M -jar /home/POv200/PalvelinOhjelma.jar &
sudo vaatii salasanan, jota se ei saa mistään käyttäjäkohtaisella cronilla ajettuna.
Laita komento rootin crontabiin tai järjestelmänlaajuiseen crontabiin. En tosin hahmota syytä ajaa ohjelmaa ajastettuna sen sijaan, että tekisit siitä järjestelmäpalvelun, kuten Tomi ehdotti.
-
:),
Hei, tuo komento on root crontabissa.
Minä vielä katson jos jotakin keksin, minulla oli muutamia vuosia sitten sama ongelma, mutta, en muista mitenkä se ratkesi.
Jotenkin se alkoi viime kerrallakin toimimaan, minä vielä yritän jotakin. :)
:)
--
-
Hei, tuo komento on root crontabissa.
OK. Ota turha sudo pois komennosta. Käynnistäminen taustaprosessina (&-merkki komennon perässä) on myös hieman epäilyttävää cron-töiden tapauksessa, mutta ehkä se kuitenkin toimii jollain tavalla. Aloitusviestin esimerkissä sinulla ei vielä ollut kumpaakaan.
Sammuuko palvelusi itsestään ennen kuin cron käynnistää sen seuraavan kerran uudelleen?
Kannattanee ohjata ohjelman stderr ja stdout -listaukset johonkin lokitiedostoon, niin näet mahdolliset ajonaikaiset virheet:
45 2 * * * /usr/bin/java -Xmx5120m -jar /home/POv200/PalvelinOhjelma.jar >> /home/POv200/po.log 2>&1
-
Palvelinohjelma,
Kiitos, tuo virheen ohjaus olikin hieno juttu, minä laitan sen sinne crontabbiin heti miten.
Seuraava palvelin reset on sitten taas 2.30 - 2.45 välisenä aikana, tuo palvelinohjelma käynnistää itsensä 2.45 aina, minä mahdollisesti siirrän tuon resetin ja kaikki käynnistykset, tuonne aamun tunneille, kun on itsekkin sitten jo hereillä, niin, ei tarvi miettiä mitä kone öisin tekee, tuo noin kello kahden aikaan suoritettava nykyinen palvelin reset ja käynnistys ei ole ihan loppuun asti ajateltu, varmaankin mukavampi, siinä 5.30 - 5.45 välisenä aikana tehdä tuo reset.
Minä myös mietin että olisin öisin sammutettuna, kaikki apachet ja palvelinohjelmat pois päältä jotain 1:30 - 5:30.
Sitten aamuisin aina voisi herätessä tarkistaa tuon palvelin ryppään ( 3 palvelinta ) mitä minä nyt ylläpidän.
Mutta, joo, minä koetan tuota virheen ohjausta, kiitosta siintä.
:)
--
-
Proxy,
Joo, kyllä tuo palvelinohjelma käynnistyy siellä aamulla, ja log fileeseen tuleekin jotakin kirjattua, ongelma taitaa olla reverse proxy apachessa.
Tuo palvelinohjelma käynnistyy oikein ja sitten myös vastaan ottaa konnektin kun yritän, mutta, se ei palauta mitään reverse proxyn kautta ?
Kun käynnistän palvelinohjelma roottina ja käsin uudestaan, niin, sitten se toimii täysin, ihan apachen proxyja myöten.
Mitenkähän tämän reverse proxyn saisi toimimaan, resetin jälkeiseen crontab käynnistykseen ?
--
-
Missä portissa se asiakasohjelmasi kuuntelee? Onhan se suurempi kuin 1024?
-
TCP Portteja,
Minulla on TCP portit 8080 - 8090 käytössäni, kun pidän palvelinohjelmaani.
--
-
Onko sinulla firewallia käytössä ?
ufw status
asiakasohjelman pitää osata ottaa yhteys tuohon porttiin mikä sinulla on käytössä.
-
ufw,
Status: inactive
Minulla on iptables joka on säädetty oikein varmaankin, se säätää itsensä noin 10 minuuttia ennen palvelinohjelman käynnistystä.
Kyllä vain asiakasohjelma ottaa satunnaisen portin 8080 - 8090 käyttöönsä, siinä on yhteensä 11 tcp porttia vaihtoehtona, ne ovat auki iptablessa ja ohjautuvat proxyyn ja reverse proxyyn apachessa.
--
-
Palvelinohjelmasta vielä,
Minä muutin apache configista, seuraavaa riviä -
<IfModule mod_proxy.c>
ProxyPass "/_ws_:8080" "ws://127.0.0.1:8080/"
ProxyPassReverse "/_ws_:8080" "ws://127.0.0.1:8080/"
ProxyPass "/_ws_:8081" "ws://127.0.0.1:8081/"
ProxyPassReverse "/_ws_:8081" "ws://127.0.0.1:8081/"
ProxyPass "/_ws_:8082" "ws://127.0.0.1:8082/"
ProxyPassReverse "/_ws_:8082" "ws://127.0.0.1:8082/"
ProxyPass "/_ws_:8083" "ws://127.0.0.1:8083/"
ProxyPassReverse "/_ws_:8083" "ws://127.0.0.1:8083/"
Tuo eka rivi on ennen kuin säädän proxyt kohdalleensa, minä poistin tuon ekan rivin, <IfModule mod_proxy.c> ja nyt on vain proxyjen ja reverseproxyjen asetukset.
Lisänä asensin uusia apache moduuleita.
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
Aamulla tuo toinen käynnistys yritys käynnisti palvelinohjelman, minä nyt yöllä testaan resetin jälkeen taas uudestaan.
Lisänä minä muutin vielä palvelinohjelman kulkuja hieman.
:)
--
-
:),
Joo ei käynnistynä oikein, täytyy yhä käsin käydä palvelimessa ja käynnistää.
:(
--
-
Koeta laittaa timeout crontab komennon eteen.
Tyyliin:
@reboot sleep 300 && /opt/whtever.sh
Tuossa oleva luku on aika sekunneissa.
-
Palvelin reset,
No joo, ei tämä taida toimia minulla, en tiedä mistä syystä, mutta, kenteis paree näin.
Minä siirrän tämän palvelin resetin 5:30 - 6:00 väliseen aikaan, herään itse siinä 5:30 ja tarkistan palvelimet ja seuraan päivitykset ja uudelleen käynnistykset ja sitten itse käynnistän vaikka 5:58 tuon palvelinohjelmani, apache käynnistyy sitten taas 5:59.
Ei oo iso homma herätä ja tarkistaa palvelinta itse, kun jos minä nämä pelaajat tänne palvelimeeni lasken kanssa, niin, on hyvä valvoa hieman enemmän mitä tähän asti.
:)
--
-
miksi sammutat ja käynnistät palvelimet päivittäin ?
-
Ubuntu server,
Minulla on siellä ssh kautta, kun kirjaudun, niin, yleensä teksti kerran päivässä, server needs to be restarted.
Minä päivitän nyt sitten ubuntu serverit, aina siinä 5:32, ja resetoin 5:45, ja sitten apache käyntiin 5:59.
Ubuntu server antaa minulle lähes päivittäin ilmoitukset resetin tarpeesta, jotenka minä teen tämän resetin nykyään ihan joka aamu.
:)
--
-
Jos kyse on tästä
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
*** System restart required ***
Eli tuosta *** System restart required *** niin se tarkoittaa että päivityksen yhteydessä on asennettu uusi versio Linux kernelistä ja jotta se tulisi
myös käyttöön pitää järjestelmä käynnistää uudestaan.
Se ei siis tarkoita että olisi pakko käynnistää palvelin joka aamu.
-
Ubuntu server antaa minulle lähes päivittäin ilmoitukset resetin tarpeesta, jotenka minä teen tämän resetin nykyään ihan joka aamu.
Kerran viikossa tai kuukaudessa riittää hyvin, ellei kernelissä ole ilmennyt jokin erittäin kriittinen tietoturva-aukko, josta tiedotetaan päivälehdissäkin. :)
Haavoittuvuuksia ja niiden paikkauksia voi seurata vaikkapa tällä sivulla: https://usn.ubuntu.com/
-
Ok,
Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.
Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.
:)
--
-
Ok,
Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.
Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.
:)
--
Kyllä se turhan työn tekeminen aina on mukavaa ja kannatavaa :)
-
Ok,
Kiitos kun päivititte omaa infoani, en ihan tarkkaan muistana kuinka usein tuo kehoitus resetoida kone tuleekaan, mutta, kyllä se siellä aina välistä on.
Minä kuitenkin jatkan tällä samalla tavalla, minä resetoin kerran päivässä, ja pidän palvelimet pois käytöstä 5:30 - 6:00 ajan, pystyn kaikki kuva ja video ja ohjelma päivitykset tekemään tällöin, ei se reset siinä samassa niin kova työ ole.
:)
--
Kyllä se turhan työn tekeminen aina on mukavaa ja kannatavaa :)
;D
-
Eikös nämä pelit enää olekkaan suomi nettiin?
Tarkoitan kun palvelimet ovat alhaalla aamulla.
Itse menen töihin seitsemään ja olisi kiva pelata laadukkaita suomi pelejä ennen sitä.
Eli jo ehdotettu aamu klo 3-4 olisi parempi servereiden alasajoon?
-
Palvelin reset,
Minä joudun itse olemaan valveilla, kun tuo reset tapahtuu, jotta, tiedän sitten, että, kaikki on käynnissä ja palvelimet toimivat kuten kuuluukin, pyrin varmaankin, että, pelaaminen tapahtuu iltapäivällä ja illasta. :)
Minä koetan ratkoa tämän reset ongelman jotenkin, :).
Muistetaan silti että en ole palvelu tällä hetkellä, olen vain omaa elämää ja omaa iloa, oleva harraste sivusto, näytän ihmisille mitä lautapelejä olen suunnitellut vuodesta jotain noin 1984 - 95.
:)
--
-
Minä koetan ratkoa tämän reset ongelman jotenkin, :).
Sehän on täällä jo ystävällisten kirjottajien toimesta tehty: koko resetointi touhu on turhaa ja sen voi jättää välistä poislukien oikeasti tietoturvakriittiset päivitykset.
-
Niin palvelinten tarkoitus on olla päällä 24/7 lyhyitä tietoturvapäivityksiä lukuunottamatta joita tehdään esim kerran kuukaudessa tai harvemmin. Turha käynnistäminen kuluttaa serveiden komponentteja turhaan.