Zimri

Zimri - xlog

生活就像海洋 🌊
github

Centos 建立 Factorio 伺服器

《異星工廠》是由 slpwnd 製作發行的一款模擬經營類作品,在遊戲中玩家的飛船墜落的在了異星球,在玩家需要利用星球上的資源生存下來並建立一個工廠。
收集資源,升級自己的設備,建設基礎設施,讓生產自動化,並打敗你的敵人

環境準備:Centos7.x
系統更新、國內伺服器更換阿里雲源 境外伺服器直接更新系統即可

一、系統更新 更換源#

首先備份原來的源,以防不可預測的錯誤能有恢復的餘地

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
導入阿里雲 Centos7 源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
添加 EPEL

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

curl -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

清除 YUM 快取

yum clean all
快取阿里雲源

yum makecache
至此已經成功更換,可以更新系統(非必要,時間較久)

yum -y update
如更新了系統記得重啟

二、Centos glibc-2.18 環境編譯#

安裝 gcc 與 wget

yum install gcc -y
yum install wget -y

下載 glibc-2.18.tar.gz

wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz

私有加速地址 (國內)

wget https://webstation.zimri.online/share/Game/factorio/server/glibc-2.18.tar.gz

解壓並進入到 glibc-2.18

tar -xvf glibc-2.18.tar.gz
cd glibc-2.18

創建 build 文件夾

mkdir build

cd build

編譯

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make -j4

make install

ldd --version

三、screen 安裝#

Screen 是一個可以在多個進程之間多路復用一個物理終端的全屏窗口管理器。

用戶可以在一個 screen 會話中創建多個 screen 子會話,在每一個 screen 會話(或子會話)中就像操作一個真實的 telnet/SSH 連接窗口

yum install screen -y

四、防火牆例外#

默認 CentOS7 使用的防火牆 firewalld

查看防火牆狀態

firewall-cmd --state 
或者
systemctl status firewalld

返回success代表已開啟
如果關閉狀態以下步驟可以不執行 也可以自行選擇是否繼續,默認是為了安全我們打開防火牆

狀態關閉,需要啟動防火牆

systemctl start firewalld

開機啟用

systemctl enable firewalld

開放 factorio 指定端口

firewall-cmd --zone=public --add-port=34197/udp --permanent

當然 ssh 端口以防萬一 也加上

sudo firewall-cmd --zone=public --permanent --add-service=ssh

3、重新載入,使配置生效
重載一下防火牆

sudo firewall-cmd --reload

五、Factorio 伺服器準備#

1. 下載程式 最新版 或按需#

cd ~
wget https://www.factorio.com/get-download/0.17.79/headless/linux64

2. 私有加速地址 (國內)#

wget https://webstation.zimri.online/share/Game/factorio/server/0.17.79/linux64

3. 解壓壓縮包#

tar -xvf linux64

4. 推薦將項目移動到 /opt 目錄下#

mv -f /root/factorio /opt/factorio

5. 編輯配置文件#

進入 /opt/factorio/data 文件夾,編輯 server-settings.example.json 文件

cd /opt/factorio/data
cp server-settings.example.json server-settings.json

必要的一些設置

"name": "[CN]伺服器名字",
  "description": "伺服器描述",
  "username": "factorio官網註冊的賬戶",
  "password": "factorio密碼",
  "token": "設置token 格式類似b50704b226ab50704b226ab50704b226a",
  ...

6. 生成地圖 *#

第一次建立伺服器 無論有沒有地圖 都需要執行一下 生成地圖命令 才能正確加載

cd /opt/factorio
./bin/x64/factorio --create ./saves/test1.zip

7. 開服#

因為 Factorio SSH 命令獨佔 所以使用之前安裝 screen 命令 來達到後台運行

screen -S factorio

指定地圖命令開服

/opt/factorio/bin/x64/factorio --config /opt/factorio/config/config.ini --port 34197 --start-server /opt/factorio/saves/test1.zip --server-settings /opt/factorio/data/server-settings.json

以 saves 文件內最新地圖存檔開服命令

/opt/factorio/bin/x64/factorio --start-server-load-latest --server-settings /opt/factorio/data/server-settings.json

然後直接退出 SSH 窗口即可

8. 管理命令#

登錄伺服器#

連接 SSH 後
顯示後台執行的 ssh 命令行

screen -ls

輸出

There is a screen on:
        1051.factorio_auto      (Attached)
1 Socket in /var/run/screen/S-root.

連接進去 screen 輸出前面有進程 ID 可以直接使用 ID 登錄(ID 是動態的)

screen -r 1051

立即存檔#

登錄進 sceen 後 直接輸入

/server-save

即可存檔

退出 factorio 伺服器#

登錄進 sceen 後 直接按 Centr + C
伺服器關閉

六、開機自啟動#

因為 Factorio SSH 命令獨佔 開機啟動命令選用 screen 帶 saves 文件內最新地圖存檔開服命令

建立開機腳本

cd /opt/factorio
mkdir start
cd start
touch screen.sh
vi screen.sh

INSERT 內容如下

screen_name="factorio_auto"
screen -dmS $screen_name

cmd="/opt/factorio/start/factorio-run.sh";
screen -x -S $screen_name -p 0 -X stuff "$cmd"
screen -x -S $screen_name -p 0 -X stuff '\n'

輸入保存

touch factorio-run.sh
vi screen.sh

INSERT 內容如下

/opt/factorio/bin/x64/factorio --start-server-load-latest --server-settings /opt/factorio/data/server-settings.json

輸入保存

授予執行權限

chmod +x factorio-run.sh
chmod +x screen.sh

編輯 rc.local 最後一行加入上面建立的腳本

vi /etc/rc.d/rc.local
... ...
/opt/factorio/start/screen.sh

授予執行權限

chmod +x /etc/rc.d/rc.local
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。