CPIサーバ x WordpressプロジェクトをGit管理（公開鍵の登録〜Gitデプロイまで）

#2018/6/24更新
Gitの仕様変更のためかcpiサーバ上でgit pull ができなくなったみたいです。

```
$ git pull origin master
fatal: unable to access 'https://github.com/xxxxxxx/yyyyyy.git/': error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
```

gitのバージョンをあげれば通るっぽいですが、共用サーバであげられるのか...?

#はじめに
業務で初めてCPIサーバを使いました。
Gitを使ってWordPressプロジェクトをCPIサーバーにデプロイしたので、その時の覚書になります。

#やりたいこと
ローカル（手元のmac）で開発したWordPressプロジェクトをGitを使って本番環境（CPIサーバー）にデプロイしたい。
->というのも、リリース後もGitで管理したいから

#なぜそうしようと思ったか
- 本番リリース後、WordPress管理画面でのテーマファイル修正はやりづらすぎるため
 - やりづらすぎるので自分の中で論外
- FTPでのファイルアップロードに限界を感じたため。
 - どれをアップロードすればいいかわからなくなる。故にミスが発生する。テーマフォルダの全アップロードは時間もかかるし、なんだかんだミスが発生することが多い。
- WordPressのマイグレーション用プラグインはデータベースまでリプレースされるため。
 -  私は`All-in-One WP Migration`をよく使います。めっちゃ便利です。が、データベースからファイルまで丸々複製したいときしか使えません。なので、リリース後、本番環境では色々投稿されるがテスト環境は放置という場合（これがほとんどかと）、両者の環境で乖離が生じるので、マイグレーション用ファイルは使えません。

#構成


![スクリーンショット 2018-01-16 23.32.51.png](https://qiita-image-store.s3.amazonaws.com/0/112614/618959a4-7591-65c0-b8e6-38e132e790e5.png)



# 事前準備
ローカルからCPIサーバにSSH接続するためには、ローカルの公開鍵をCPIサーバに登録する必要があります。

これを見ながらやりました。
http://acesr.doc.secure.ne.jp/archives/pdf/setup_sshkey_pc_macos.pdf
①MacOS のターミナルを利用して鍵ペアを生成する 
②公開鍵を ACE01 のサーバーへ登録する 
の作業をやればOKです。

**既に鍵ペアを生成済みの人は①は飛ばして②だけで良いです。
①をやってしまうと、鍵ペアが再生成されてしまうので、以前鍵を登録していた他のサービス（例えばGitHubなど）が使えなくなってしまうと思われます。（自信はないのですが、原理的に使えなくなると思います...）**

一応やったことを書くと、、、

```
cat .ssh/id_rsa.pub
```

これで出力された文字列をコピーしてcpiサーバの管理画面に貼り付けます。
（下の公開鍵登録ってとこ。上の鍵ペア作成は今回関係なし。）
![スクリーンショット 2018-01-16 0.22.15.png](https://qiita-image-store.s3.amazonaws.com/0/112614/76525936-4d0c-2e94-7763-201b4ab314be.png)

で、登録&利用開始ボタン押す。

これで自分のmacからCPIサーバにSSH接続できるようになります。


#本手順
1. ローカル環境からGitHubにプッシュする
2. All-in-One WP Migrationをつかってローカル環境からCPIサーバに一旦複製する（一応デプロイはここで完了）
3. 何らかの修正をローカル環境で行い、GitHubにプッシュする
4. ローカル環境からCPIサーバにSSH接続する
5. SSH接続した状態でGitHubからpullする

##1. ローカル環境からGitHubにプッシュする
Git管理するディレクトリはテーマだけに絞ることにします。uploadsとかは本番環境と乖離がでるところなので。

まだGitリポジトリを作ってない場合は作って、リモートリポジトリも設定しておきます。まぁまずデプロイ直前でリポジトリを作るって人はいないと思いますが、一応。

```
wordpressのルートにいる前提で、
$ cd wp-content/themes/{テーマ名}
$ git init
$ git add -A
$ git commit -m "first commit"
$ git remote add origin https://github.com/DaichiSaito/xxxx.git (適宜変えてください。ちなみにここでちょっとハマりました。後述)
$ git push -u origin master
```

##2. All-in-One WP Migrationをつかってローカル環境からCPIサーバに一旦複製する
直感的に使えるので、詳細は説明しません。
1. ローカル環境でこのプラグインをインストール・有効化する
2. その後エクスポート・ダウンロードをする。（FileとかDropBoxとか色々選択肢がありますが、無料版はFileだけ。Fileで全然問題ありません。）
3. CPIサーバでこのプラグインをインストール・有効化する
4. その後先ほどダウンロードしたファイルをインポートする。

これでローカル環境がCPIサーバに複製されました。

##3. 何らかの修正をローカル環境で行い、GitHubにプッシュする
2.の手順が完了した時点でとりあえず実はもう本番リリースは完了してますね。
で、リリース後にバグを発見したとして、何らかの修正をローカル環境で行ったとします。
それをFTPではなく、Gitを使って本番環境に反映させていきます。

```
wordpressのルートにいる前提で、
$ cd wp-content/themes/{テーマ名}
$ git add -A
$ git commit -m "bug fix"
$ git push origin master
```

変更をGitHubにプッシュします。

##4. ローカル環境からCPIサーバにSSH接続する
先ほども出てきたこのマニュアルの③です。
http://acesr.doc.secure.ne.jp/archives/pdf/setup_sshkey_pc_macos.pdf

>Mac OS のターミナルを起動し、以下のようにコマンドを入力し return キーを押してください。
ssh -p ポート番号 ウェブコントロールユーザーID@ACE01 の IP アドレス
「ポート番号」は公開サイト用のポート番号、またはテストサイト用のポート番号を入力してください、
ポート番号は、ウェブコントロールパネルの【お客様情報】＞【プログラムのパスとサーバーの情報】
の
「SSH ポート番号」に記載しています。

一応スクショを添付しときます。ポータルのこの辺りに情報が書かれてます。

![スクリーンショット 2018-01-16 0.26.32.png](https://qiita-image-store.s3.amazonaws.com/0/112614/ddd67c05-ea5c-ae06-281d-6c9e72fc3866.png)


![スクリーンショット 2018-01-16 0.26.39.png](https://qiita-image-store.s3.amazonaws.com/0/112614/3b8054b5-5439-a0f5-09b3-e73d900dfdc5.png)


```
#############################################################
#                                                           #
# Environment you are logged in a staging environment is    #
#                                                           #
#############################################################

xxxx(ユーザーID) test % 

```

うまくSSH接続ができればこんな画面になるかと。


##5. SSH接続した状態でGitHubからpullする
Gitリポジトリの情報ごと(`.git`ごと)All-in-One WP Migrationで複製してるので、CPIサーバでもGitリポジトリが出来上がってます。で、当然ですがリモートリポジトリの設定も引き継いでます。

なので、あとはプルをすればGitHubから最新のソースを引っ張ってこれます。

```
#############################################################
#                                                           #
# Environment you are logged in a staging environment is    #
#                                                           #
#############################################################

xxxx(ユーザーID) test % cd html/wp-content/themes/{テーマ名}
xxxx(ユーザーID) test % git pull origin master

```

テーマディレクトリまで移動して、プル、です。


#はまったところ
ローカル環境でGitリポジトリを作成しリモートを設定するとき、当初、


`git remote add origin https://github.com/DaichiSaito/xxxx.git`
ではなく
`git remote add origin git@github.com:DaichiSaito/xxxx.git`
としていた。
こうすると、CPIサーバで`git pull origin master`するときに怒られてプルできなかった。
CPIサーバーの公開鍵をGitHubに登録していないからかな？

#最後に
これでテーマの修正はgit pull だけで反映できるようになりました。
ただ、固定ページとかプラグインはそうはいきません。なので、ローカル環境で行った作業を手動で本番環境でも実施してます。。

みんなWordPressの構成管理ってどうしてるんだろう。