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
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。