服务器是自己的服务器(6核16g),可以是虚拟机,也可以是装的linux系统。如果是云服务器操作同理,记得买的时候带上公网ip,就是省去了第五步端口映射。
1.创建steam用户
创建用户并设置密码
[root@localhost /]# useradd steam
给steam用户设密码
[root@localhost /]# passwd steam
给steam用户sudo权限 — 不知道steam用户系统会不会用sudo,我们用sudo方便我们操作
[root@localhost /]# vim /etc/sudoers
切换到steam用户
[root@localhost /]# su steam
注:
后面游戏服务启动失败 可能就是没切换用户steam
后面游戏服务异常关闭 可能steam里有root创建的文件,导致steam用户没权限读取文件
解决办法:把steam家目录的权限都改为steam
[steam@localhost /]$ sudo chown -R steam.steam /home/steam/
2.下载steamCmd
下载编译的
[steam@localhost /]$ sudo yum -y install glibc.i686 libstdc++.i686
下载steamCmd压缩包
[steam@localhost /]$ mkdir -p /home/steam/Steam
[steam@localhost Steam]$ cd /home/steam/Steam
[steam@localhost Steam]$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
解压
[steam@localhost Steam]$ tar -zxvf steamcmd_linux.tar.gz
3.下载(更新)游戏服务器
拿幻兽帕鲁举例
[steam@localhost Steam]$ cd /home/steam/Steam
[steam@localhost Steam]$ ./steamcmd.sh +login anonymous +app_update 2394010 validate +quit
(2394010肯定就是游戏服务器id,下载其他游戏服务器同理)
下载完成之后,启动服务器之前,有一步重要的步骤
启动服务器的时候,会去读取里面的steamclient.so
[steam@localhost ~]$ mkdir -p /home/steam/.steam/sdk64
把64位的steamclient.so移过去,要不然读32位的启动服务器是会报错的(如果是32位的系统,把linux64改为linux32)
[steam@localhost ~]$ cp ~/Steam/linux64/* ~/.steam/sdk64
4.启动游戏服务器
[steam@localhost ~]$ cd ~/Steam/steamapps/common/PalServer
[steam@localhost PalServer]$ nohup ./PalServer.sh &
上面是后台启动服务器,通过查看端口判断服务是否正常启动
[steam@localhost PalServer]$ netstat -nultp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:1985 0.0.0.0:* LISTEN 7341/PalServer-Linu
tcp 0 0 127.0.0.1:41345 0.0.0.0:* LISTEN 7341/PalServer-Linu
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
udp 0 0 0.0.0.0:8211 0.0.0.0:* 7341/PalServer-Linu
udp 0 0 127.0.0.1:323 0.0.0.0:* -
udp 0 0 0.0.0.0:27015 0.0.0.0:* 7341/PalServer-Linu
udp6 0 0 ::1:323 :::* -
8211端口启动,即可连接服务器
[steam@localhost PalServer]$ tail -f nohup.out
[S_API] SteamAPI_Init(): Loaded '/home/steam/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
CAppInfoCacheReadFromDiskThread took 1 milliseconds to initialize
Setting breakpad minidump AppID = 2394010
[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
另外,看日志输出,出现上面那个AppID = 也是成功的。没有端口的话就看日志有没有报错的
5.端口映射
局域网内直接使用内网ip+端口连接服务器
外网就要使用一些手段,包括但不限于购买公网ip绑定内网ip
这里我讲我的方式:
打开路由器的管理界面,查看是否有WAN口并绑有公网ip
或者在这个网站上查询看看是否有外网ip https://tool.lu/ip/,没有的话跳到第六步
有的话进入路由器的管理界面,可以看看路由器背面是否有,或者问运营商。我的是直接绑定在一个ip上,直接访问ip就能进入这个界面
打开高级设置-----地址转换-----虚拟服务器,新增地址转换规则,即可把内网ip映射到公网ip+端口上
最后去连接,输入ip:端口
6.公网ip
一般没公网ip的话应该是在家庭版,家庭的公网ip比专线的便宜很多,ipv4有一些地区一些运营商是可以免费申请的,可以看下这篇文章
小建议:我去查看了一下价格,租服务器可能会比购买公网ip便宜一些,除非可以免费申请公网ip,可以去试试。当然手上就有闲置的服务器和公网ip的话,就可以随便玩了。
7.重启服务
在修改配置,内存过高需要重启服务,重启方法:
[steam@localhost PalServer]$ netstat -nultp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:46492 0.0.0.0:* LISTEN 7269/PalServer-Linu
tcp6 0 0 :::3306 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:25 :::* LISTEN -
udp 0 0 0.0.0.0:8211 0.0.0.0:* 7269/PalServer-Linu
udp 0 0 127.0.0.1:323 0.0.0.0:* -
udp 0 0 0.0.0.0:27015 0.0.0.0:* 7269/PalServer-Linu
udp6 0 0 ::1:323 :::* -
可以看到服务PalServer-Linu对应的pid为7269(pid用netstat -nultp去看自己机器上的)
[steam@localhost PalServer]$ kill 7269
[steam@localhost PalServer]$
[1]+ 退出 143 nohup ./PalServer.sh
使用kill杀掉进程,没加-9不会强制杀,所以要等待个十秒钟左右再按一下回车,出现退出xxx就ok了
重启服务:
[steam@localhost PalServer]$ nohup ./PalServer.sh &