Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Resrart serwera
Forum PHP.pl > Forum > PHP
KoPcIu
Witam, zakupiłem ostatnio VPS i potrzebuje zrobić panel do zarządzania serwerem SA-Mp.

Znalazłem w sieci jeden panel serwera więc postanowiłem wyciąć z niego funkcję reset, lecz mam z nią problem ponieważ nie działa a jako że ja nie znam za bardzo się na CMD Shell wiec nic nie jestem w stanie zrobić.

Plik restart.php:

Kod
<?
$path = "/var/www/";
echo 'Serwer zrestartowany!';
system(''.$path.'control.sh restart >/dev/null');
?>


Plik control.sh:

Kod
#!/bin/bash

server_start() {
/var/www/123sam.sh & # put in full path and name of startup script
}

server_stop() {
killall 123sam.sh # your startup script name
killall samp02Xsvr # need to put in path to killall if its not in $PATH
}

server_restart() {
server_stop
sleep 3s
server_start
}
case "$1" in
'start')
server_start
;;
'stop')
server_stop
;;
'restart')
server_restart
;;
*)
echo "Usage $0 start|stop|restart"
esac


Plik 123sam.sh:

Kod
#!/bin/bash
   while true; do
      if pgrep samp02Xsvr &>/dev/null; then
         echo Blad - Duplikacja procesu!
         exit
      else
         cd /root/samp02X/
         ./samp02Xsvr
      fi
      sleep 15m
   done


Katalogi są w porządku i wszystko lecz nie wiem dlaczego to nie działa winksmiley.jpg być może ktoś zna ten kod lub zna się dobrze na komendach to zauważy błąd winksmiley.jpg jeśli tak to prosił bym o pomoc.

Lub jeśli posiada ktoś komendę na restart serwera prosił bym winksmiley.jpg

PS dopowiem ze tych serwerów będzie kilka a więc restart po nazwie nic nie da...

Pozdrawiam winksmiley.jpg
pgrzelka
a nie wystarczy w pliku .sh wpisać reboot -parametry questionmark.gif
KoPcIu
pgrzelka, tak jak napisałem jestem zielony jeśli chodzi o funkcje Shell.

Mógł bym prosić o jakiś przykład z użyciem reboot -parametry ?
okitoki
PHP ma w ogóle prawo do restartu serwera smile.gif? na ogół domyślnie takie uprawnienia mają tylko administratorzy, spróbuj zalogować sie na serwer i wykonaj wpisz w ssh to polecenie czy ci się wykona
KoPcIu
Nie rozumie Cie, posiadam własny vps chce na nim postawić serwer samp, chce umieć ten serwer samo wyłączyć i włączyć od razu przez stronę www, czyli chce po prostu go zrestartowac aby nowe ustawienia na serwerze samp zostały wprowadzone winksmiley.jpg
okitoki
1) VPS (Virtual Private Server) jest to jakaś wirtualna maszyna ma zainstalowany jakiś system (jaki ?)
2) Serwer który chcesz resetować przez WWW, działa ci obecnie na tej maszynie ?
3) W jakiś sposób nią zarządzasz w jaki?

na razie tyle smile.gif
KoPcIu
1. Dembian linux 5.0
2. Tak jest to serwer samp.
3. Przez ten panel chce aby można było wyrywać mapy, mam to zrobione. Chce aby można było edytować plik config też zrobione. Chce też aby można było ten serwer zrestartowac aby nowe ustawienia się zapisały. Czyli chce "zabić'' proces a następnie włączyć ten proces spowrotem. Lecz nie wiem jak zamknąć ten proces, standardowo służy do tego cms kill -9 id_procesu lecz go się nie da pobrać. Ja nie widzę takiej opcji winksmiley.jpg znalazłem ten kod na górze lecz niestety on nie działa ;(
okitoki
z poziomu www będzie problem z zabiciem procesu, ponieważ musiał byś dać serwerowi uprawnienia administratora, co nie jest dobrym rozwiązaniem ponieważ możesz stracić panowanie nas serwerem. wiec zostaje skrypt bash-owy( lecz nie może go uruchamiać bezpośrednio PHP, tylko np cron) lub połączenie przez np ssh co powinno ci umożliwić działania jako root.
zaraz to potestuje, u siebie na serwerku,
KoPcIu
Na górze podałem przykład zabicia procesu lecz niestety nie działa. Istnieje funkcja system przez która można wykonać komendę na serwerze lecz niestety nie wiem jak sprecyzować ta komendę.
bim2
ja zadam lepsze pytanie, czy ten panel co znalazłeś, czy mu działa restart? Jeśli tak, to nie wyciągłeś pewnie całości smile.gif
okitoki
Cytat(bim2 @ 21.05.2009, 22:55:05 ) *
ja zadam lepsze pytanie, czy ten panel co znalazłeś, czy mu działa restart? Jeśli tak, to nie wyciągłeś pewnie całości smile.gif

bim przetłumacz to na polski, a co do restartu to mu nie działa, i nie powinien działać bo to nie ten poziom uprawnień


killall 123sam.sh # your startup script name
killall samp02Xsvr # need to put in path to killall if its not in $PATH
to powinno zabić ten proces z tego skryptu, zobacz czy ogólnie ten skrypt ci działa z shell-a, na uprawnieniach tych co masz.
jak nie zadziała to wpis "su" to powinno ci nadać uprawnienia admina, wtedy sprawdź skrypt jeszcze raz

jeszcze jedno, czy nadałeś pliką odpowiednie uprawnienia, że to jest plik wykonywalny
erix
Jeśli się nie mylę, to Google: sudoers i trzeba dodać ten skrypt.
KoPcIu
bim2, ten panel jest dziwny i go w ogóle nie odpalałem winksmiley.jpg

okitoki, zaraz sprawdzę czy działa na shellu winksmiley.jpg

Sprawdziłem i:

Edit:

root@vz869:~/samp02X# killall 123sam.sh
123sam.sh: no process killed
root@vz869:~/samp02X# killall samp02Xsvr
root@vz869:~/samp02X#

Komenda druga wyłączyła serwer SA-Mp.
okitoki
no to super, ty to robisz jako użytkownik nie admin
wiec włącz serwer z poziomu PHP, wysłącz serwer z shela
i komendą shell_exec("samp02Xsvr > /dev/null 2>&1");
tylko podaj Ścieszkę pełną do pliku samp02Xsvr.
zamiast "> /dev/null" możesz dać ">> ~/jakis_plik" wtedy w nim cały rezultat zapisze
podejrzewam że nie zabijesz procesu z php jak go uruchomisz w shelu, ale jak uruchomisz z PHP to prawdopodobnie będziesz go mógł zniszczyć
jak to nie pomoże to zakombinujemy z shellem

jako kto zalogowałes sie do shell-a jako user czy root?

napisałem taki skrypt w bashu

Kod
#!/bin/bash

tail -f ~/uruchom | while read exec
do
$exec
done
echo > ~/uruchom


to polecenie jakie zapiszesz do pliku uruchom zostanie wykonane z takimi uprawnieniami jak uprawnienia osoby która odpaliła ten skrypt, można go wykorzystać do restartu serwera smile.gif
KoPcIu
ta komenda:

shell_exec("samp02Xsvr > /dev/null 2>&1"); Zabije czy odpali skrypt bo nie rozumie?

A takie PS wpadłem na inny sposób:

Kod
<?
system('killall samp02Xsvr');
system('./samp02Xsvr');
?>


Wszystko działa jeśli plik PHP znajduje się w katalogu gdzie jest plik samp02Xsvr lecz ja mam tak:

/var/www/serwery/NICK/pliki/

W katalogu nick mam plik reset.php

a w katalogu pliki mam plik serwer02Xsvr

Jak zrobić aby najpierw wejść w katalog a potem dopiero wykonać ./samp02Xsvr ?
Przemo_
Kod
shell_exec("samp02Xsvr > /dev/null 2>&1");

włączy go.

  1. <?
  2. system('killall samp02Xsvr');
  3. system('sciezka/do/katalogu/z/plikiem/wlaczajacym/serwer/samp02Xsvr');
  4. ?>


o to chodzi?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.