gitサーバーを設置
投稿:2023-08-08、更新:2023-08-11
2023-08-11 ログインシェルの置き換えとコンソールでの操作を記述しました。これまでは、隣のディレクトリにpushするような最も簡素な形式でgitを使っていました。 ほとんど、コードのバックアップ目的です(笑)。
色々と調べて試してみると、なんてことはない話でした。 必要最小限の条件です。
- 普通(?)のVPS
- root権限
- sshログイン
- gitが使える
gitについてはこちらのサイトを参考にしました。
Git - プロトコル
このページのタイトルから「サーバー」が抜けていて、内容はサーバーについて書かれています。
作業中に打ち込むコマンドは必要な都度、検索して調べていきます。
gitユーザー
VPSの中でgit操作をするアカウントを1個作ります。 「私しか使わないので1個」というよりもVPS内の操作を1個のアカウントが全部やる感じです。 パスワードの設定はおそらく不要です。 アカウントを作るコマンドがadduserとuseraddのどちらかで挙動が変わるかもしれません。 参考にしたサイトと「アカウントを作る」で検索したブログで違ってました。
ssh
上記のgitユーザーにsshログインできるようにサーバー側を準備します。 はじめに自宅PCに鍵のセット(秘密鍵~/.ssh/id_rsaと公開鍵~/.ssh/id_rsa.pub)を作ります。 つぎに公開鍵をgitユーザーの~/.ssh/authorized_keysというファイルを作って入れます。 authorized_keysに他の公開鍵を追記すればそのPCや人も使えるようです(未確認)。
保管ディレクトリ
コードを保管するディレクトリを用意して初期化します。 場所はgitユーザーの下で構わないハズです。 ウチのVPSではアップスケールした際に追加のパーティションを貰いました。 そこへ出せるものはそっちに出しておくと容量の面で都合が良いです。 そこでgitユーザーが読み書きできるディレクトリを別パーティションに用意、gitで初期化しました。
# ルート権限で cd <追加パーティション> mkdir git_space chown git:git git_space # gitアカウントで cd <追加パーティション>/git_space mkdir my_project.git cd my_project.git git init
ログインシェル
特に複数人向けと思いますが、sshで普通にログインできると都合が悪いケースもあります。 そういう場合のためのgit専用シェルがあるのでログインシェルを置き換えます。 私もgitアカウントでログインする気はないので置き換えますが、準備中のトラブル対応はgitアカウントでログインすると操作が楽です。 上手い事gitが使えるのを確認してから置き換えました。
# git-shellの場所を調べる whereis git-shell # こんなのが返る→ git-shell: /usr/bin/git-shell /usr/share/man/man1/git-shell.1.gz # 場所が/usr/bin/git-shellと分かる # 末尾に「/usr/bin/git-shell」を追加 sudo vim /etc/shells # gitアカウントのログインシェル(右端の項目)を/usr/bin/git-shellに書き替え # git:x:<ユーザーID>:<グループID>::/home/git:/usr/bin/git-shell sudo vim /etc/passwd
ssh
自宅PCからsshでログインできるようにします。 sshの設定を~/.ssh/configに書きます。 ウチのVPSはsshのポート番号を22番から変更していますのでポート番号も指定します。
Host <ホスト名>
HostName <ドメイン>
User git
IdentityFile "~/.ssh/id_rsa"
Port <ポート番号>
ServerAliveInterval 60
ssh <ホスト名>
gitの設定
私がgitに慣れていないため、コードを大規模修正する度にファイル名がslot.py、slot_1.py、slot_2.py…と変わっていき、そこで初めて「ああ、最初からgitで管理しときゃ良かったよorz」となるのが常です。 大体飽きてしまうからそこまでコードを書き直すことが希です(笑)。 git入門的なサイトを拝見するとリポジトリをpullして開始みたいに書いてありますが、後手後手なもんでpushで始めます(笑)。 URLの頭をssh://で始めることで~/.ssh/configを参照、ホスト名からドメイン、アカウント、秘密鍵のファイル名、ポート番号を見つけてくれます。 それとgitコマンドが色々と抜けていますから他のブログ等を見てください。
# PCのコンソールから cd <プロジェクトのディレクトリ> git init git remote add origin ssh://<ホスト名>/<追加パーティション>/git_space/my_project.git # .gitignoreを作り管理しないファイルやディレクトリを指定 vim .gitignore git push --set-upstream origin master git add --update git commit --message 初期ファイル git push