從0開始重新建站的慘案part1——Foundry VTT引起的慘案

發佈於 2020-05-17  274 次阅读


 

背景交代:

唉...這段時間和朋友跑團,原本都是用的roll20

但是事情發生了變化——大家都考完final了,有的成功(歐洲)人士機票沒有被取消已經收拾好東西準備回國了。

Roll20在國內並不能直連使用,不是所有人都願意...額應該說,梯子這個東西並不是所有人都能熟練駕馭的wwww

而且主要是我們的DM要回國——誰願意回國不能用了還繼續給Roll20交錢呢是不是?

所以是時候找一個替代品了,然後我們的DM找到了Foundry VTT這個東西(後文簡稱FVTT),他....可以說就是一個Roll20的威力加強版。和roll20一樣是打開瀏覽器就可以玩,但他的光影特效實時地圖還有天氣系統等等實在太精緻了,簡直就是我們心目中的那個DND世界。

雖然這個東西其實是要給開發者捐贈支持的,但是為一款這樣的DND SERVER捐贈那不是天經地義的事兒嗎?!

 

就像上面所交代的那樣,我們被這個FVTT徹底吸引住了,如果你沒有辦法感受到他是多麼精緻的一款跑團遊戲,這裡是官網的demo鏈接 ,你可以從DM還有兩個角色的角度去參與進這個demo(AccessKey都是foundry)。能直接在畫面上表現出光源和場景遮蔽還有互動的DND平台可一點也不多見,討論了一下,不如直接掏出我的伺服器開幹吧!

一、準備工作

因為是要架設Server,所以對於我而言當然是CentOS/Debian/Ubuntu這幾個我相對而言比較熟悉的系統了。

當然,雖然我應該不會選擇用windows server作為server端,我還是大概的看了一下。Windows下的程序,我記得沒錯的話是直接Electron封裝好的app,那Linux下面的話則直接是一個node.js的app——雖然說Electron其實就是node.js和Chromium打包在一起的東西本質上沒什麼不同www。

這裡很果斷的選擇Linux作為server端了,第一是本身系統的佔用就比較小,我不太需要一個比較強的VPS就能達到很好的效果;第二是,新開的vps不需要交Win Server的授權費,這樣子每個月就便宜很多很多了。

最後就決定使用Linux系來作為server了,因為之前都是用的centOS比較多,想著好像沒用過幾次Ubuntu Server(雖然我自己家裡電腦裝Linux基本上是ubuntu或是elementaryOS,因為好看)所以這次就採用了Ubuntu 20.04LTS作為server的OS,你問我為什麼選擇20.04而不是18.04...嘗嘗鮮嘛!

因為是會跑node.js的app,所以想了想這次的vps配置選擇了2 vCPU,4G RAM,10G Storage的主機。雖然感覺好像有點浪費......

總體的思路是部署好環境,使用pm2來開機自動運行FVTT,最後再用Nginx做一個反向代理(雖然說是可以直接把FVTT運行在80端口下沒有錯,但是為了“順便”搭個梯子我還是更傾向於使用Nginx簡單的做一個反向代理)

二、工具準備

這次用的vps性能上比較好一點,而我最近正在翻譯視頻做字幕沒有太多時間去自己幹活(其實就是懶),所以用了最懶人的方法——我裝了寶塔()

寶塔其實是一個挺好用的後端管理工具來著,對於初學者來說也很好駕馭——對懶人十分友好的工具wwww

所以剩下我們只需要準備幾個東西了:node.js,pm2,fvtt的zip文件(如果你是官網購買的,請直接在你的profile裡找到node.js版的zip包下載)

三、擼起袖子開幹吧!

寶塔面板安裝和設置

SSH連接上VPS以後,首先我們來安裝一下寶塔面板

Debian/Ubuntu用戶是這個指令:

CentOS用戶的話則是下面這個指令:

安裝好寶塔面板跟著提示用他隨機生成的賬號密碼去訪問後台(記得自己去設置頁面改入口還有用戶名密碼啊,隨機生成的入口反正我記不住www)

進入面板後他會提示你安裝lnmp或是lamp,因為這是一個為網頁服務器設計的後台管理面板來著,這裡我們根據需求選擇就好。對我而言是lnmp,版本我使用的是nginx1.17/MySQL5.7/php7.2 ,至於phpMyAdmin和ftp我都是選用他默認的版本。

這個安裝會持續一段比較長的時間,視你的機器配置可能會持續數十分鐘到數小時都有可能(我的話花費了大約30分鐘左右)

在這個過程中你可以選擇先下載好你的FVTT壓縮包並把它上傳到Server——對了,這裡直接用寶塔面板的文件管理上傳文件的話會比較方便,而且速度上也比Google的SSH Console上傳速度快一些。

安裝完成以後我們就可以進行下一步了!

安裝node.js和部署遊戲

這裡的話,因為其實node.js的版本差異挺大的,比較建議在安裝的時候看製作者推薦使用的版本,我使用的是node.js 12.x的版本。

等他跑完以後我們就已經可以運行fvtt程序了,所以現在我們開始進行遊戲的預先設置吧!

首先是在你使用的用戶的home目錄下建立兩個資料夾 foundry 以及 foundrydata。這兩個資料夾一個是用來存放遊戲本體的,一個是用來存放配置文件還有後期的add-on啊data什麼的。這裡我們可以直接用寶塔的文件管理建立這兩個資料夾,權限建立為777。當然也可以直接用指令完成——就一個mkdir而已,還是用命令來的比較快吧!

首先我們先跳到home

cd ~

然後就可以開始mkdir了

mkdir foundry

mkdir foundrydata

建立好這兩個資料夾以後,如果是從官網下載並上傳到Server的,把你傳上去的zip資料檔移動到foundry目錄,並解壓他unzip foundryvtt-x.x.zip,或是用寶塔的文件管理界面去解壓也可以,怎麼方便怎麼來。

如果是通過Patreon獲取指令鏈接的,請直接移動到foundry資料夾並執行你獲取的指令,他長得應該是像這個樣子的:

後面的操作官網License和Patreon用戶是一致的,也是unzip到這個foundry資料夾

記得刪掉zip壓縮檔www,當然你要是懶得省硬碟空間也是可以留在那裡不刪就是啦... ...

然後我們就來試著執行一次程式咯!(現在我們的位置是在foundry目錄下)

然後我們看到像下面一樣的界面就說明程序正常運行了,此時我們就已經可以通過IP加端口或是主機名+端口號(如果你有綁定域名的話)訪問fvtt後台了。程序默認運行在30000端口,如果需要修改運行端口可以在foundrydata/Config下找到option.json進行修改。

其實如果只是為了玩到的話,做到這一步就已經可以正常遊玩了,但是每次開機都得手動輸入node resources/app/main.js命令開啟有點麻煩(雖然只有第一次運行需要加--dataPath=$HOME/foundrydata設置data的路徑,但還是很麻煩)

而且還有個端口號在那裡怎麼看都不舒服(雖然如果改成80端口就可以不用輸入端口號,但還是用nginx吧)

而且還一直會佔用住前台很不爽啊...

所以pm2的用處這就來了。pm2是一個很方便的node.js的管理工具,可以簡單的管理計算機裡的node程序,而且還能開機自啟在pm2 list裡面的程序。

好,那現在先按ctrl+c結束程序的運行,開始安裝pm2!

 

安裝pm2並設置開機自啟

這個部分其實沒什麼好說的,我覺得這個部分應該是整個文章中最簡單的part了

嗯,等他跑完就安裝好了,安裝完成可以用 pm2 --version 指令查看當前安裝的pm2版本,確認是否正確的安裝上了。

嗯...然後就沒了。

執行pm2 startup 命令,在他跑完一大串以後應該會在末尾給出一行命令,把那條命令複製下來執行,pm2就會在開機的時候自動啟動了。

 

使用pm2執行fvtt程序

這裡基本也就是一句話的事兒,執行命令

這裡的--name是pm2的option,也就是說你把這個程序現在加了一個別名叫“foundry”,在pm2的list裡面以後他會顯示為foundry,而且執行的時候也是直接敲pm2 start foundry就可以運行程序了。

此時我們的程序就已經用pm2運行了,可以在list裡面看到現在正在用pm2運行的程序,如果輸入pm2 stop+list裡對應的程序名就可以終止該程序的進程,比如我們要停止運行fvtt,只需要敲pm2 stop foundry就可以了。

因為前面已經設置好了pm2的自啟,所以運行過後理論上重啟電腦他也會自動啟動fvtt,這裡你們可以重啟嘗試一下。反正我這裡是已經能工正常自啟動了。

下一步就是進行nginx的配置了!

 

配置nginx

這裡,我人懶,所以直接在寶塔裡面找到nginx並點到配置修改標籤直接改。

在include前面我們加入這樣幾行字

到這裡我們就大功告成啦!只需要輸入你的域名,我們就可以直接連入你的FVTT程序了!

那我說的慘案又是怎麼回事呢?

說起來挺不好意思的,我本來想加SSL結果一不小心整個FVTT崩了,沒辦法訪問了,改了配置文件以後直接執行FVTT沒有出現問題,能夠正常的通過域名訪問到FVTT,但是一換成pm2就沒辦法直接訪問到...

萬念俱灰下我決定乾脆刪掉重來——因為我發現這玩意兒是有docker的!!!!!!我直接用docker不就好了?!還省得這麼麻煩了!

然後!!!我就刪錯了!!!!!!我把本站所在的那個vps刪掉了!!!!!!

然後我上一次備份是去年的十一月.......................好吧,結果又得重新來了..........連著我這幾個月發的sp永世皆感想啊什麼的全部都沒了...

沒了..........

嗯,這就是事情的開端了...

 

Spread the love

公交車司機終於在眾人的指責中將座位讓給了老太太