LoginSignup
4
1

More than 3 years have passed since last update.

AIXにGitサーバーを構築した流れ

Last updated at Posted at 2019-10-18

前回の記事であるネット環境のないAIX7.1にGitを導入し使えるようにするまで(YUMを使わずに)の続きです。
Gitをインストールしてから、使えるようにするまでです。(AIXと書いてますが別にubuntuでも他Linuxでも一緒だと思います)

普段はGitHub DesktopとGitHubしか使わないためにGitサーバーという発想は全くありませんでした。
しかしAIXが外に繋げないため、GitHubにpushしたソース類をAIX上でssh等でcloneすることは出来ないので
AIXをGitサーバー化させ、各自作業者のPCからpushして管理する案しか残らないのでした。

やりたいことのイメージ的にはこんな感じ
image.png

どうやるの?って話ですが、gitサーバー構築とかでググると色々でてきますが一応書きます。
参考にさせて頂いた記事
- gitのリモートプライベートリポジトリを公開鍵認証を使って環境構築する

git-daemonを使用するのもアリだったのですがもう疲れていたのでまだちょっと知ってるssh接続を前提とします。

ssh接続の設定(クライアント側)

まずは、各自ユーザーがssh公開鍵を作成しないとだめです。
詳細は、Git/GitHub公式のHow Toがあります。
- Connecting to GitHub with SSH
- Git サーバー - SSH 公開鍵の作成

自身はMac OSを前提として書きます。 (Windowsの場合はまずGitをインストールし、GitBash上で下記コマンドの入力をお願いします)

  • 自身が公開鍵を持っているか確認する
.ssh $ cd
~ $ cd ~/.ssh
.ssh $ ls
config      id_rsa      id_rsa.pub  known_hosts
  • 無い場合は、下記コマンドを行う
$ mkdir .ssh
$ cd .ssh
.ssh $ ssh-keygen

実行場所は、Macなら/Users/xxxx/.ssh
WindowsならC/Users/xxxx/.ssh
xxxxは自分の名前。

鍵の保存先を求められるので、.ssh/id_rsaを指定する

パスフレーズも求められるが、それはEnterを押してとりあえず無で良い。

ここまで出来たら、上記のようにid_rsaid_rsa.pubが作成されているはず。
id_rsaは秘密鍵で、id_rsa.pubは公開鍵となります。
id_rsa.pubの内容をcatなどで確認しておく。

ssh接続の設定(サーバー側)

公式ではgitというユーザーを作成し、そのユーザーがgitレポジトリをアクセスできるようにしているので、
それを前提とします。

まず、下記を行います。(.sshディレクトリが無い場合)

$ mkdir /home/git/.ssh

適当にtmpディレクトリ等を/home/gitに作成します。

$ mkdir tmp

先ほどのid_rsa.pub/home/git/tmpに置きます。(FTPなどで)

authorized_keysを作成します

$ touch /home/git/.ssh/authorized_keys

authorized_keysに公開鍵の内容を書き込みます。

cat id_rsa.pub >> /home/git/.ssh/authorized_keys

上記のid_rsa.pubをサーバーに置く、authorized_keysに内容を書き込む、はメンバー分行う必要があります。
すなわち、サーバー側の作業として、セットアップを行う各メンバーも上記作業だけは行なってください。

でないと、もちろんなんですがローカルPCからgit pullを行う際に権限ないよ、って言われます。

ベアレポジトリの作成

次にベアレポジトリと呼ばれるGitの更新情報等だけを保持するディレクトリを作成します。
ベアレポジトリとノンベアレポジトリについては下記記事がわかりやすかったです。
gitのベアリポジトリとノンベアリポジトリ

これもサーバー側とクライアント側の作業があります

  • サーバー側
$ cd work
$ mkdir work.git
$ cd work.git
$ git init --bare --shared

work.gitのディレクトリを作成することにより、gitにここはリモートレポジトリですよと教えてあげます。
そしてgit init --bareオプションにより、ベアレポジトリを新規に作成してもらいます
複数人で作業をする場合は、--sharedオプションが必要です

  • クライアント側
$ mkdir work
work $ cd work
work $ echo "Hi this is local" > a.txt

work $ git init
work $ git add .
work $ git commit -m 'first commit'

クライアント側はベアレポジトリを作成というよりかは、
作業ディレクトリ(ノンベアレポジトリ)をポイントするようなイメージです。

クライアントPCからレモートレポジトリにpushする

再度クライアントに戻り、

work $ git remote add origin ssh://git@server_hostname:/home/git/work/work.git

上記により、gitというユーザーで指定されたサーバーのベアレポジトリにpushせよ!という指示します。

work $ git remote -v
origin  ssh://git@server_hostname:/home/git/work/work.git (fetch)
origin  ssh://git@server_hostname:/home/git/work/work.git (push)

こんな感じになっていればOKです。もし間違えていたら、git remote rm originで削除してもう一回やりましょう

あとはpushするのみ!

work $ git push origin master

サーバー側で、git logをしてみましょう。現在のコミットが表示されているはずです。

ここで、いやいやpushしたファイルはサーバー上のどこにあんの!?となりました。
確かにwork.gitをlsしても

work.git> $ ls
HEAD         branches     config       description  hooks        info         objects      refs

こんなのしかない。

実際にpushされたファイルは、
XXX.gitではないディレクトリで

 git clone work.git

を行うことで見れます。

とりあえずこんな感じです。
上記のcloneレポジトリはこのままだと毎回 git pullを行わないと各ローカルPCからのpushが反映されないため、下記設定を行う必要があります。
git pullを自動で行う

Pushエラーがでた場合

基本的に、上記git add .git commitの流れはサーバー側にソースがないことを前提にしている気がする。
もしサーバー上で何かしら変更があった場合、自身で適当に作ったa.txtのpushが失敗します。
なのでとりあえず通信確認を行いたい場合は

git pull origin master

git remoteで登録した後に行えばよいです。

GitHub Desktopと連携する

追記
ここまでのセットアップが完了し、個人のPCからサーバーにgitコマンドが不自由なくできている場合。
GitHub Desktopでも連携が可能でした。
*少々画像を修正していますのでご了承ください

  1. 左上のrepository選択画面で、Addをクリックし"Add Existing Repository"を選択します。
    image.png

  2. 下記画面に遷移するので、ローカルに作成した作業レポジトリpathをポイントします。
    image.png

  3. 基本これだけです。一応確認のためにAddしたレポジトリを選択している状態で、Repository -> Repository Settingsを選択します。
    image.png
    image.png
    上記のようになっていれば普通に作業ができるはずです。

4
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
4
1