Linux Server PT
From SA-MP Wiki
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.
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.