こんにちは!
寒くなったり暖かったり、なんだか不安定な気温が続いてますね(´・ω・`)
今、働いている会社で、サーバー上にgitリポジトリを作成して、post-receiveでサイト運営をしており、すごく楽ちんだったので、さくらレンタルサーバーでもできるかなぁ、と、試行錯誤した備忘録的なものです。
思いの外、設定がうまくいかず、1日中しっくはっくしてしまったので、忘れないようにφ(. . )メモメモ
環境
ローカル
MacBook Pro (Retina, 13-inch, Late 2013)
macOS Sierra Version 10.12.6
Gitバージョン:2.16.2
サーバー
さくらレンタルサーバー:スタンダード
Gitバージョン:2.7.0
ssh公開鍵の作成
サーバーへssh接続する際に、パスワードを聞かれる状態だとgit pushした際にパスワードエラーが起きてうまく走ってくれなかったので、まずはssh example.comですんなり接続できるようにします。
参考サイト
こちらのサイトを参考に、まとめたものになります。
秘密鍵・公開鍵を作成する(Mac) #SSH - Qiita
さくらレンタルサーバーにSSHで公開鍵ログインする #さくらレンタルサーバー - Qiita
下準備
sshのコンフィグを設定します。
vim ~/.ssh/config
configファイルに下記のようなものを追記します。
Host example.com HostName username.sakura.ne.jp User username IdentityFile /Users/username/.ssh/id_rsa PreferredAuthentications publickey UseKeychain yes AddKeysToAgent yes
公開鍵・秘密鍵の作成
下記のコマンドをターミナルで叩いて、鍵ファイルの作成をします。
cd ~/.ssh ssh-keygen -t rsa -b 4096 -C "username@username.sakura.ne.jp" -f ~/.ssh/id_rsa
叩いた際に、公開・秘密鍵に設定するパスワードを聞かれますので、任意で入力。
公開鍵の方をさくらレンタルサーバーへ転送。
scpコマンドで作成した公開鍵(id_rsa.pub)の方をサーバーの.sshフォルダの中へ転送します。
scp ~/.ssh/id_rsa.pub example.com:/home/username/.ssh/authorized_keys
転送した後、一度sshなりでサーバーの方へ入って転送したファイルのパーミッションを変更します。
ssh username@username.sakura.ne.jp chmod 600 .ssh/authorized_keys exit
確認!
これで、ssh接続が楽になったはずです!
ssh example.com
だけで、サーバーへ接続できるはず!
さくらレンタルサーバー(スタンダード)上にgitリポジトリの作成
参考サイト
こちらのサイトを参考に、まとめたものになります。
https://qiita.com/michimani/items/deaa779971454439cb6d
管理するリモートリポジトリを作成
まずは、リモートリポジトリ用のディレクトリを作成します。
場所は、公開フォルダ(www)以外ならどこでも良いかと思います。
私は、1個のフォルダ内にまとめたほうが楽になるから、gitフォルダ作ってそんな中で管理する形にしてみました。
ssh example.com mkdir git cd git
リポジトリにあたるフォルダは○○.gitというフォルダ名で作成して、gitを作成します。
mkdir test.git cd test.git git --bare init
--bareオプションは、ファイル管理をしないで、ヘッダ情報や変更履歴だけを記録する?オプションらしいです。
post-receiveファイルの作成
ローカルからgit pushした際に、公開サイトへgit pullするコマンドを実行させるために、post-receiveを設定します。
cd hooks vim post-receive
post-receiveには、下記のようなものを追記します。
#!/bin/sh cd /home/username/www/test || exit unset GIT_DIR git pull origin master
その後、パーミッションを755に変更します。
chmod 755 post-receive
サーバーの公開ディレクトリのgitを作成
ssh接続してgitを作成
ssh example.com cd www/test git init
作成したgitに、上で作成したtest.gitをリモートリポジトリに設定します。
git remote add origin ~/git/test.git
これで、サーバー側の設定は終わりになります! 多分!
ローカルgitの設定
ターミナルで、gitを作成して、リモートリポジトリの設定をします。
cd test git init git remote add origin ssh://example.com/~/git/test.git
的な感じで、リモートの設定をgitに追加します。 example.comの箇所は、公開・秘密鍵の設定をした自分のみに使う場合にのみ有効なので、注意かな?
確認!
ローカルのgitにリモートリポジトリを追加、またはクローンしてきます。
git remote add origin ssh://example.com/~/git/test.git
か、
git clone ssh://example.com/~/git/test.git
をします。
その後、ファイルを作ったり変更したりしてみて、コミット、プッシュしてみます。
git add . git commit -m "hello!" git push origin master
これで、サーバー上の/home/username/www/testのファイルが作られたり変更されたりしたら成功です!
思いの外、長くなってしまったヽ(´ー`)ノ