KAGOYA

リモートサーバーにgitのレポジトリつくってローカル環境からpushして反映させる方法

2021/5/25時点で、KagoyaのマネージドサーバーでLaravel開発することは断念しました。

理由は

  • Composerが使えないこと
  • PHPがCliモードで使えないこと

回答いただきました、Kagoyaのサポートの方々、ありがとうございました。
サーバーに詳しくなかった自分のレベルが、今回のことで少しだけあがりました。

サーバーについては他のサーバーを検討することにします。

なお、使えない理由は下記記事にありますので、興味ある方はご参照ください。

Kagoyaのマネージドサーバーはcomposerが使えないのでgitigonoreを編集してpushしてみた

Kagoyaマネージドサーバーでlaravelのphp artisan tinkerが動かない問題

過去、Laravelでプロジェクトをやったとき、サーバーにSSHで接続して直接編集をしていました。

もちろん、本番も開発も同じところでやるのはよくないこととはわかりつつも、どうやったら正しい開発環境をつくることができるのかわからなくて&調べるのが大変で、やむを得ずその方法をとっておりました。

でも、今回はなんとかしたいと思い、今日一日を費やして、現状を改善し、一歩、理想に近づけることができましたので、その備忘録を書きます。

やりたかったこと

Gitつかいたい 2021 05 09 20 10 54

やりたかったのは、自分のMacBookProで開発し、それをGithubに送り、送ると自動的にKagoyaサーバーが更新されるというスタイルでした。

できたこと

Gitつかいたい 2021 05 09 20 18 04

このように、kagoyaのサーバーの中にペアレポジトリを作成し、MacBookにもクローンを作成。MacBookで開発した内容が、サーバーに反映、サーバーにSSH接続してGit pullすることで公開部分のソースが更新されるというもの。

さくらのレンタルサーバーにgitのリモートリポジトリを作成する | Points & Lines

↑ こちらの記事を参考にさせていただきました。

どうやったか

まずは、サーバー側で、/home/nakachon/repository/versions.gitにて

$ git init --bare --shared

で、もととなるレポジトリを作成。

つぎに、公開ディレクトリ(public_html)下にtestのディレクトリを作成。
/home/nakachon/public_html/test/

$ git clone /home/nakachon/repository/versions.git/

ここにgit clone

Ssh 2021 05 09 20 26 06

/testの下にversionsというフォルダがつくられました。

次にローカルで自分のMacBookPro.

nakachon/code/test というフォルダを作成。

ここで、

git clone kagoya:/home/nakachon/repository/versions.git/

とやって、git cloneします。

実は、これが一番大変だった。

というのも、

1. .ssh/config にてHostの設定

これは、Host kagoyaを作り、鍵やPortの設定をすればOK.

2. Git cloneのあとの部分の表記がなかなかうまくいかず、

Cloning into 'repository'...
fatal: 'nakachon/repository/' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

何度もこのメッセージが出ました。

実験

まずはMacBookProにて

$ touch test.txt
$ git add test.txt
$ git commit -m "test"
$ git push origin master

これでPush完了。

次にサーバーにSSHで接続。

public_html/test/versions に移動

-bash-4.2$ git pull
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /home/nakachon/repository/versions
 * [new branch]      master     -> origin/master
-bash-4.2$ ls -al
合計 0

で、フォルダを確認したところ、無事にtest.txtが反映されていました。

次の課題

git pushしたら自動的にpublic_htmlでgit pullしてくれるような方法があるらしいです。

メモ: Gitリモートリポジトリにpushして自動更新してもらう方法 – Qiita

この記事ですね。

これができれば、やりたかったことが達成できそう。

まとめ

gitって便利なのはわかってるけど、近くに教えてくれる人いないとなかなかハードル高いですよね。

これを元に、当たり前のようにgit使えるようがんばります。