PDA

Bekijk Volledige Versie : Gameserver starten PHP



R. Persoon
30/08/10, 15:34
Ha iedereen,

Ik wil voor privégebruik proberen mijn gameserver te starten op linux met een PHP script. Ik heb beneden een computer staan met linux erop met een paar gameservers erop en die wil ik graag vanaf boven starten i.p.v. altijd maar naar beneden lopen.

Nu is het me wel gelukt met exec de server te starten e.d., mijn phpkennis is ook wel redelijk, maar er is een probleem. De servers worden namelijk onder de apache user gestart, en configfiles en dergelijke worden aangemaakt in /root/.sof2/ bijvoorbeeld.

Hoe kan je PHP een gameserver onder een andere user laten starten en eventueel ook een andere user aanmaken met PHP zelf (want ik heb zelfs een eigen paneltje geschreven om een server te installeren :innocent:).

Ik hoop dat jullie me hier kunnen helpen!

Alvast bedankt!
Ricardo

The-BosS
30/08/10, 16:32
Er zijn een paar manieren om je probleem op te lossen, door ofwel "su" in je php exec te gebruiken, door owel een bash script te maken met al je setting en commando's in en dit via su te laten uitvoeren. Ofwel door je php scripts per server in de user home directory te plaatsen en suphp of iets dergelijks te gebruiken. Of misschien wel de simpelste in mijn ogen, gewoon via je php een file laten schrijven die leeg is en met een cron controleren per game/user of deze file aanwezig is en je server starten en file deleten.

Yourwebhoster
30/08/10, 17:55
- Je kan apache instellen om onder een andere user te draaien
- Je kan mod_ruid gebruiken
- Je kan een wrapper gebruiken, maar dit is alleen handig als je met C kan programmeren.
- Zoals The-BosS al aangeeft kan je dit ook dmv een cron job doen

R. Persoon
30/08/10, 23:18
Ok bedankt voor de reacties!

Ik ga het eerst eens proberen met suphp dan. Maar hoe kan ik de serverfiles, die momenteel door PHP worden aangemaakt, de rechten van een andere gebruiker geven? Chown gaat niet omdat je daarvoor root moet zijn en apache draait natuurlijk niet onder root. Een andere mogelijkheid ?

Alvast bedankt!
Ricardo

daanl
31/08/10, 08:06
Kan ook gewoon VIA ssh2 Lib inloggen op server en je ding doen lijkt me veel makkelijker

eXtreme Service
31/08/10, 16:17
Zoals Daan zegt, gewoon een SSH verbinding aanmaken via PHP en dan een bashscript uitvoeren dat de server start met screen. Veel eenvoudiger dan met speciale rechten of andere modules te werken.

Piwi-Web
31/08/10, 17:09
SSH2 Lib installeren, dat werkt als een trein. Dan elke gameserver (klant) als eigen user draaien zodat, zou je boeltje gehackt worden, ze alleen gebruikersrechten hebben en geen root. Zo heb ik dat in het verleden ook gedaan en is volledig te automatiseren.
Een wrapper is natuurlijk het beste maar gezien niet iedereen C kan programmeren ...

R. Persoon
31/08/10, 18:23
Ok, SSH2 Lib lijkt me inderdaad een goed idee. Ik wil het daar ook mee gaan proberen, maar ik heb het gedownload en nu zit ik met een paar bestandjes (.h, .c) en ik heb geen idee wat ik daar mee moet doen. Op internet staat iets van pear, maar kan je ze ook gewoon in apache kopieren ?

The-BosS
31/08/10, 18:29
Welk OS gebruik je, in het geval van ubuntu/debian zou je 'aptitude install libssh2' kunnen doen. Op CentOS/RHEL/Fedora 'yum install libssh2' en op Mandriva is het php-ssh2 ipv libssh2 als ik me niet vergis.

Yourwebhoster
31/08/10, 18:38
Ik kan mij vaag herinneren dat het met pecl kan of??

R. Persoon
31/08/10, 19:07
aptitude install libssh2 werkt niet, lib niet gevonden en dergelijke. Wel heb ik libssh2-1-dev libssh2-1 maar die installeren heeft geen effect, ik blijf in m'n php Call to undefined function ssh2_connect() krijgen, dus de benodigde lib is nog niet geïnstalleerd. Server en dus ook apache is gereboot. OS : Debian5.

Het valt inderdaad onder pecl maar daar kom ik niet uit, de documentatie is slecht. Ik ga het nog even proberen, misschien heeft een van jullie nog een ideetje ?

ilnee
31/08/10, 19:10
Google (http://www.google.com/search?q=debian+php+ssh2)? -> http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/ bijvoorbeeld

Yourwebhoster
31/08/10, 19:15
Nadat je de lib geïnstalleerd hebt, moet je via pecl de SSH functionaliteit aan PHP toevoegen:

pecl install -f ssh2

Net gechecked en volgens het linkje van ilnee zou het moeten kloppen:)

R. Persoon
31/08/10, 19:29
Met die pagina was ik al geruime tijd bezig inderdaad, maar het lukte maar niet. Uiteindelijk is het toch gelukt, en ik zal even posten hoe zodat anderen er ook nog wat aan hebben (wat echt te weinig gebeurd op forums zeg :()

eerst :
libssh2-1-dev_0.18-1_amd64.deb geïnstalleerd, dit zal voor iedere distro / system anders zijn natuurlijk
php-pear geïnstalleerd
php5-dev geïnstalleerd, anders werkt pecl niet
make geïnstalleerd, anders zal pecl ook niet goed werken
daarna gewoon de tutorial verder gevolgd

Bedankt voor de tips, nu eens kijken hoe ver ik kom met het opzetten van SSH verbindingen via PHP.

Ja de connectie is ook gelukt en mkdir /var/blabla/ lukte al via PHP dus ik neem aan dat de gameserver opstarten onder de user ook geen probleem meer is ! Iedereen bedankt!

R. Persoon
31/08/10, 20:47
Nou we toch bezig zijn: Het is me helemaal gelukt de gameserver met PHP op te starten onder de gewenste user. Maar nu zit ik met het probleem dat het PHP script oneindig blijft laden, omdat de gameserver de console streamt en PHP dus blijft laden zolang de server aan staat. Dit kan je natuurlijk oplossen door de max_execution_time op 1 sec te zetten, maar is er iemand met een elegantere oplossing ?

ilnee
31/08/10, 20:49
een bashscript uitvoeren dat de server start met screen
Dattum.

R. Persoon
31/08/10, 23:32
Oké, het is allemaal gelukt. Nu we toch bezig zijn heb ik nog een vraag :).

Omdat vrienden ook op de server inloggen via FTP om de bestanden te wijzigen, wilde ik de bestandsrechten zo instellen dat de binary om de server te starten niet verwijderd kan worden door hen, maar de andere bestanden wel.

Dit dacht ik op te lossen door de binary te chmodden naar 700 zodat alleen de owner rechten had om hem te wijzigen, maar dan kan ik hem met de FTP (die een andere user maar dezelfde groep als de owner heeft) nog wel wijzigen en verwijderen? Alleen als ik de bovenliggende map op 700 chmod werkt het, maar dan kan ik de andere bestanden in de map niet wijzigen via FTP.

Iemand enig idee hoe ik dat kan oplossen ?

Alvast bedankt!
Ricardo

The-BosS
31/08/10, 23:37
Je config files in een apparte map zetten en deze in je opstart script gebruiken.

R. Persoon
31/08/10, 23:42
Je config files in een apparte map zetten en deze in je opstart script gebruiken.

Ja maar de gebruikers moeten via FTP alle files kunnen bewerken behalve alleen de binary, en de binary apart zetten werkt niet omdat die in dezelfde map als de configfiles moet staan...

Ik had verwacht dat met chmod 0700 alleen de owner er iets mee kon doen met een file maar niet dus ?

Piwi-Web
31/08/10, 23:48
Nou we toch bezig zijn: Het is me helemaal gelukt de gameserver met PHP op te starten onder de gewenste user. Maar nu zit ik met het probleem dat het PHP script oneindig blijft laden, omdat de gameserver de console streamt en PHP dus blijft laden zolang de server aan staat. Dit kan je natuurlijk oplossen door de max_execution_time op 1 sec te zetten, maar is er iemand met een elegantere oplossing ?

screen werkt ook goed ;) Kan je nog meer leuke dingen mee doen

R. Persoon
01/09/10, 10:51
Screen werkt inderdaad goed, maar m'n laatste probleem was hoe ik één bestand uit een map kan chmodden dat alleen de owner rechten heeft, maar dat de overige bestanden / mappen world writable blijven.

Alvast bedankt!

user2705
19/09/10, 13:38
misschien is dit dan wat voor je.
Het is nu gratis te gebruiken tot versie 2 uit komt.

http://www.swiftpanel.com

JulienKulker
21/09/10, 14:41
Swiftpanel is inderdaad een aanrader. Je hoeft alleen de gamefiles in de juiste map te zetten op je server en de rest doet de panel zelf

Snel I.S.
10/03/11, 17:02
Met dat chmod probleem moet je ergens in de instellingen kijken of elke onderliggende map deze instellingen krijgt of enkel en alleen de map die je hebt geselecteerd.

Marin
10/03/11, 17:07
Met dat chmod probleem moet je ergens in de instellingen kijken of elke onderliggende map deze instellingen krijgt of enkel en alleen de map die je hebt geselecteerd.

Zou TS na een half jaar nog geen oplossing hebben?

The-BosS
10/03/11, 18:12
Zou TS na een half jaar nog geen oplossing hebben?

Denk dat hij/zij aan 100 posts wil geraken aan het tempo dat er oude topics gekickt worden.

WebMeso
10/03/11, 18:29
Denk dat hij/zij aan 100 posts wil geraken aan het tempo dat er oude topics gekickt worden.

Daar lijkt het inderdaad op. Helemaal gezien de inhoudelijk kwaliteit van de replies welke niet kloppen (men roept maar wat).