Skip to content

Server Operations

bianchiidentity edited this page Oct 10, 2026 · 2 revisions

サーバー運用

接続URL・Home · 初期状態と復旧 · 計測記録

作業場所と稼働場所

用途 パス
作業リポジトリ /home/isucon/isucon12
Wikiのローカルクローン /home/isucon/isucon12-wiki
稼働中のアプリ /home/isucon/webapp/go
配信中の静的ファイル /home/isucon/public
ベンチマーカー /home/isucon/bench
不変の初期SQLite /home/isucon/initial_data
稼働中のテナントSQLite /home/isucon/webapp/tenant_db
ベンチ結果 /home/isucon/bench-results
pproteinバイナリ /home/isucon/tools/pprotein/bin
pproteinの収集データ /home/isucon/tools/pprotein/runtime/data

作業リポジトリのコードを変更・pullするだけでは、稼働中のアプリに反映されない。 systemdのWorkingDirectoryは /home/isucon/webapp/go、ExecStartはその配下の isuports。

サービス

サービス 内容
isuports Goアプリ。API・初期化処理
blackauth ブラウザー認証のJWT発行
nginx TLS終端、静的配信、アプリと認証への転送
mysql 管理DB isuports
redis-server サーバーに導入済みのRedis
pprotein 計測ダッシュボード
pprotein-agent nginx / MySQLログの収集

取得時はすべてenabled / active。Redisが導入済みであることは、現行アプリが利用していることを意味しない。

systemctl is-active isuports blackauth nginx mysql redis-server pprotein pprotein-agent
sudo journalctl -u isuports -n 100 --no-pager
sudo journalctl -u pprotein -u pprotein-agent -n 100 --no-pager
sudo nginx -t

nginx設定は検査が成功してから sudo systemctl reload nginx で反映する。 systemdユニットを変更した場合はdaemon-reload後、対象サービスを再起動する。 MySQLを再起動した場合、isuportsはMySQLへの依存があるため、アプリの起動状態も確認する。

Goのビルド

このサーバーの通常のPATHにはGoがなく、既存のDockerイメージ golang:1.18.4-bullseye を使用している。

cd /home/isucon/isucon12/webapp/go
docker run --rm --network host \
  -v "$PWD":/app -w /app golang:1.18.4-bullseye \
  go build -o isuports ./cmd/isuports/main.go

これはビルドのみ。稼働パスへの配置と isuports 再起動は別に行う。 稼働側の既存 rebuild.sh は /home/isucon/webapp/go のソースをビルドして再起動するため、 作業リポジトリの変更を自動で取り込むものではない。

GitHub用の専用鍵

専用鍵は ~/.ssh/id_ed25519_github_isucon、専用設定は ~/.ssh/config_github_isucon。 秘密鍵の内容はWikiにもGitにも保存しない。

作業リポジトリは core.sshCommand に専用SSH設定を指定済み。 WikiのGit操作にも同じ専用設定を使う。

cd /home/isucon/isucon12
git pull --ff-only

cd /home/isucon/isucon12-wiki
git -c core.sshCommand='ssh -F /home/isucon/.ssh/config_github_isucon' pull --ff-only

Clone this wiki locally