よしたかの日常

ゲームのプレイ日記や、気になったこと等の情報を配信しています。

さくらレンタルサーバー(スタンダード)でGit管理、post-receiveでサイトの更新をしてみる

こんにちは!

寒くなったり暖かったり、なんだか不安定な気温が続いてますね(´・ω・`)

今、働いている会社で、サーバー上に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のファイルが作られたり変更されたりしたら成功です!

思いの外、長くなってしまったヽ(´ー`)ノ