ローカルLaravelプロジェクトをXserverにgit pullで反映させるまで


ローカルPCは、windows10でXAMPP利用環境の話です。
コンポーザーのインストールまで完了しているとします。

次にすることは、まずはlaravelのプロジェクトを作ります。

laravel本体をインストールしてから、laravelのコマンドでプロジェクトを作る方法と、
composerのコマンドでlaravelを指定して、プロジェクトを作る方法があるようです。
今回は、後者にしました。
プロジェクト名を例「mytask」とすると、
プロジェクトを作りたいフォルダに移動します。
フォルダ名はプロジェクト名とおなじが分かりやすい。
コマンドプロンプトで、以下を入力

composer create-project –prefer-dist laravel/laravel mytask

一応確認として、
XAMPPでHTTPを起動し、
「php artisan serve」をコマンドで打ち、
ブラウザに「http://127.0.0.1:8000/」でアクセスして、laravelのデフォルトページが出ていればOKです。

プロジェクトの設定やDB接続などの話は飛ばします。「git pull」に一直線に話を進めたいので。

次に、gitは、「SOUCETREE」というソフトを使うことにします。

Sourcetreeを開き、laravelの「mytask」を新たな管理プロジェクトとして登録します。
new tabからcreateを開き、laravelで作ったプロジェクトのフォルダを指定し登録します。

これでローカルのgitと繋がりました。
「init」とでも、コミットしておきます。

次にXserverに公開用のディレクトを作り、git pullでローカルの変更を反映できるようにします。

ここはいくつかのステップがあります。

step1)SSH通信を設定

Xserverで秘密鍵を作ります。
保存先は、C:\Users\アカウント名\.ssh というフォルダに入れます。
秘密鍵は、リネームして、「id_rsa」としておきます。
この名前は、後からXserverにsshでログインする時に、自動的に検索されるファイル名なので、それに合わせておきます。

Soucetreeの「ツール」「オプション」に進み、「OPENSSH」を選択して、この秘密鍵を設定します。
パスフレーズを聞かれますので、入力してリターンします。
反応がなく終わりますが、エラーが出ない限りOKです。

次は、このSoucetreeから秘密鍵を使ってXserverにSSHでログインします。
Sourcetreeの「ターミナル」ボタンから、以下のコマンドでログインします。

「ssh アカウント名@ホスト名.xserver.jp -p 10022」
もし、エラーやPermission denyなどが出た場合は、
「ssh -vvv アカウント名@ホスト名.xserver.jp -p 10022」と打ち原因調査します。
ずらずらとメッセージが出てきますが、ヒントがあります。

私の場合は、秘密鍵の場所のパスが間違っていました。保存場所が/user/.sshにしてましっていました。
/user/アカウント名/.sshにすべきでした。

ログインできたら、Xserver(リモートという呼び名にしていきます)の中に、Gitのリモートリポジトリを作ります。

mkdir gitでgitディレクトリを作り、cd gitでその中に入り、
「git init –bare my.git」と打ちます。空のリポジトリが出来ます。


これでローカルとリモートのリポジトリの両方が揃いました。
あとは、Soucetreeでプッシュしたものが、リモートのリポジトリに反映されるようにします。

Soucetreeのメニューの「リポジトリ」から「リポジトリの設定」に進みます。

「追加」を押して、「デフォルトリモート」にチェックして
「ssh://アカウント名@ホスト名:10022/home/から続くリモートリポジトリまでのパス/
を設定します。

すべてOKで登録します。

メニューの「ブッシュ」に進み、「master」にチェックします。
それから「ブッシュ」します。

プッシュが進行して完了します。これができれば、プッシュができるようになったということです。

step2)は、リモートの特定のディレクトに、ローカルの変更内容が反映されるようにします。

Soucetreeのターミナルから、再度Xserverにログインして、プロジェクトを置きたいディレクトを作ります。実質的に公開用のディレクトとなります。
WEBアドレスとしては、シンボリックリンクで好きに変更できるので、それは気にしないで下さい。

そのディレクトリに入り、
「git clone /home/アカウント名/git/my.git」と打ちます。
先程、ローカルからプッシュされた内容がすでにリモートのリポジトリにありますので、
それを今のディレクトリにクローン(コピー)するという内容です。

これで完成です。

では、テストしてみましょう。

1)ローカルのwelcome.blade.phpをなにか変更してみて下さい。
例 titleタグの値が「Laravel」になっていたのを「My Laravel」にしてみましょう。
2)Sourcetreeからコミットしてプッシュします。
3)Xserverのプロジェクトがあるディレクトリで「git pull」します。
リモートリポジトリから変更内容を確認して、ファイルとして変更を反映されるということです。
「1 file changed, 1 insertion(+), 1 deletion(-)」などのように、なっていれば成功です。