Linuxサーバにアップロードした後
ゲーム名_Dataのフォルダの権限に755を設定
ゲーム名.x86_64の実行ファイルの権限を744に設定
/etc/systemd/system/サービス名.service
Descriptionに簡単な説明を書く
ExecStart に UnityでLinux出力した場所の実行ファイルを指定
Restartは no に設定
[Unit]
Description=Valentine2022
[Service]
ExecStart = /home/Valentine2022/Valentine2022.x86_64
Restart = no
Type = simple
WorkingDirectory=/home/Valentine2022
Environment=HOME=/home/Valentine2022
[Install]
WantedBy=multi-user.target
サービスが落ちた時に自動的に起動するには Restartをalwaysにする
[Unit]
Description=Valentine2022
[Service]
ExecStart = /home/Valentine2022/Valentine2022.x86_64
RestartSec=30s
Restart=always
TimeoutStartSec=0
Type = simple
WorkingDirectory=/home/Valentine2022
Environment=HOME=/home/Valentine2022
[Install]
WantedBy=multi-user.target
サービス開始
systemctl start ゲーム名
サービス再起動
systemctl restart ゲーム名
サービス停止
systemctl stop ゲーム名
サービスの自動起動
systemctl enable ゲーム名
サービスの自動起動を解除
systemctl disable ゲーム名
サービスの状態を確認する
systemctl status ゲーム名
サービスログを確認するコマンド
journalctl -u ゲーム名.service
サービスログを自動更新で確認するコマンド
journalctl -u ゲーム名.service -f
LetsEncryptのフォルダに移動
cd /etc/letsencrypt/live/www.misaki-vanilla.com/
証明書作る
openssl pkcs12 -export -out /etc/letsencrypt/live/www.misaki-vanilla.com/cert.pfx -inkey /etc/letsencrypt/live/www.misaki-vanilla.com/privkey.pem -in /etc/letsencrypt/live/www.misaki-vanilla.com/cert.pem -certfile /etc/letsencrypt/live/www.misaki-vanilla.com/chain.pem -passin pass:"" -passout pass:""
OpenSSL 3.0の場合 -legacyをつける
openssl pkcs12 -legacy -export -out /etc/letsencrypt/live/misaki-vanilla.com/cert.pfx -inkey /etc/letsencrypt/live/misaki-vanilla.com/privkey.pem -in /etc/letsencrypt/live/misaki-vanilla.com/cert.pem -certfile /etc/letsencrypt/live/misaki-vanilla.com/chain.pem -passin pass:"" -passout pass:""
リンクを張る
ln -s /etc/letsencrypt/live/www.misaki-vanilla.com/cert.pfx /home/Valentine2022/cert.pfx
Json形式に変換
echo ‘{“path”:”./cert.pfx”,”password”:””}’ > /home/Valentine2022/cert.json
Let’s Encrypt自動更新
/etc/letsencrypt/renewal/www.misaki-vanilla.com.conf
[renewalparams]の下にrenew_hook = /home/cert.sh をつける key_typeをrsaにする[renewalparams]
renew_hook = /home/cert.sh
account = **************************************
authenticator = webroot
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path = /home/html,
key_type = rsa
[[webroot_map]]
misaki-vanilla.com = /home/html
シェルスクリプト /home/cert.sh 権限は744
#!/bin/bash
openssl pkcs12 -export -out /etc/letsencrypt/live/www.misaki-vanilla.com/cert.pfx -inkey /etc/letsencrypt/live/www.misaki-vanilla.com/privkey.pem -in /etc/letsencrypt/live/www.misaki-vanilla.com/cert.pem -certfile /etc/letsencrypt/live/www.misaki-vanilla.com/chain.pem -passin pass:"" -passout pass:""
systemctl restart valentine2022
sleep 30
/sbin/reboot
WebサイトもSSL更新する場合はこれも追加
cert.sh シェルスクリプトに systemctl restart nginx
letsencryptログの場所
/var/log/letsencrypt/letsencrypt.log
・Kusanagiサーバー
crontab -eで毎日3時7分頃チェックを行っている
07 03 * * * /usr/bin/kusanagi update cert
・古いletsencrypt
手動で実行タイミングを設定する必要がある crontab -e
00 03 * * * certbot renew
・新しいletsencrypt
systemctl list-timersで動いてるタイマーを確認
動いていなかったら
systemctl enable --now certbot-renew.timer
certbot-renew.serviceが時間を管理している
/etc/systemd/system/snap.certbot.renew.timerもしくは
/etc/systemd/system/timers.target.wants/certbot-renew.timerのOnCalendar部分を編集して
下記を実行することで反映
systemctl daemon-reload
systemctl restart snap.certbot.renew.timer もしくは
systemctl restart certbot-renew.timer
メモリが少ないときにHDDから4GBメモリ分を追加する
fallocate -l 4G /swapfile
dd if=/dev/zero of=/swapfile count=1024 bs=4MiB
どちらか。 swaponでエラーする場合は下で生成を行う
fallocate failed:Text file buyというエラーで既にswapfileがある場合swapfile2にする
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sed -i '$ a /swapfile swap swap defaults 0 0' /etc/fstab
確認
free -m
Nginx インストール
yum nginx install
Nginx 有効
systemctl enable nginx
Nginx開始
systemctl start nginx
HTTP通信をHTTPSにリダイレクト
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
HTTPS証明書設定
server {
listen 443 ssl;
server_name _;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EECDH+AES;
ssl_ecdh_curve prime256v1;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_certificate /etc/letsencrypt/live/misaki-vanilla.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/misaki-vanilla.com/privkey.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
ポートフォワーディング
location /game/ {
proxy_pass https://127.0.0.1:8000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
proxy_passでPermission deniedが出る場合
/usr/sbin/setsebool httpd_can_network_connect true
/usr/sbin/setsebool httpd_can_network_relay true
100MBだけ残して削除
sudo journalctl --vacuum-size=100M
1日分だけ残して削除
sudo journalctl --vacuum-time=1days
ログファイルの最大保存を指定する
/etc/systemd/journald.conf
SystemMaxUse=100M
Nginxのサーバーネームにドメインを設定
server {
listen 80;
server_name test.misaki-vanilla.com;
dnf install epel-release
dnf install certbot python3-certbot-nginx
certbot --nginx
古いLet’s Encryptを削除
sudo apt-get remove certbot
sudo dnf remove certbot
sudo yum remove certbot
sudo rm -rf /usr/bin/certbot
認証用にポート80を開放
sudo yum install epel-release
sudo yum install snapd
sudo systemctl enable --now snapd.socket
sudo ln -s /var/lib/snapd/snap /snap
reboot か再接続
少し時間 10秒ぐらいあけてから実行
sudo snap install core
sudo snap refresh core
インストール
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
バージョン確認
sudo certbot --version
証明書発行
/usr/bin/certbot -n certonly --standalone -d ドメイン -m メールアドレス --key-type rsa --agree-tos
Nginxありの場合はこちら
/usr/bin/certbot -n certonly --webroot -w /usr/share/nginx/html -d ドメイン -m メールアドレス --key-type rsa --agree-tos