异星工厂吧 关注:57,690贴子:338,244

基础向服务器搭建教程

只看楼主收藏回复

前两个月我跟另外一个朋友开了一些异星工厂服务器,创了一个群(QQ701121067),现在已经有157人,然后发现进群的玩家有好些想跟朋友流畅联机,但是苦于游戏自带联机功能不好用,也不会开设自己的互联网服务器,网上的教程也看不懂,只能单人玩,一直非常苦恼,于是向会开服的我们请教,但是跟他们交谈之后发现,他们虽然基本都已经成年乃至步入社会,但是大部分连端口、公网IP、命令行等等基础概念是什么都不了解,有的甚至连解压、复制文件到某处以及依据路径来寻找文件这类操作都不会,群里那么几句话也讲不明白,因此专门在这开一处基础向的教程贴,希望能帮到这些人们。由于下午是满课,因此先把主题写好:想要架设一个异星工厂服务器,就需要一台配置足够、具有公网IP能被其他计算机通过互联网连接的主机,以及游戏官方的服务端核心(可以直接上游戏官网factorio.com下载,无需登录steam),我想,大多数人可能就是被第一个条件难住了,因为现在的家用网络几乎都没有公网IP,而相当一部分人也并不知道怎么申请公网IP,跟别提内网穿透、域名解析、虚拟机等等操作了,而且大多数人也没有一台配置足够的专门用来开服务器的主机,因此,我认为选用自带公网IP的云主机是最合适的选择,关于云主机,我跟朋友联机使用的是阿里云的抢占式(一种按小时制的收费主机),双核16G,开机状态一个小时6分钱,花销一点也不大,特别适合只在某一时间段有空和朋友联机的大学生或者上班族,我们所需要的只是:
按照正确方法购买一台主机,然后配置好它的网络安全组(开放一些端口使得主机上运行的异星工厂服务器能被其他客户端连接),之后将官网上下载的服务端压缩包上传到云主机,然后解压它,再将想要使用的存档、模组以及服务器的配置文件上传到云主机的相关位置,具体购买方法、如何配置以及如何操作使得异星工厂服务器启动将会于晚上18:00在评论区解释,因为我还有20分钟就要开始上课了,下午课程结束一定把它写完,不会放鸽子


IP属地:江西1楼2021-10-22 13:07回复
    我回来了!接着主题讲,先讲如何购买一台能用于稳定架设异星工厂服务器的云主机:
    首先,登录阿里云(可以直接支付宝登录),然后需要至少充值100元才能购买抢占式这种按小时制收费的主机(不用担心,在你把你的云主机释放/退订之后24h,可以申请提现阿里云账户内的所有余额),然后在阿里云官网上搜索ECS然后进入详情页,点击立即购买,之后按照如下的图购买一台张家口地区的双核16G的主机:


    选择张家口是因为这个地域的主机便宜且网络连接足够稳定,只要在国内,就问题不大,延迟并不会有多高,
    那么之后点击下一步:网络和安全组

    选择的按流量计费,可以直接把带宽上限拉到最大的100M,并不会影响价格,关于安全组的配置之后会讲;
    现在点击‘下一步:系统配置’

    账户名是root,无需更改,密码需要带有数字以及大写字母和小写字母,缺一不可,之后直接点击确认订单即可(跟小伙伴开个小服务器不需要分组设置):

    下一步,同意协议之后创建实例即可,这样,一台配置足够的云主机就拥有了,它在开机状态下每小时消耗6分钱,关机是一分钱,对于每天晚上玩个两三个小时的人来说,几乎没有什么开销,而两三个人联机玩的话,流量费可以忽略不计了


    IP属地:江西2楼2021-10-22 19:21
    收起回复
      在购买了云主机之后,可以随时在ECS控制台即 云服务器管理控制台找到它,并且对其进行一些配置、操作,那么接下来就是对它进行一些配置工作,使得它具有开设异星工厂服务器的基础条件:

      如上图所示,先点击“更多”,然后“网络和安全组”,最后点击“安全组配置”,进入安全组页面:

      如上图,直接点击“配置规则”,进入配置页面:

      点击“手动添加”之后,会出现一个小栏,按照下图指示输入即可:

      输入好之后,点击保存来保存你的设置,
      注意,上图的34197/34197意思是只开放34197这一个端口(这是异星工厂服务器的默认端口),如果你和你的小伙伴只需要一个服务器,那么这一个端口就可以了,如果你希望开设多个服务器进程,可以使用类似于34000/35000这样的来直接开放多个端口以供服务器使用。其他的除了“描述”可以自己随便写之外,照着图中的做就行。那么这是安全组配置,将它配置好之后,就可以开始对你所拥有的这台主机发送命令行、上传文件来架设服务器了。


      IP属地:江西3楼2021-10-22 19:46
      回复
        关于发送命令行来操作我们的云主机,其实只需要使用一些非常基础的命令即可完成服务器的搭建,要想对这台主机远程发送命令,有好几种方式,这里先讲两种,第一种,直接在云服务器管理页面点击所购买的云主机(实例),然后点击远程连接:



        如上图,然后就能在箭头所指的位置输入命令了,同时,也可以用我们电脑自带的cmd,通过SSH来远程连接到云主机,对其发送命令只需同时按下windows徽标键与”R“,然后输入"cmd"即可呼出cmd,然后输入ssh root@云主机的公网IP(在服务器管理页面可以直接复制)即可远程连接到云主机的命令行控制台,输入密码即可认证,注意,在输入密码时,cmd的光标并不会有任何变化,这是正常的,只需要正常输入密码然后按回车即可:

        显示欢迎语即代表成功连接。接下来会讲解开设一个异星工厂服务器所需要发送的命令


        IP属地:江西4楼2021-10-22 20:06
        收起回复
          在成功连接到云主机命令行界面之后,需要开始上传异星工厂服务器的服务器端核心,网上的大部分教程是使用wget命令来直接让云主机去官方的网址下载服务器端核心,但是,这样做并不一定能成功,甚至对于现在的很多人来说,大概率会显示404 NOT FOUND,无法成功下载(如下图),

          这里直接上异星工厂官网,正如我的第一篇回复贴中购买云主机的教程中所写,我们的云主机所使用的系统是基于Linux系统开发的centos8.4,因此在download页面点击下载那个Linux的无头版本(点击下载页面的无头企鹅按钮即可下载无头的Linux系统专用版本),

          下载之后打开文件位置,将其移动到一个存放异星工厂服务器相关文件专用的文件夹(在一个方便找到的地方创建一个文件夹即可)
          下载好服务器端核心的压缩文件之后,就是使用FTP软件来上传文件到我们的云主机了


          IP属地:江西5楼2021-10-22 20:19
          收起回复
            安装FTP软件filezilla很简单,直接搜索filezilla,然后点击进入filezilla中文网。即https;//http://www.filezilla.cn即可下载:

            下载完成后启动程序即可按照指引开始安装,安装完成之后,打开,按照如下图所示输入你的云主机的公网IP,并且在对应位置输入用户名root、你设置的密码以及连接所用的端口22,点击快速连接,并且选择信任该主机即可连接到云主机,之后可以开始对其上传文件:


            这是云主机端的root文件夹内容,我们以用户名root的身份连接,默认进入到的就是这个文件夹

            现在将我们刚刚下载并存放在电脑上的服务器端核心的压缩文件拖动到云主机端的空白处即可上传服务器端核心(开几个和好朋友联机的服务器房间,无须担心,直接在root文件夹下存放服务端核心即可),上传成功之后,我们最好将其重命名,以便接下来的解压操作,这里我把它重命名成fac1142.tar.xz了(原本是一个名字较为复杂的带.tar.xz后缀的文件),一切都完成之后,回到我们已经连接上云主机命令行界面的cmd控制台,先后输入指令:
            xz -d /root/fac1142.tar.xz (将.tar.xz文件解压成.tar文件)
            tar -xvf /root/fac1142.tar (将.tar文件解压成为原本的文件夹)

            记得两道指令之间要换行,并且注意"-d"与后面的"/root......"之间有空格,"-xvf"也是,这是一个敏感的格式问题,如果没有空格,指令将会识别失败。
            使用这两道指令解压好之后,回到FTP连接界面,刷新一下,应该能看到新生成的factorio文件:

            我们进入这个文件夹,可以看到里面只有两个文件夹以及一个.cfg文件:

            这里还缺少一个saves文件夹以及mods文件夹,分别用来存放用来开服的存档以及模组相关文件。我们不用命令行,直接在空白处鼠标右键,新建目录,把它们创建好即可,之后直接把你想要用来开服的存档上传到saves,在游戏内启用你想要启用的模组并且设置好之后,复制自己电脑上mods文件夹的内容到云主机的mods文件夹内即可,现在还差最后一个关键的文件:一个具有服务器设置信息的.json配置文件,它决定了了服务器启动后,是否公开在互联网大厅、是否开启正版验证、使用的密码、服务器名称以及一系列相关设置。下一篇回复贴就讲解如何找到它并且对其进行编辑。


            IP属地:江西6楼2021-10-22 20:54
            收起回复
              好,基本上一切都准备就绪,就差一个服务器配置文件了,这个配置文件有两种方式找到它:
              第一种,直接在steam库中,右键factorio,点击”浏览本地文件,然后点击进入“data”文件中,这里有个server-settings.example.json,这就是我们要找的配置文件,然后我们的云主机上,双击进入factorio文件夹,再进入data文件夹,里面也有这个文件,
              我们将其复制到存放异星工厂服务器相关文件的文件夹内,就可以开始对它进行编辑,我们需要修改的主要有:服务器名、服务器描述、服务器密码,同时,由于我们是centos系统的主机,可以使用无暂停存档功能,这里把对应选项卡后面的"false'改为“true"即可启用:


              图中的"name"就是服务器名了,我们直接在双引号内输入想要使用的服务器名称,这里我建议使用中文名,否则不好直接在互联网大厅找到服务器,我使用factorio作为名字是示范用,然后name下面的description就是服务器藐视,可以随便写点或者不写,再下面的max players就是规定最大玩家数,设为0表示无限制,然后如果你要通过互联网和朋友联机,且你们都买了正版,"public"选项后面最好设为”true",这样才能直接在互联网大厅搜寻到你的服务器,如果你和朋友之中有人没买正版,请一定把"public'选项设为“false",然后第一张图最下面的那个”require user verification"设置为“false”,这样使得你的服务器只有通过IP直连才能连接到(放心,不在同一局域网下的两人依然能通过你云主机的公网IP连上你的服务器)服务器才能成功启动,没买正版的玩家才能链接进来(前提是他和服务器版本相同,且模组文件夹内容一致),好,那么最基础的配置选项已经设置好了,还有一些影响游玩的小选项:无暂停存档,就是配置文件第二张图的non block saving,把它设置为"true"即可启用它,启用之后,即使是服务器正在存档,游戏也不会暂停,在服务器内的玩家也不会受到任何影响。那么这就是配置文件设置的全部内容,关于其他一些并不重要的选项,我会另开一个主题帖讲一下,不过这类解释网上应该都有,自己也可以用翻译软件翻译或者英语好的同学可以自己理解它,我的解释只是针对那些学生时代错过英语学习机会的玩家。


              IP属地:江西7楼2021-10-22 21:24
              收起回复
                那么在所有的文件准备好之后,我们就可以开始输入命令行,让异星工厂服务器开始运行了,我们只需要这么一段简单的代码即可(只是先行测试,后面将会有把服务器进程化或者丢到后台运行的方法介绍,只是多了几步):
                /root/factorio/bin/x64/factorio --port 34197 --start-server /root/factorio/saves/factorio.zip --server-settings /root/factorio/cfg.json --mod-directory /root/factorio/mods 还是一样,一定要注意空格,每个操作码与其后的操作参数之间都有一个空格,例如“port"与端口”34197“,”start-server"与“/root/...../factorio.zip"等等,它们之间都有一个空格。那么这段代码是什么意思呢?可以向那些没有条件学习计算机指令的玩家解释一下:
                启动/root/factorio/bin/x64 文件路径下的factorio服务器程序(这个文件路径就是说root文件夹里面的的factorio文件夹里面的bin文件夹里面的x64文件夹,里面有个factorio程序,之后的文件路径同理,不再解释),并且将其开放在34197这个端口(玩家通过你云主机上的这个端口连接进异星工厂服务器房间),且使用指定文件路径下的指定文件作为存档(为做示范,我使用的是factorio.zip)、指定路径下的指定.json文件作为配置文件(我这里将之前获得的配置文件重命名为了cfg.json,,并且将其存放在了云主机的/root/factorio文件夹下),使用指定路径下的指定文件夹作为模组文件夹,那么这条代码就已经指定好了必需的所有参数了,在已经连接到云主机命令行界面的cmd控制台输入这段代码并且按回车即可开始加载服务器进程:

                当看到上图中下面的那些反馈的时候,就说明你的服务器已经成功对互联网开放了,这时可以直接进入互联网大厅,搜索你在配置文件之中设置的服务器名,或者直接在多人游戏中的“服务器直连”中输入你的公网IP:你使用的端口(默认的34197不用加冒号与端口,如果你的服务器不是开放在你云主机上的34197端口,则需要在公网IP后加上英文冒号与端口值,注意公网IP、冒号、端口值之间不得有任何其他字符或者空格),那么这里我们开始搜索我们的服务器名factorio:

                可以看到,它已经启用了一些我放在服务器mods文件夹内的模组(当你不上传模组启用列表文件以及模组设置文件的时候,服务器会自动按照默认设置启用模组文件夹内的所有模组),点击加入游戏,并且同步模组,输入我们在配置文件内设置的密码“6666”,成功连接并且进入:


                存档就是我选用的存档,那么这可以确定就是我们刚刚开设的服务器了。
                接下来我们需要介绍如何将服务器进程化,或者将它放入后台运行,使得我们即使关闭了SSH命令行连接,服务器依然会不受影响地运行。


                IP属地:江西8楼2021-10-22 21:55
                收起回复
                  要想把服务器的运行放到后台,有很多种方法,这里只介绍比较基础向的两种,让没有机会学习计算机相关的专业知识的玩家也能知道如何使用:
                  第一种是使用screen 窗口化命令,让我们的服务器程序运行在一个个后台窗口上,我们即使是切出了窗口(不要关闭窗口)或者关闭了SSH远程连接,服务器依然会在这些窗口上运行,下面是操作介绍:
                  首先,我们先在云主机命令行界面同时按下ctrl与c键关闭之前先行测试所开启的服务器运行程序,然后我们要使用命令 yum install screen 让我们的云主机安装screen程序,下载好之后会让你确认是否安装,输入"y“并回车即可确认安装:


                  显示Compeleted之后,使用命令 screen -S 一个好记好输入的窗口名 来创建一个被命名了的窗口(我设置的是fcs) ,按下回车执行这条命令,即可进入创建好的窗口,我们像之前一样输入那串代码 /root/factorio/bin/x64/factorio --port 34197 --start-server /root/factorio/saves/factorio.zip --server-settings /root/factorio/cfg.json --mod-directory /root/factorio/mods (这里再次提醒没有掌握基本计算机技巧的玩家,如果你的存档名、模组文件夹名、配置文件夹名以及相关的所有文件存放位置等等这些重要参数跟我有任何不同的话,那么千万不要完全复制我的代码,否则服务器不会正常启动) 好,接下来我们可以看到,主机识别了这段代码,并且像之前那样,服务器开始加载了:

                  同样的,在看到后面几条信息之后,我们就可以确定服务器已经对互联网开放了,关闭远程连接,也能找到并且连接服务器。如果你之后又想要回到这个开了服务器的控制台窗口,对服务器后台进行一些操作,那么就在命令行界面输入 screen -r 你创建的窗口名 来回到你所创建的窗口:

                  可以看到之前的服务器运行的日志还在这个窗口上被展示了:

                  这是第一种常用的将服务器运行放到系统后台的方法,但是这个方法的缺点是操作不如第二种方法简便,每次关服之后,再开服,都需要重新输入代码,容易出错,为了介绍并示范第二种方法,我们先在创建的这个窗口上关闭异星工厂服务器进程:


                  IP属地:江西9楼2021-10-22 22:25
                  收起回复
                    我们所用的第二种把服务器运行程序放到后台的方法是使用Linux自带的systemctl功能来将我们的异星工厂服务器运行程序进程化,就是说把它变成一个系统进程,运行在后台之中,并且可以设定开机自启,这样,我们每次关服或者开服,只需要直接把我们的云主机关机或者开机即可(只要不是强制关机,那么关机时,存档依然会被保存),如果你希望不关云主机,但结束服务器运行进程,那么直接复制并输入 kill -INT $(pidof factorio) 即可结束服务器进程,存档会自动保存,这条代码大家都跟我一样就行,不需要自定义更改。那么怎么用systemctl把服务器程序给进程化呢?你需要复制下面这些所有代码:

                    即:
                    cat << EOF > /usr/lib/systemd/system/factorio.service
                    [Unit]
                    Description=Factorio
                    After=network.target
                    [Service]
                    WorkingDirectory=/root/factorio/bin/x64
                    Type=simple
                    User=root
                    ExecStart=/root/factorio/bin/x64/factorio --port 34197 --start-server /root/factorio/saves/factorio.zip --server-settings /root/factorio/cfg.json --mod-directory /root/factorio/mods
                    RestartSec=1
                    [Install]
                    WantedBy=multi-user.target
                    EOF
                    systemctl daemon-reload
                    systemctl enable factorio
                    systemctl start factorio
                    systemctl status factorio
                    很长,很多,不是吗?但是我们并不需要记住并理解这里面所有的代码,只需要理解比较简单且基础的就可以正常使用systemctl来开设服务器了:
                    WorkingDirectory=/root/factorio/bin/x64 :这个里面的文件路径我们是不是在之前开服的代码里面见到过?,那么这个就是存放你factorio运行程序的位置,也就是服务器进程的工作路径,只要你跟我一样,直接在root文件夹里面解压的服务端核心文件,并且把它直接存放在了root下,那么就无需更改,如果你放到了其他文件夹下,直接改为你factorio程序的存放位置即可(不包括factorio运行程序)
                    ExecStart=/root/factorio/bin/x64/factorio --port 34197 --start-server /root/factorio/saves/factorio.zip --server-settings /root/factorio/cfg.json --mod-directory /root/factorio/mods :
                    那么这条代码后面的指令就更熟悉了,它就是我们的开服代码,一般来讲,你的存档名以及使用的配置文件名可能跟我不同,那么向之前那样依据相应文件名以及文件存放位置进行适当更改即可。
                    那么这上面一整段代码大概时什么意思呢?我们先抛开上图中用红笔圈出的部分,即最后四行systemctl....指令,上面的部分是创建并且照着代码中所写的内容编辑一个.service文件,这个文件是用来决定配我们异星工厂服务器程序将会被怎样进程化的。
                    而后面的四行systemctl....指令分别是配置文件重载(重新加载.service配置文件,使得我们刚刚的编辑生效)
                    设定开机自启异星工厂服务器进程;开启异星工厂服务器进程,查看异星工厂服务器进程的运行状态;我们复制代码并且直接右键点击即可粘贴到SSH命令行界面,然后回车,执行systemctl status factorio ,查看进程的运行状态:


                    如上图,当我们输入systemctl status factorio 之后,看到那个绿色的 "running"之后,说明我们的服务器进程正在加载或者保持运行,与之前一样,看到后面的几条消息反馈,就说明我们服务器已经对互联网开放了,那么按”q"即可退出这个查看状态的界面,把远程连接关闭掉,服务器依然会正常运行,可以被正常搜寻到。
                    以上就是开设服务器的全部介绍,这里再次强调,讲的比较多,是为了让那些在学生时代没来得及掌握基本信息技术的玩家或者还没开始学习基础信息技术相关知识的玩家也能看懂,另外,关于一些经常遇到的问题,我会在回复贴给出解释,实际上异星工厂游戏服务器十分稳定,出现的问题将近100%是操作不当或者某些模组的兼容性不好所导致的,因此之后我会继续介绍一些小细节。


                    IP属地:江西10楼2021-10-22 23:20
                    收起回复
                      莫名其妙被系统删了



                      IP属地:江西来自Android客户端11楼2021-10-22 23:38
                      收起回复
                        这种内容是非常不好做的,能搭建服务器的玩家一般不用教,不能搭建的玩家一般不想学,所以从一开始受众面特别小;而从零开始教搭建服务器的学习曲线又特别陡,又要学习开通云服务器,又要学习Linux命令行操作,又要学习网络通信知识,又要学习Factorio服务器指令,想学的玩家也会被吓走一多半。
                        所以说,建议再优化优化内容,给萌新一个总体的学习框架,再分别展开详细教学,并尽可能引入集成好的代码,效果能好很多。


                        IP属地:吉林12楼2021-10-24 10:23
                        收起回复
                          要是我刚开始想学搭服务器就有这教程多好,建议萌新要是有24小时的电脑可以直接用游侠启动bat文件,游侠里面照样看的见


                          IP属地:辽宁13楼2021-10-30 22:35
                          回复
                            好的 实际已经弄好了 配置文件按你这个步骤就可以了吗


                            来自iPhone客户端14楼2021-11-01 01:12
                            收起回复
                              果果喵都看不下去了)


                              IP属地:浙江15楼2021-11-01 09:40
                              收起回复