VPS

Gitの共有レポジトリをCentOS 6なさくらVPSに作ってみた話

どうもこんにちは、体調を崩しており結構きついりっくんです。大体体調をくずすとBlogを書くみたいな悪しき習慣ができつつありますが、そこはまぁほっといて本題に入ろうかと思います。

これまでは基本一人でコードを書いて、それを他人に見てもらうくらいだったのでなんとかなっていたのですが、最近はコードを共有する必要がでてきて非常にめんどくさいなぁと思っていたところでした。よくよく考えれば、Gitって便利なものがあるじゃないか、ちょっと勉強しようってことで、さくらVPSにGitの共有レポジトリを作った話を書いてきます。

※あとから書いたので間違えてる可能性があります、自己責任でお願いします。

Git-Logo-1788C

VPS側

VPS側でやることは

  • gitのインストール(さくらのCentOSにははじめから入ってましたが、ソースから最新版を入れました。)
  • git用ユーザーを作る(必要あれば
  • git用グループを作る
  • git用のディレクトリを作る。
  • ディレクトリをgit用グループの所有に

って感じで進めました。

useradd git #ユーザーを作る
groupadd gitgroup #グループを作る
usermod -G gitgroup git#ユーザーをグループに追加
#複数のグループに入れる場合は
#usermod -G wheel,gitgroup git
#のように指定する。
mkdir /var/git
mkdir /var/git/testrepo.git #レポジトリ用ディレクトリを作る
cd /var/git/testrepo.git
git init --bare --shared=group #共有レポジトリ用にgitの初期化
chgrp -R gitgroup testrepo.git #testrepo.gitの管理グループをさっき作ったgitgroupへ

多少コマンド間違えてるまである・・・

ひとまず鯖側はこんな感じ。あと、このgitってユーザーも、自分の場合は秘密鍵認証でログインしたので、公開鍵の方を/home/git/.ssh内にauthorized_keysという名前で設置してあります。その辺はまぁ各自で。

クライアント側

私はMacから。

cd /Applications/MAMP/htdocs #MAMPのWeb用ディレクトリで開発するとして
git clone ssh://git@ADDRESS:PORT/var/git/testrepo.git #SSHで接続該当ディレクトリから持ってくる
cd testrepo.git

多分こんな感じでいけます。

ちゃんとグループの権限を与えてあげないとアップできなかったりになるので気をつけないといけないなぁと(詰まりまくった)
慣れてはいないけど、これ慣れたら多分少しは楽になるだろう。自然と使えるようになればなぁ。

CyberduckのIllegal sftp packet lenエラー対処法

どうも雨が降るはずだったのに降られなくて、荷物が増えたことに怒りが集中しておりますりっくんですこんにちは。今回はメモ、わんちゃん同じようなミスする人いると思うので。

cyberduck

エラーで接続できない!!

VPSにはSSHで接続しています。そこでCyberduckを使ったSftp接続を行おうとした時、タイトルのエラーがでました。まず公式にそれについてのQ&Aが存在します。

help/en/howto/sftp – Cyberduck

Illegal sftp packet len

The error message Illegal sftp packet len may indicate you have either:

  • An echo statement in your shell init script like .bashrc. Make sure it does not output any text.
  • Interoperability issue with Globalscape EFT Server. Issue #5308.
  • Enable ssh access on your server. Use the sftp command in a terminal to verify sftp username@domain_name. It’ll ask for your password. If you don’t have ssh access, you’ll get “Received message too long”, hence the error msg in Cyberduck.

この内、私のエラーは1個目の・です。
サーバー側の.bashrcに書かれていたものが、何かしらコンソールに出力するようなものになっていて、それをCyberduckが受け取っちゃってエラーになってたようです。ちょっと私のそもそもの理解度が低いのでよくわからないかもしれないですが・・・。

自分の場合はNode.jsを動かすために書いておいたnvm use v0.xx.xが勝手にコンソールに出力していたのが問題。

余談ですが、nvmは0.6以降のバージョンではデフォルトのバージョンを設定できるようになっているんですって、そんなこと知らずに書いちゃったのが行けなかったんだ・・・(‘A`)

nvm alias default v0.xx.x

 と、一度やっておけばOK。.bashrcにわざわざnvm use v0.xx.xと書く必要はないということ・・・(‘A`)

気をつけようね!!!