[hermit autoplay="false" mode="circulation" preload="auto"]netease_songlist#:1374061038[/hermit]

要求

  1. 具有SSH访问权限的Linux服务器,libstdc ++ 6和SSH客户端(例如PuTTY
  2. 互联网访问(一个完整的100播放器服务器使用大约4Mbps的上行速度)
  3. 转发的UDP端口(默认为7777)指南

设置服务器

1.下载并解压缩文件

首先,转到SA-MP下载页面,并找到Linux服务器的URL。然后使用wget和URL,将SA-MP Server下载到您的服务器。然后,从存档中提取文件。您可能需要cd到要安装服务器的目录,例如/ home / user

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

2.配置服务器

下载并解压缩文件后,浏览至刚安装服务器的文件夹(通常通过键入cd / home / user / samp03。接下来使用您喜欢的Linux文本编辑器,例如:Pico或Nano,编辑server.cfg并更改主机名,RCON密码等-有关更多信息,请参阅server.cfg帮助和“ 高级服务器控件”页面。

3.将游戏模式/过滤器脚本添加到服务器

也许您想运行SA-MP附带的示例游戏模式以外的其他游戏模式。在脚本展示厅中,您可以找到可能要在服务器上运行的大量脚本。要将它们添加到您的服务器,只需将所需的.amx文件下载到您的 \ gamemodes目录中,然后通过更改文件名(不包括这些gamemode 之一)来编辑您的server.cfg以运行此gamemmode。 “ .amx”。

这与过滤脚本的工作方式几乎相同。您也可以在脚本展示厅中找到它们。要将它们放在服务器上,只需将filterscript文件复制到filterscripts目录,并在server.cfg中以“ filterscripts”开头的行末添加不包含“ .amx”的文件条目。

4.运行服务器

一旦配置好server.cfg所需的方式,只需使用下面描述的三种方式之一运行服务器。每种方法在图片下方都有一个描述。我选择了三种最常用的启动服务器方式,可以在此页底部找到一个小型SSH脚本,以保持服务器运行。

注意:确保设置了samp03svr的权限并宣布是否要运行Internet服务器!如果您不这样做,则会收到权限被拒绝的错误。要设置权限,请在SA:MP服务器目录中执行 chmod 700 *。在根目录下运行服务器(或与此有关的任何其他程序)不是一个好主意。

方法一

第一种方法使用nohup命令来保持服务器运行。nohup是启动程序的Linux命令,它将忽略所有SIGHUP信号-断开信号。这意味着在您关闭之前打开的SSH窗口后,服务器将继续运行。与号(&)在命令的结束意味着服务器必须在后台运行,所以你可以继续执行命令,你已经开始了SA-MP服务器即使经过。

nohup ./samp03svr &

可以在文件nohup.out中找到详细的日志,该文件将在执行命令的目录中创建(在本例中为/ home / gta)。大多数Linux服务器上都安装了nohup。

方法二

方法二允许SA-MP Server进程在后台运行。这样做的好处是您可以继续在shell环境中工作,因此不必打开另一个窗口。在某些Linux服务器上,关闭SSH窗口后,该过程将继续运行,但并非总是如此。

./samp03svr &

没有日志文件或任何创建的文件。Shell将返回刚刚启动的进程的PID,在上面的示例中为9251。所有Linux服务器均支持此方法。

方法三

此方法是原始描述的方法,并且很可能是最容易理解的方法。服务器将在顶部运行,因此所有错误都将直接显示为输出(例如,分段错误)。但是请记住,与Windows Server一样,普通输出在Linux服务器上不可见。

./samp03svr

窗口关闭后,服务器将关闭。这种方法可能非常适合脚本和/或调试目的,因为它非常清楚。

注意:如果收到错误消息说找不到libstdc ++ 6,则必须将其下载到服务器上。


使服务器保持在线

由于SA-MP Server中提供的有限的防崩溃选项,很可能会收到分段错误或您的(Pawn)游戏模式生成的任何其他错误。这将关闭服务器,您必须自己重新启动它。

方法一

使用下面的程序,您所需要的只是一个Linux环境,以及使用cron的可能性。该程序将检查samp03svr进程是否正在运行,如果没有运行,请重新启动它。您需要安装以下crontab:

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

此处可以找到有关使用crontab的帮助。
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

确保必须更正设置的路径,否则将无法正常运行脚本。该脚本当前无法在同一台计算机上处​​理多个SA-MP服务器,但是当仅运行/需要一个时,该脚本可以完美运行。您需要将checksamp.sh文件chmod设置为0755(+ x)​​!

方法二

如果您不想使用crontab,并且希望在服务器崩溃时将服务器日志保存到单独的目录中,则可以使用此脚本。

要使用此脚本使服务器保持在线,首先需要停止服务器,然后使用以下命令执行该服务器:

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

每当服务器崩溃或发出RCON 退出命令时,此方法都会使服务器备份。还将服务器日志保存到单独的目录中。

方法三

您还可以使用此对Shell脚本重新启动服务器。假定服务器位于/ home / sampsvr目录中。

脚本编号1startgtaserver.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

这个接近服务器二进制文件。

第二个脚本,名为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

将脚本放在/usr/local/bin/中。

只需将两个脚本中的路径都更改为您的脚本,然后可以通过键入gtaserver start来 启动服务器,通过键入gtaserver stop来停止服务器 ,最后通过键入gtaserver restart来重新启动它 。确保脚本是可执行的。

本站网址:www.wangray.cn

Last modification:November 17th, 2019 at 11:52 am
If you think my article is useful to you, please feel free to appreciate