1
1

【isucon】EC2上にあるprivate-isuのソースコードをGit管理する

Last updated at Posted at 2024-09-22

はじめに

private-isuの付録を解く際に、EC2のサーバ上で操作やファイル編集をしていたんですが、差分の確認や何ページまで進めたのか把握が難しかったり、ちょっとしたタイポやインデントミスも起きやすくて、大変でした。
ISUCON当日もサーバ上で作業するのではなく、ローカルで編集→サーバ内でpullして反映という流れが一般的なこと、学習面でもログを見返せたり、便利だと思い、Git管理する方法を調べて実現してみました。その過程をメモとして残したいと思います。

ちなみに、private-isuの付録っていうのは、以下の書籍の内容になります。

そして、Git管理の方法は以下の記事を参考にしました:


① private-isuの環境構築

この記事では、すでに環境構築が終わっている前提で、Git管理の方法に絞って説明していきます。
もし、環境構築がわからない方は、下記の記事がとてもわかりやすいので参考にしてください!


② サーバからGitHubにアクセスするために、公開鍵と秘密鍵を作る

キーファイルを置く.sshディレクトリに移動

private-isu(iscogram)のサーバ内には、すでに.sshディレクトリがあるので、まずはそこに移動します。

$ cd ~/.ssh

注意点
デフォルトだとパーミッションの問題で、コマンド実行やディレクトリの移動ができないかもしれません。
この場合は、スーパーユーザ(管理者権限)に切り替えるか、ログインユーザに権限を付与する必要があります。

スーパーユーザに切り替える方法

$ sudo -s

sshディレクトリのパーミッション(権限)を設定

$ chmod 744 ~/.ssh/

権限が正しく反映されているか確認:

drwxr--r--  2 root root 4096 Jun  2 14:00 .ssh

公開鍵と秘密鍵の作成

.sshディレクトリ直下で、次のコマンドを実行します。

$ ssh-keygen -t ed25519
  • ssh-keygen: SSHキーの生成や管理を行うコマンド
  • -t: 鍵の種類(アルゴリズム)を指定
  • ed25519: EdDSAという公開鍵アルゴリズム

configファイルにGitHubのSSH設定を追加

$ cat >> ~/.ssh/config <<EOL
Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_ed25519
  User git
EOL
  • cat:ファイルの内容表示、データを追加するためのコマンド

  • >> :追記するためのリダイレクトオペレータ、指定したファイルの末尾にデータを追加する

  • <<[任意の文字列]:ヒアドキュメントというシェルの機能。指定した文字列が現れるまでの行をファイルに追記する。今回はEOL(エンドマーカー)が現れるまで、入力されたテキストを追加するという意味になる

  • Host:コマンド実行時に指定する短縮名やエイリアスを指定[任意の名前を設定できる]今回は実際のホスト名と同一のgithub.comを指定

  • HostName: 実際に接続するサーバーのホスト名や IP アドレスを指定

  • IdentityFile:SSH 接続に使用するファイルパスを指定

  • User:SSH で接続する際のユーザ名。GitHub ではgitを使用する

configファイルのパーミッションを変更

$ chmod 644 config

設定ファイルなので、実行権限は不要です。なので読み取りと書き込みだけ付与します。


③ GitHubにリポジトリを作成し、公開鍵を登録して認証できるようにする

この手順は、こちらの記事を参考にしてください:

GitHubリポジトリ作成&公開鍵登録手順


④ GitHubにアップロードする

どこまでを対象にするか迷ったのですが、とりあえず設定ファイルや各言語のソースがあるprivate_isu配下のソースをアップロードしていきたいと思います。(多分本当は使用する言語のソースとかに絞った方が良いのかもしれない)

対象ディレクトリ: /home/isucon/private_isu/
巨大なバイナリが含まれるappなどはアップロード対象から外したいと思います。

.gitignoreの編集

$ echo "app" >> .gitignore

Gitリポジトリを作成

$ git init

この状態でgit addgit statusを実行しようとしたら、以下のエラーが発生。

fatal: detected dubious ownership in repository at '/home/isucon/private_isu'
To add an exception for this directory, call:
git config --global --add safe.directory /home/isucon/private_isu

所有者が異なる、みたいなことが記載されています。
おそらく、ディレクトリの所有者がisuconユーザなのに、rootユーザで操作しているからなのかな?
ログインユーザをisuconに変えても同様に出たので
ログの指示通りに、次のコマンドを実行して、安全なディレクトリとして設定することにしました。
ちゃんとした原因は後日調べたいですね。

$ git config --global --add safe.directory /home/isucon/private_isu

無事設定できたので、コミットします。

$ git commit -m "init"

ブランチ名をmainに変更

デフォルトでブランチ名がmasterになっていたので変えます

$ git branch -M main

リモートリポジトリと連携(originの部分は置き換えてください)

$ git remote add origin git@github.com:hoge/private-isu.git

リモートにプッシュ

$ git push -u origin main

ローカルにクローン

リモートのリポジトリを見て、反映されているのを確認したらローカルにクローンして完了です!


まとめ

以上で、Git管理によってローカルで作業できるようになりました!
好きなエディタも使えるし、差分も見やすいし、かなり作業が楽になりそうです!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1