Linux Server PT

From SA-MP Wiki

Jump to: navigation, search

Contents

Requisitos

  • Um servidor linux com acesso SSH, libstdc++ 6 e um cliente SSH tal como PuTTY
  • Acesso a internet (um servidor com 100 jogadores usa em torno de 4Mbps upstream)
  • Uma porta UDP encaminhada (7777 é o padrão) | [Guia: http://www.portforward.com]

Configurando o servidor

Baixe e extraia os arquivos

Antes de tudo, vá até página de download do SA-MP e encontre o URL para o Linux Server. Então use wget seguido pelo URL para baixar o SA-MP Server para seu servidor. Então, extraia os arquivos do pacote. Você pode querer cd até o diretório onde você quer instalar o servidor, ex: /home/user

wget http://files.sa-mp.com/samp03xsvr_R2.tar.gz
tar -zxf samp03*.tar.gz
cd samp03

Configurando seu servidor

Após você ter baixado e extraido os arquivos navegue até a pastaonde você instalou o servidor (normalmente através de digitar cd /home/user/samp03.) Depois, use seu editor de texto favorito ex: Pico ou Nano, edite o server.cfg e altere o hostname, RCON password, etc - mais informação está em Configuração do servidor e na página Advanced Server Controls.

Adicionando Gamemodes/Filterscripts a seu servidor

Talvez você queira rodar outro gamemode do que o gamemode exemplo vindo com o SA-MP. No fórum Lançamentos/Releases você pode encontrar vários scripts que você possa querer rodar em seu servidor. Para adiciona-los ao seu servidor, apenas baixe o arquivo .amx desejado para seu directório <raíz do servidor>\gamemodes, e edite seu server.cfg para rodar este gamemode alterando uma das linhas de gamemode<numero> com o nome do arquivo, excluindo o ".amx".

Isto funciona praticamente do mesmo jeito para filterscripts. Você pode encontra-los também nos Lançamentos/Releases. Para te-lôs em seu servidor apenas baixe-os e copie o arquivo para o diretório de filterscripts e adicione o nome do arquivo sem o ".amx" ao fim da linha que começa com "filterscripts" em seu server.cfg.

Rodando seu servidor

Assim que você tiver seu server.cfg configurado do seu jeito, simplesmente execute o servidor usando um dos três metodos descritos abaixo. Cada metodo tem uma descrição abaixo da imagem. Escolhemos os três modos mais populares de iniciar o servidor, um pequeno script SSH para manter seu servidor rodando pode ser encontrado no final dessa página.

NOTA: Tenha certeza de definir as permissões para o samp03svr e announce se você quiser rodar um servidor na aba internet! Se você não fizer isso, você vai obter erro de permissão negada. Para definir as permissões, execute chmod 700 * no diretório do SA:MP server. NÃO é uma boa ideia rodar o servidor (ou qualquer outro programa desse tipo) sob root.

Image:Samp_ssh.jpg

Metodo um

O primeiro metodo usa o comando nohup para manter o servidor rodando. nohup é um comando linux que inicia um programa, que vai ignorar qualquer sinal SIGHUP - sinais de disconexão. Isto significa que o servidor irá continuar rodando mesmo que você feche a janela do terminal(SSH) que você abriu antes. O E comercial (&) ao fim do comando significa que o servidor tem que rodar em segundo plano, então você pode executar comandos, mesmo após você ter iniciado o SA-MP server.

nohup ./samp03svr &

Um log detalhado pode ser encontrado no arquivo nohup.out, no qual será criado no diretório onde você executou o comando (/home/gta neste caso). nohup está instalado na maiorias dos servidores linux.


Metodo dois

O segundo metodo permite que o processo do SA-MP Server rode em segundo plano. A vantagem disso é que você pode continuar trabalhando no ambiente-shell, sem precisar abrir outra janela. Em algunas servidores Linux, o processo continuará a ser executado mesmo após a janela de terminal ser fechada(SSH), mas este nem sempre é o caso.

./samp03svr &

Não há arquivos de log ou similares criados. O shell irá retornar o PID do processo que acabou de ser criado, 9251 no exemplo acima. Este metodo é suportado por todos os servidores linux.


Metodo três

Este metodo é o original is the original descrito primeiro, e o mais fácil de ser entendido. O servidor irá rodar em primeiro plano, então todos os erros irão diretamente visiveis na janela (ex. falhas de segmentação). Mas mantenha em mente que o output normal, os que se tem no Windows Server, não é visível no the Linux server.

./samp03svr

O servidor irá desligar após a janela ser fechada. Este metodo pode ser o melhor para scripting e/ou para debug, já que é bem claro.


NOTA: Se você obtem um erro dizendo libstdc++ 6 cannot be found, então baixe-o em seu servidor.

Mantendo o servidor online

Com limitadas opções de anti-crash disponiveis no SA-MP Server, há uma grande possibilidade de receber falhas de segmentação ou qualquer outro erro gerado por seu gamemode(Pawn). Isto fará com que seu servidor feche, e você terá que inicia-lo manualmente novamente.

Metodo um

Tudo que você precisa é usaro programa abaixo, ele é um ambiente linux com a possibilidade de usar cron. Este programa irá checar se o processo samp03svr está rodando, e se não estiver, liga-lo novamente. Você precisa instalar o seguinte crontab:

*/1 * * * * /path/to/samp/checksamp.sh >/dev/null 2>&1

Ajuda sobre como usar o crontab pode ser encontrada aqui.

checksamp.sh:

#!/bin/sh
 
PROCESS_COUNT=$(ps -fu root | grep samp03svr | grep -v grep | wc -l)
case $PROCESS_COUNT in
0) /path/to/samp03svr &
;;
1) #OK, program is already running once
;;
*) #OK, program is already multiple times
;;
esac

Tenha certeza que você tem os caminhos corretos, o script não funcionará se não tiver. O script atualmente é incapaz de suportar multiplos servidores de SA-MP na mesma máquina, mas funciona perfeitamente onde há somente um rodando. Você precisar chmod o arquivo checksamp.sh para 0755 (+x)!

Metodo dois

Se você não quiser usar crontab e se você quer ter o server log salvo em um diretório separado quando o servidor crashar você pode usar este script.

Para menter seu servidor online usando este script, primeiro você precisar parar seu servidor e executa-lo com este comando:

nohup ./restart.sh &

restart.sh:

#!/bin/sh
log=samp.log
dat=`date`
samp="/path/to/samp/server/samp03svr"
cd /path/to/samp/server
 
echo "${dat} watchdog script starting." >>${log}
while true; do
        echo "${dat} Server exited, restarting..." >>${log}
        mv /path/to/samp/server/server_log.txt /path/to/samp/server/logs/server_log.`date '+%m%d%y%H%M%S'`
        ${samp} >> $log
	sleep 2
done

Este metodo irá trazer seu servidor de volta sempre que ele crashar ou quando usar o comando RCON exit. Isto também salvará um log em um diretório separado.

Metodo três

Você pode reiniciar o servidor usando este conjunto de scripts shell. Assumindo que o servidor esteja localizado no diretório /home/sampsvr.

Script numero 1 startgtaserver.sh:

#!/bin/bash
export GTA_PATH=/home/sampsvr
cd $GTA_PATH
while [ true ]; do
cat {$GTA_PATH}/server_log.txt >> {$GTA_PATH}/full_server_log.txt
rm {$GTA_PATH}/server_log.txt
touch {$GTA_PATH}/server_log.txt
./samp03svr
done

Este aqui vai próximo ao binário do servidor.

Segundo script, nomeado gtaserver.sh:

#!/bin/bash
 
server_start() {
screen /home/sampsvr/startgtaserver.sh & # put in full path and name of startup script
} 
 
server_stop() {
killall startgtaserver.sh # your startup script name
killall samp03svr # need to put in path to killall if its not in $PATH
} 
 
server_restart() {
server_stop
sleep 1
server_start
}
case "$1" in
'start')
server_start
;;
'stop')
server_stop
;;
'restart')
server_restart
;;
*)
echo "usage $0 start|stop|restart"
esac

Coloque o script no /usr/local/bin/.

Apenas altere os caminhos de ambos os scripts para os seus, então você pode iniciar o servidor usando gtaserver start, e parar o servidor usando gtaserver stop, e finalmente reinicia-lo usando gtaserver restart. Tenha certeza de que os scripts são executáveis.

In other languages