wtfgame吧 关注:424贴子:5,471
  • 11回复贴,共1

【授人以渔】wtfgame开服教程与心得

只看楼主收藏回复

上个帖子寄了,重开!
大家好,这是WTFGame(game.liulin5.xyz)的腐竹彼岸·L。受限于精力和财力的问题,我可能无法一直维护服务器的运作。也许在未来的某天我的服务器会和过去的那么多WTFGame服务器一样停服。正所谓授人以鱼不如授人以渔,所以我根据自己开服的经历写下了这篇开服教程和心得。希望有人能受到启发把丢猫的快乐延续下去。


IP属地:浙江来自iPhone客户端1楼2023-06-10 11:22回复
    我把目前想到的内容分为了以下几个部分:
    1.准备开服需要的软件
    2.家用机开服(基于windows)
    3.专业服务器开服(基于Linux)
    不过我其实不太擅长写教程之类的,先把大纲放在这里了。然后就是已经构思好的准备工作部分,后面的内容就要慢慢更新了。我的设想是做到图文并茂,且足够详细,所以可能需要些时间构思,但绝对不会很久,最慢也就一到两周吧。


    IP属地:浙江来自iPhone客户端2楼2023-06-10 11:24
    回复
      第一部分:准备工作
      这个部分就是需要去准备开服要用的一些东西,我们需要去下载以下软件:
      1. WTFGame开服包
      2. Java8
      3. GlassFish4
      4. Nginx或其他web服务器
      东西很少,就四样,接下来我一个一个介绍
      WTFGame开服包(https://github.com/wheatup/wtfgame/archive/refs/heads/master.zip)这个大家应该有看到过,至少我加的几个WTFGame的群里都有人在发,就是wtfgame-master.zip这个压缩包。这个压缩包里有源码包和开服包两个文件夹,我们只需要开服包就够了,可以先解压出来备用。
      Java8(https://www.java.com/zh-CN/download/manual.jsp)MC玩家对这个应该比较熟悉,是玩1.7-1.16的MC最常用的Java版本,链接里包含了所有的java8版本,选 Windows脱机(64位)就对了,下载好后双击安装,一直下一步就行,要是不想装C盘就换一个安装目录。
      之所以要Java是因为WTFGame是一个javaweb项目,要部署它需要一个websocket服务器,也就是Glassfish4,而Glassfish4实际上是一个已经相当落后的技术,所以只适配Java8,Java的版本再高就不适配了。安装完成后,可以验证一下是否安装成功,按下Ctrl+E在弹出的窗口里输入CMD打开命令行,然后在命令行里输入Java -version,如果显示的结果为”java version 1.8.*******”就说明安装成功了。
      Glassfish4(https://javaee.github.io/glassfish/download)版本选择GlassFish4.1.2-full platform(如图)
      它是一个应用服务器,和TomCat一样,用于部署WTFGame的服务端。虽然Glassfish4已经落后了,但毕竟wheatup把Glassfish的配置写好了,能直接用。Glassfish4不需要安装,下载好后解压备用即可。
      最后是Nginx(https://nginx.org/en/download.html)选择最新的nginx/Windows-1.25.0(如下图)。同样不需要安装,下载并解压好备用就行
      Nginx是一个web服务器,而web服务器是指驻留于因特网上某种类型计算机的程序,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。(这段是百科上抄的)
      ok,把这些都下载安装好后准备工作就算完成了,接下来就可以尝试去开服务器了


      IP属地:浙江3楼2023-06-10 15:23
      回复
        第二部分:一、家用机开服(基于Windows)
        第1小节.客户端架设
        好的,我们先来处理客户端,解压开服包,获得一个war文件和一个文件夹(如图)

        文件夹就是我们需要的客户端,不过与其说是客户端我更喜欢叫它前端或页面端。因为这个客户端并不是说你要去手动分发客户端给其他玩家,而是去搭建一个网站,然后让其他玩家访问这个网站从而获取到所有需要的内容(但要细琢磨会发现其实和手动分发没差多少了)。
        首先,拿出我们准备好的Nginx,双击启动nginx.exe(如图)

        这时候会闪过一个CMD窗口,然后再打开浏览器,输入网址’127.0.0.1’这个地址代表这”本机”,正常启动的情况下打开这个网址会看到下图的Nginx的默认页(如图),

        如果没有出现,或者无法访问此页面,这可能是因为端口被占用了。用记事本打开conf里的nginx.conf,找到这段话” listen 80;”把语句中的80改为91,或者1~65535之间的任意数字,只要别再和其他应用冲突就行。
        改完之后你的网址后面就需要再加上端口号,就像"127.0.0.1"改为"127.0.0.1:91"。
        Web服务器这就算架设好了,下一步,把WTFGame的前端(客户端)放进去。打开Nginx根目录下的”html”文件夹这里就是存放网页的地方,刚才看到的默认页就是index.html这个文件。让我们把WTFGame前端的整个文件夹放进去。

        在浏览器里输入127.0.0.1/WTFGame,然后你就看到了......一片空白???
        是的,因为WTFGame需要调用几样网上的lib,但是提供lib的服务器503了。那怎么办?别担心,我们可以从别的地方借过来用。比如我的服,我把我之前转存的资源打包好了,放在我的服务器上,访问下面的网址就能直接拿到(我是觉得这个确实不能算准备工作的一部分)。
        https://game.liulin5.xyz/wtfgamelib/lib.zip
        把lib里的js文件夹解压到wtfgame前端的根目录就行(就是同样有个js文件夹的那个目录),完成后你的js文件夹里就会多出来一个叫engine.zuoyouxi.com的文件夹。
        这样lib就加好了,但是你的客户端还不知道,你需要右击WTFGame文件夹里的index.html文件,选择打开方式,使用记事本打开。

        在上方的编辑栏里找到替换功能,搜索”http://engine.zuoyouxi.com”,全部替换为”js/engine.zuoyouxi.com”。

        这样一来,我们的客户端就调用自己本地的lib了。再次打开127.0.0.1/wtfgame就会发现,成功进入游戏了!

        至此,前端(客户端)就算完成架设了。打开的游戏一直处于正在连接服务器的状态,是因为后端(服务端)尚未架设完成,下一小节就来讲讲如何部署wtfgame.war也就是后端。


        IP属地:浙江4楼2023-06-11 16:26
        回复
          2.服务端架设
          OK,摸够鱼了,现在开始,第二小节,架设服务端。
          首先,我们先掏出Glassfish4,打开文件夹,打开bin看看目录,进去后应该能看到一个叫asadmin的文件

          但是它并不能直接打开,这个时候我们需要先回到上层目录,按住shift,再右击bin文件夹,选择在此处打开powerShell窗口,win11的话应该是在终端中打开。

          然后就进入了命令行,先确认一下,命令行前面的地址确实是'*\Glassfish4\bin>',然后输入’.\asadmin’
          这时命令行会变成'asadmin>',我们先来创建一个管理员账号,输入’change-admin-password’.
          命令行输出’Enter admin user name [default: admin]>’这是确认用户名,默认是admin,直接回车就行。
          下一项’Enter the admin password>’这是让你输入旧的管理员密码,但新下载的Glassfish不可能有密码,所以直接留空,敲回车就行。
          再往下是’Enter the new admin password’,这就是要你输入新密码了,自己想一个填进去。
          注意!注意!你填进去的字符是不会显示出来的!不要以为是自己程序卡了!
          最后是’Enter the new admin password again’就是再确认一边密码,重新输入一边新密码就行。
          输出'Command change-admin-password execute successfully'代表密码修改成功。

          改完密码,输入’start-domain domain1’来服务器。
          输出’Command start-domain executed successfully.’代表启动完成。

          记住'Admin Port:4848',这是管理员面板的端口号,在浏览器输入”127.0.0.1:4848”进入管理面板,输入刚刚改好的管理员账号密码,点login登录。

          进去后,在左侧菜单的进入Applications选项。再在右侧选择Deploy..

          这就进入了部署界面,这边我们选择Packaged File to Be Uploaded to the Server,然后点选择文件

          找到后端,也就是WTFGame.war这个文件,打开

          打开之后下面会跳出一堆东西,全部不用管,直接点右上角的OK就行。看到下面这个界面就代表后端已经部署完成了。

          最后,把后端和前端连接上。回到nginx的html文件夹里的wtfgame文件夹,右键index.html打开方式,选记事本。打开之后找到"请输入游戏服务器地址"这一段。把它改为’ws://127.0.0.1:8080/WTFGame/server’(注意大小写!!!)完成这些之后,再在浏览器打开上一小节开好的客户端的地址127.0.0.1/wtfgame,可以看到已经能正常进入游戏了。

          好了,第二小节后端部署也完成了,现在我们可以正常的进入游戏,但别人好像还没有办法进入游戏。所以接下来第三小节的内容就是,端口映射,让服务器面向全世界开放。


          IP属地:浙江5楼2023-06-14 16:50
          回复
            因为一些原因鸽了有些时间,现在开始重新更新了。第三小节最迟明天发,快一点过会就出来了。


            IP属地:浙江6楼2023-06-23 14:32
            收起回复
              第三部分、专业服务器开服(基于Linux)
              前言:
              是的,没有错上一章暂时没有第三小节了,我所知道的所有端口映射的办法似乎都没法用了,像是转发软件,网关映射都没法用在web服务器上。不过我倒是去试了别的软件和游戏,MC、泰拉瑞亚、CS之类的,这些是不受影响的。
              没办法,所以我们暂时先跳过第二章第三小节,开始第三章Linux的教程
              首先,这个教程基于专业服务器,所以你得现有一个专业服务器。租服的几个建议:CPU推荐双核及以上,内存推荐4G及以上(Elfive服满载的时候就是吃了4G内存,我的服至今没有满载过),带宽建议3M及以上不过也不用太多就对了。服务器位置主要就是国内和国外两种选择,国内域名需要备案,但访问速度更快;国外不用备案,但是速度慢很多。有个例外就是港澳台地区不用备案,不过速度也不会很快,至少比真的国外好。
              我推荐可以去试试各大厂商的云服务器,一般大厂都是有学生优惠和新人优惠的。我现在手头刚好有个闲置的1U1G的轻量云可以使用,所以我就准备拿这台来演示了。


              IP属地:浙江8楼2023-06-24 15:41
              回复
                在买完服务器后一般需要先重置服务器的密码,然后使用SSH登录服务器。这些的教程都可以在服务商提供的产品说明里找到,我这边就不多讲了,毕竟服务商不同操作的流程多少也有点不同。
                同时,我建议没有使用过Linux系统的人去稍微学习一点基础知识,最少要知道’cd’,’ls’,’mkdir’,’mv’,’rm’这些指令的作用
                我的操作系统是Ubuntu。如果你用的是Centos的话有部分指令可能和我的不一样,比如Ubuntu的apt等于Centos的yum。
                首先连接到服务器,我们需要服务器准备以下几样样东西:
                1. rz/sz (这是向服务器传输和接收文件用的)
                2. Zip (用来处理压缩包)
                3. 上面的准备阶段提到过的Glassfish4(需要没动过的压缩文件)
                4. WTFGame客户端和服务端(废话)
                首先输入指令'sudo apt install lrzsz -y && sudo apt install zip -y'安装1和2,安装完成的话输入'rz'指令会弹出一个文件选择框。
                输入zip会输出zip的帮助信息
                输入’apt install open JKD-8 -y’安装Glassfish4需要的java8。完成后输入’java -version’验证是否安装成功。如图显示版本为1.8.X_XXX就说明安装成功了。
                现在我们架设客户端,输入’apt install Nginx -y’安装Nginx。安装完成后输入’systemctl status nginx.service’验证服务是否开启,输出’Active: active (running)’说明已经Nginx启动了。
                然后我们先别急着上传网页,因为还有些东西需要改。现在改完再上传会比较方便,用记事本打开自己电脑上的WTFGame客户端的index。
                如果你完成了第二部分,可以直接用第二部分的文件,没有完成的,可以先把第二部分的修改index文件过一遍。
                有一点,真的是一点’./’,我不确定影响大不大,严格意义上第二部分里改index的’js/engine.zuoyouxi.com/’应该被写为’./js/engine.zuoyouxi.com/’,在windows上就算不加这’./’也能正常运行,不过为了严谨起见,我觉得还是加上比较好。
                所以现在的操作是,先完成第二部分的index修改部分,然后再进行一次替换,把”js/engine.zuoyouxi.com/”替换为”./js/engine.zuoyouxi.com/”。
                完成这一步后还要修改下面的服务器地址,原本我们给它改成了本机地址。现在我们要给它改成服务器的IP,这个一般在服务器的后台都是能看到的

                还有端口也需要改一改,我发现很多服务商直接禁止80和8080端口的使用。虽然我的是香港服务器。但我是改成了9999,修改后如下图。

                改完这里,把整个WTFGame文件夹重新打包成zip(不可以是rar)上传到服务器,
                在终端输入’cd /var/www/html’进入nginx存放网页的目录

                再输入rz -E(注意空格和大小写!),跳出界面选择压缩包上传,或者直接将压缩包拖进终端里面。

                上传好了输入’unzip wtfgame.zip’(注意大小写!或者你起了别的名字!)完成后输入’ls’看看是否被解压成功,以上步骤全部完成的文件夹应该是下图这样的,忽略掉index.nginx这个文件,有wtfgame和wtfgame.zip就说明完成了

                这样就算搭建完成了,然后是开放80端口。先确认服务器的防火墙是关闭的,输入’ufw status’,输出’Status: inactive’说明防火墙已经关闭了。
                接着进入服务商的控制台,找到对应的云服务器,进入防火墙,看看80端口有没有开放,如果没有开着那就添加规则
                因为不同的服务商的控制台界面多少都有点不一样,所以我就不放图了。如果没找到或者不会的话,还是看服务商提供的产品说明比较好。
                完成后在浏览器输入服务器的公网IP,如果成功加载出游戏并且停留在登录页面就代表成功了(如第二部分第一小节结尾)。


                IP属地:浙江9楼2023-06-26 16:42
                回复
                  以为还要再发一边,没想到居然被放出来了


                  IP属地:浙江11楼2023-06-27 14:46
                  回复
                    第2小节.服务端部署
                    完成了客户端的架设,就是部署服务端(后端)了。这一段比较简单,Glassfish在第二部分学过一边之后应该很容易就能上手,因为在windows上操作Glassfish也是靠命令行和管理面板来完成的,到这边Linux算是大同小异了。
                    登录Ubuntu,首先我们给Glassfish专门创建一个文件夹,输入’cd /opt’进入opt文件夹,输入’mkdir glassfish’创建一个名为glassfish的文件夹。输入’cd glassfish’进入文件夹。对了,这里说一个之前没提到过的小技巧,使用TAB键可以快速补全指令。然后我们把在本地的Glassfish4的压缩包用rz -E传过去。这里要注意一下,你传过去的要是没有动过的原始压缩包,而不是完成了第二部分开服后又重新打包的版本。上传完成用unzip指令解压压缩包,最后文件夹应该和下面的一样

                    接下来需要做的是改一下访问端口,记得在第一小节的时候我们把端口给改成9999了吗。对应的我们需要更改glassfish的端口。
                    输入指令’vi /opt/glassfish/glassfish4/glassfish/domains/domain1/config/domain.xml’进入文本编辑器。如果你用的终端支持外置文本编辑器的话,那就再好不过了。
                    不支持也没关系,就是找段落麻烦了点。为了让大家都看懂,我就不用外置的文本编辑器了。我们要在众多的文本里上下翻,找到有8080端口的这一段

                    按下电脑上的Insert键(一般位于键盘的方向键的上面,那6个按键里和delete键挨得很近)进入编辑模式。需要注意的是,编辑模式里你的光标应该停在你要编辑的文字的后一格的文字上。删除,把8080换成9999
                    按esc键推出编辑模式,输入一个冒号(shift+分号键),文本编辑器会进入指令模式。输入’wq’然后回车,意思是保存并退出编辑器。

                    改完之后后面的步骤就和第二部分里一模一样了先用cd指令进到glassfish的根目录里’cd /opt/glassfish/glassfish4/’然后输入’./bin/asadmin’进入启动glassfish。
                    然后输入’change-admin-password’改管理员密码,这部分可以直接照着第二部分创建管理员账号那段,为了省图片数量就不再说一遍了。完成后输入’start-domain domain1’开启服务器。输出’executed successfully’(如下图)代表服务器开启成功。

                    但我们现在还无法访问管理员面板,因为我们没有开启远程访问。输入’enable-secure-admin
                    ’启用远程访问管理员面板,它会依次要求输入管理员账号名称和对应的密码(就是改账号密码时候改的)。输出’executed successfully’(如下图)代表启用成功。

                    接着仿照上一小节开80端口,去服务商的控制台把服务器防火墙的4848和9999端口打开。

                    我还是那句话,每个服务商的控制台多少都有些不一样,具体改防火墙的方法请自己查服务商提供的产品说明。
                    添加好了就可以远程访问了,再浏览器输入’http://你的IP:4848’登录后台,部署war包的方法和第二部分教的一模一样,这边就不过多赘述了。
                    部署完成,浏览器输入你的WTFGame,’http://你的IP/wtfgame’进入游戏,能进入游戏而不是卡在登录界面就说明开服成功!
                    挂机太久被踢了↓

                    至此,教程算是完结了
                    (这个服会一直留着直到服务器到期为止)


                    IP属地:浙江12楼2023-07-02 14:10
                    回复
                      本来想做一个视频没想到已经有教程了,不错。Nginx或其他web服务器 其实不需要的 只需要wildfly或GlassFish4就行。我当时整合了一下。修复了一下声音,只需要拖到window或linux里命令行启动就行。不过当时用虚拟机 删除了,过段时间录个视频


                      IP属地:浙江13楼2023-07-29 18:54
                      回复