《异星工厂》は、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 は、物理的な端末を複数のプロセス間でマルチプレクスするためのフルスクリーンウィンドウマネージャーです。
ユーザーは、1 つの 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
- 設定を再読み込みして有効にする
ファイアウォールを再読み込みします。
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": "トークンを設定します。形式は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
即時セーブ#
screen にログインした後、次のコマンドを入力します。
/server-save
セーブが実行されます。
Factorio サーバーの終了#
screen にログインした後、Ctrl + 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