KinstaではGitクライアントをご用意しています。SSHで接続し、GitHub、GitLab、Bitbucket、またはその他のサードパーティから自分のGitリポジトリをプルすることが可能です。SSH接続は、Kinstaのすべてのホスティングプランでご利用いただけます。

尚、初心者の方向けに、「GitGithubの違い」もご用意しています。

git push kinsta my_siteを用いたデプロイ機能はまだリリースしておりません(今後のリリースを予定しています)。しかしながら、KinstaとGitを簡単に組み合わせることは可能です。詳細は以下をご覧ください。

Gitの使い方

ものの数分で、Google CloudのLinuxコンテナにSSHで接続し最新バージョンのリポジトリをプルするデプロイメントプロセスを構築できます。KinstaでホストするサイトのSSH接続関連情報は、サイトの「情報」ページに記載されています。

MyKinstaで情報を確認(「SSHターミナルのコマンド」)
MyKinstaで情報を確認(「SSHターミナルのコマンド」)
ssh [email protected] -p PORT "cd /www/my_site/public && git pull"

これとは別に、WP Pusherを使用することもできます。多くのKinstaのお客様がこちらを利用しています─GitやSSH接続のことを知らなくてもいいので、非常にお手軽な選択肢です。

SSH接続を使ってKinstaでGitの自動デプロイを設定する方法については、こちらの、Austin氏によるわかりやすい解説(英語)もご覧ください。

他の選択肢としては、BeanstalkDeployBotなどもあります。これらを利用しない場合は、以下の通り、Gitについての説明をご参照ください。

リポジトリの複製

リポジトリを複製する方法は以下の通りです。

git clone https://github.com/USER/REPO.git

Gitでプライベートリポジトリを使用する場合、GitHubのユーザー名とパスワードを使用し、これらがサーバーに渡されます。

git clone https://username:[email protected]/USER/REPO.git

二要素認証を有効にしている場合、標準の認証情報の代わりにOAuthトークンを使用する必要があります。OAuthトークンの作成方法もあわせてご確認ください。

二要素認証が有効であるリポジトリを複製する方法は以下の通りです。

git clone https://[email protected]/USER/REPO.git

プライベートリポジトリ

プライベートリポジトリの場合は、git pullに認証情報を追加する必要があります。

Pull

ssh [email protected] -p PORT "cd /www/my_site/public && git pull https://username:[email protected]/USER/REPO"

二要素認証ありのプライベートリポジトリ

二要素認証を有効にしている場合、標準の認証情報の代わりにOAuthトークンを使用する必要があります。OAuthトークンの作成方法もあわせてご確認ください。二要素認証ありのリポジトリをデプロイする方法は以下の通りです。

Pull

ssh [email protected] -p PORT "cd /www/my_site/public && git pull https://[email protected]/USER/REPO"

上の git pull に認証情報と HTTPS パスが含まれていない場合は、(ホストされているリポジトリではなく) ローカル環境が対象となり、「Everything up-to-date」のようなメッセージが返されます。

コンフリクトへの対処方法

リモートで何かを変更した場合、上記のデプロイメントコマンドでは、コンフリクト発生のために中断されてしまいます。そんな時の対処法は、どちらを優先するかにより異なります。以下の例では、Gitリポジトリを優先し、コンフリクトのことは無視することとします。

Force Pull

これの使用には細心の注意が求められます。以下を実行することで、リモートに存在する変更点がGitリポジトリの内容で上書きされます。

ssh [email protected] -p PORT "cd /www/MY_SITE/public && git fetch https://[email protected]/USER/REPO.git && git reset --hard kinsta/mysite"

KinstaとGitの組み合わせについてご質問がございましたら、カスタマーサポートが喜んでお手伝いさせていただきます。

GitLab CI/CDでKinstaに自動デプロイする方法(上級者向け)

上級者向けですが、GitLab CI/CD(継続的インテグレーション/継続的デリバリー)を使用して、新しいコミットが関連するブランチにプッシュされるたびに、コードの変更内容をKinstaのサイトに自動的にプッシュできます。この方法では、WordPressのMySQLデータベースを上書きすることなく、Kinsta上の本番環境にコードを継続的にプッシュ可能です。

Kinstaでサイトを作成する(任意)

補足として、Kinstaで新しい空のサイトを作成して、そこにWordPressをインストールする方法もご紹介します。すでにKinstaでサイトをお持ちであっても、この説明に沿って手順を進めることができます。

MyKinstaで、「サイト」ページに移動し、右上にある「サイトを追加する」をクリックします。「WordPressをインストールしない」を選択し、サイトに名前を付け、データセンターを選択し、「サイトを追加する」ボタンをクリックしてサイト作成プロセスを終了します。

MyKinstaで空のサイトを作成する
MyKinstaで空のサイトを作成する

GitLabでプロジェクトを作成する

GitLabにアクセスし、「Create a Project」をクリックして、Kinstaサイトの新しいリポジトリを作成します。

GitLabでプロジェクトを作成する
GitLabでプロジェクトを作成する

Blank Project」を選択し、「Project Name」と「Project Slug」を入力します。

GitLabで空のプロジェクトを作成する
GitLabで空のプロジェクトを作成する

「Visibility Level」では、リポジトリを非公開にすることをお勧めします。リポジトリには、有料プラグインやテーマのコードが含まれる可能性があり、これを公開すると、誰でもあなたが購入した製品をダウンロードできるようになってしまいます。

新しいプロジェクトの設定が完了したら、「Create Project」をクリックして続行します。

SSH鍵の設定

次に、GitLabとMyKinstaにSSH鍵を追加して、2つのプラットフォームが相互に通信できるようにする必要があります。まずは、GitLabにSSH鍵を追加することから始めましょう。

GitLabにSSH公開鍵を追加する

まず、Kinsta上のサイトの本番環境にSSHで接続し、以下のcatコマンドを実行して、SSH公開鍵を表示します。

cat ~/.ssh/id_rsa.pub

公開鍵は以下のようなものになるはずです。ターミナルウィンドウを開いたまま、ウェブブラウザでGitLabに戻ってください。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7zdjwd6UIUJ5t4YnXNi6yhdHgrvIV2xgjvJ3592wd1Hzmnta4dau7yOIxQDU7/oNIr6DIskuIUii5ruGi4YZpIwB/AWGrn/uWb+FXJFiQHMZq9rCFcqtZXT0fyzKiSNkblV4F1RaPQJRvxfSUsSQ3jJU3FX8CF1c4R40CiBKkSHM8uavVIIESzgIHRiWVxkL9F6SKzg8GeTctJaAa3W+q1F1T60OKYmzH3OLdA37ZNmkm1CYWa8SF0JjOszxOnPwhfQ49P5r+rftXRFLz/7hGJ8CnUyzErSiUdUKNknUAB+w4KEZshQSNuiken0+GKqIw83dWWSyjiJJigcyDez2s+3AqDLHPG45NoBEXuBXjPQ9C08hokVyKlbzd/P2qvcnzUT5S6zTuaYOW+50+fiXeYkJlEoYYxoGRVx6FFdFqWyJx5UyaDv7QY3iQH0qct1iq9XGXMhBxIecIAEPUwF8nOp15in8L+5UIFMiNnihztTAXysc+8xvVwbuRlQIeR/E= ansible-generated on fvj-kinstagit

GitLabの右上にあるユーザーアイコンのドロップダウンをクリックし、「Settings」をクリックします。

GitLabの設定画面に移動する
GitLabの設定画面に移動する

「Settings」ページで、サイドバーの「SSH Keys」をクリックします。

GitLabのSSH鍵
GitLabのSSH鍵

SSH公開鍵をテキストフィールドに貼り付けます。「Title」欄には名前が自動で入力されますが、必要に応じて自由に変更してください。GitLabでは、SSH鍵の有効期限を設定することもできます。これは、インフラのセキュリティプロトコルの一環としてSSH鍵の無効化やローテーションを行っている場合に便利です。特に必要がなければ、「Expires At」フィールドは空白にしておいてください。

GitLabにSSH鍵を追加する
GitLabにSSH鍵を追加する

設定内容を確認した後、「Add Key」をクリックして終了します。

MyKinstaにSSH公開鍵を追加する

GitLabでSSH公開鍵を設定したので、今度は、同じ鍵をMyKinstaに追加します。MyKinstaでは、左下のユーザーアイコンをクリックし、「ユーザー設定」をクリックします。このステップでは、Kinsta公開鍵をサイトのauthorized_keysファイル(rootとMyKinstaのみで書き込み可能)に追加し、GitLabによるサイトへのSSH接続、コード変更内容のプッシュを可能にします。

MyKinstaのユーザー設定
MyKinstaのユーザー設定

下にスクロールして「SSH鍵を追加」をクリックします。

MyKinstaでSSH鍵を追加する
MyKinstaでSSH鍵を追加する

表示されるウィンドウで、SSH鍵の名前を指定し、テキストフィールドに公開鍵を貼り付けて、「SSH鍵を追加する」をクリックします。

MyKinstaでSSH鍵を追加する
MyKinstaでSSH鍵を追加する

GitLabにSSH秘密鍵を追加する

次に、Kinstaサイト本番環境のSSH秘密鍵をGitLabの環境変数として追加します。この秘密鍵により、GitLabがKinsta上のサイトにSSHで接続し、コードの変更内容を直接プッシュできるようになります。

秘密鍵を見つけるには、Kinstaの本番環境で以下のTerminalコマンドを実行します。尚、SSH秘密鍵をGitLab設定画面以外の場所で公開したり、共有したりしないようにご注意ください。

cat ~/.ssh/id_rsa

GitLabで、先ほど作成したプロジェクトをクリックします。サイドバーの 「Settings」にカーソルを合わせて、「CI/CD」をクリックします。

GitLabリポジトリのCI/CD設定
GitLabリポジトリのCI/CD設定

「Variables」セクションまでスクロールし、「Expand」ボタン、そして「Add Variable」をクリックします。鍵名にはSSH_PRIVATE_KEYを使用し、テキストフィールドに秘密鍵を貼り付けて、「Add Variable」をクリックして続行します。

変数を追加すると、リポジトリの設定で確認できるようになります。

GitLab上のSSH秘密鍵(環境変数として追加)
GitLab上のSSH秘密鍵(環境変数として追加)

GitLabのリポジトリをMyKinstaに複製する

SSH鍵の追加後には、GitLabリポジトリをKinstaの本番環境に複製することができます。GitLabでリポジトリに移動し、青い「Clone」ボタンをクリックして「Clone with SSH」の下にあるURLをコピーしてください。

GitLabでSSH接続を使って複製を行う
GitLabでSSH接続を使って複製を行う

次に、Kinstaサイトの本番環境にSSHで接続し、ホームディレクトリに移動します。ホームディレクトリのパスがわからない場合は、以下のコマンドを使用してください。

cd ~/

ホームディレクトリに移動したら、git cloneコマンドを実行します。

git clone [your-repository-url-here]

リポジトリを複製すると、「you appear to have cloned an empty repository(空のリポジトリを複製したようです)」という警告が表示されます。これは、現時点ではリポジトリが空なので自然なことです。

GitLabリポジトリをKinstaの本番環境に複製する
GitLabリポジトリをKinstaの本番環境に複製する

KinstaのNginxは、~/public フォルダからコンテンツを配信する仕様です。そのため、既存の~/public フォルダを削除し、複製したリポジトリフォルダの名前を~/public に変更する必要があります。これを行うには、以下の2つのコマンドを実行します。

rm -rf ~/public
mv ~/your-repo-folder-name ~/public

GitLabリポジトリの設定

次に、以下のコマンドで~/publicフォルダに移動します。

cd ~/public

以下の2つのコマンドを実行して、GitLabリポジトリを設定します。その際、有効なメールアドレスと任意のユーザー名を必ず指定してください。

git config --global user.email "[email protected]"
git config --global user.name "brian"

WP-CLIを使ってWordPressをインストールする

GitLabリポジトリをKinstaサイト本番環境に複製し、設定も完了したので、続いてはWordPressをインストールしましょう。WordPressは、wordpress.orgからダウンロードし手動でインストールすることも、WP-CLIでインストールすることもできます。この例では、以下のコマンドで、WP-CLIを使用して ~/publicフォルダにWordPressをインストールします。

wp core download

WordPressをインストールすると、~/publicフォルダは以下のようになります。

WP-CLIを使ってWordPressをインストールする
WP-CLIを使ってWordPressをインストールする

次に、MyKinstaで「ドメイン」ページの「プライマリドメイン」の項目に移動し「URLを開く」をクリックします。

WordPressサイトのプライマリドメインにアクセス
WordPressサイトのプライマリドメインにアクセス

WordPressのインストールプロセスが始まります─これは、ものの5分もあれば完了します。WordPressの設定方法がわからない場合は、こちらの詳しい説明をご確認ください。

新しくインストールしたWordPressの設定を行う
新しくインストールしたWordPressの設定を行う

WordPressのインストールが完了すると、プライマリドメインにアクセスして、WordPressサイトを見ることができるようになります。

インストールしたばかりのWordPress
インストールしたばかりのWordPress

GitLab CI/CD パイプラインの設定

次に、リポジトリのマスターブランドが更新された後に自動デプロイを開始するようGitLabに指示するための、特別なファイルをセットアップする必要があります。これを行うには、Kinstaサイト本番環境の~/publicフォルダに移動し、以下のコマンドで.gitlab-ci.ymlという新しいファイルを作成します。

cd ~/public && touch .gitlab-ci.yml

ファイルを作成したら、そのファイルに以下のテキストを追加します。ターミナル上のエディタ「nano」、「vim」や、SFTPエディタで編集できます。SFTPクライアントを使用している場合は、.gitlab-ci.ymlファイルを見るために隠しファイルの表示を有効にしてください。

before_script:
    - apt-get update -qq
    - apt-get install -qq git
    # Setup SSH deploy keys
    - 'which ssh-agent || ( apt-get install -qq openssh-client )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config'
deploy_live:
    type: deploy
    environment:
        name: Live
        url: your-primary-domain
    script:
        - ssh [email protected] -p port-number "cd public-root && git checkout master && git pull origin master && exit"
    only:
        - master

deploy_liveブロックのurlscriptパラメータを必ず変更してください。太字になっている値は、MyKinstaにある実際のサイトの設定に従って置き換えてください。

MyKinstaのパブリックパスとSSH接続関連情報
MyKinstaのパブリックパスとSSH接続関連情報

ファイルの only: - masterセクションは、GitLabのCI/CDプロセスの起点となるリポジトリのブランチを参照しています。この設定で、masterブランチへのプッシュにより、Kinstaサイト本番環境へのデプロイが開始されます。デプロイのトリガーとして別のブランチを指定したい場合は、自由に設定を変更してください。

ステージング環境を考慮してさらに細かく設定をしたい場合は、Kinstaサイトのステージング環境URLとSSH接続情報を記載したdeploy_stagingブロックを追加することができます。

deploy_staging:
    type: deploy
    environment:
        name: Staging
        url: your-staging-domain
    script:
        - ssh [email protected] -p port-number "cd public-root && git checkout master && git pull origin staging && exit"
    only:
        - staging

only: - stagingの部分にご注目ください。これは、stagingブランチにプッシュするとGitLabのCI/CDプロセスが始まることを意味します。

GitLabへの最初のコミット

WordPressとGitLabの設定ファイルの準備ができたところで、GitLabへの最初のコミットを行いましょう。v0.1という新しいブランチを作成、リポジトリ内のファイルの追跡を開始、変更をコミットし、GitLabのv0.1ブランチに変更をプッシュします。以下のコマンドを~/publicから実行し、最初のコミットを行います。

git checkout -b v0.1
git add .
git commit -a -m 'Initial Commit'
git push origin v0.1

GitLabでリポジトリを確認すると、最初のコミットのファイルが表示されています。

GitLabへの最初のコミット
GitLabへの最初のコミット

Kinstaステージング環境の設定

続いては、本番環境に影響を与えずに新しいプラグイン、テーマ、コードをテストするための環境を用意します。まずは、MyKinstaでステージング環境を作成します。

MyKinstaでステージング環境を作成する
MyKinstaでステージング環境を作成する

ステージング環境にSSH接続でアクセスし、以下のコマンドを実行してコードの変更点を確認します。

cd ~/public && git status

すると、以下のようなメッセージが表示されます。ご覧の通り、ブランチは先に作成したv0.1です。加えて、 wp-config.phpファイルが更新されています。これは、Kinstaが本番環境からステージング環境へのプッシュに際しwp-config.phpに数行のコードを追加するためです。

Kinstaステージング環境で変更の加えられたファイル
Kinstaステージング環境で変更の加えられたファイル

本番環境への変更点のコミットとプッシュ

最後に、ステージング環境に変更を加え、GitLabを使ってKinstaの本番環境に新しいコミットをプッシュしましょう。この手法を利用する目的は、WordPressデータベースを上書きするKinstaデフォルトの「本番環境への反映」機能を回避することにあります。

今回の例では、WP-CLIと以下のコマンドを使って、Yoast SEOプラグインをインストールしてみます。

cd ~/public && wp plugin install wordpress-seo

Yoast SEOプラグインのインストールが完了したら、以下のコマンドを実行することでコミットし、変更内容をv0.1ブランチにプッシュします。

git add .
git commit -a -m ‘Installed Yoast SEO plugin.’
git push origin v0.1

最後に、以下のコマンドで、masterブランチに切り替えて、v0.1masterにマージし、masterをGitLabにプッシュしましょう。これにより、GitLabの設定ファイルにonly: - masterの設定があることで、GitLabがKinstaの本番環境へのデプロイプロセスを開始します。

git checkout master
git merge v0.1
git push origin master

GitLabで、リポジトリのサイドバーから「CI/CD」>「Jobs」に移動すると、ジョブが実行されているのがわかります。このジョブの中身は、GitLabによる、Yoast SEOプラグインのKinsta本番環境へのプッシュです。

GitLabで実行中のジョブ
GitLabで実行中のジョブ

ジョブが終了したら、Kinstaの本番環境でwp plugin listを実行します。先にステージング環境にインストールしたYoast SEOプラグイン(wordpress-seo)が表示されるはずです。

Yoast SEOプラグインをGitLab経由でデプロイ
Yoast SEOプラグインをGitLab経由でデプロイ

GitLab CI/CD経由で自動デプロイを設定することで、ワークフローを高速化することができます─特に、Kinsta上のサイトを扱うテーマ/プラグイン開発者の方々に便利な選択肢です。この設定により、本番サイトのMySQLデータベースを上書きすることなく、ローカル環境やKinstaステージング環境からコードをデプロイすることができます。