🦒

同じサーバー内のテスト環境から本番環境へgitで公開する方法①

2023/04/08に公開

今回は同一レンタルサーバー内のテスト環境から本番環境へGitで本番公開する方法についてご紹介します。
この記事では、以下の順序で手順を説明します。

こんな人向けの情報です。

  • さくらインターネットのレンタルサーバーを使用している。
  • 一つのサーバー内に本番環境とテスト環境が同居している。
  • 本番環境はなるべく手動で操作したくない。

こんな環境を想定しています。

変数定義
テスト環境ドメイン     :   test.sample.com
テスト環境DocumentRoot :   /home/acount-name/www/staging
本番環境ドメイン       :   sample.com
本番環境DocumentRoot   :   /home/acount-name/www/production

FTPサーバ名            :   sample.sakura.ne.jp
FTPアカウント          :   acount-name
FTP初期フォルダ        :   www
パスワード             :   password

前提条件

  • GitHubアカウントがあること
  • サーバーにSSH接続できること

ざっくり手順

  1. レンタルサーバーとGitHubを紐づける
  2. レンタルサーバーでの事前準備
  3. テスト環境でプッシュ
  4. 本番環境でクローン

1.さくらインターネットとGitHubを紐づける

1-1. レンタルサーバーにSSHでログインします。

WindowsPowerShell
# レンタルサーバーへSSH接続でログインするためのコマンド
ssh sample@sample.sakura.ne.jp

上記でさくらレンタルサーバーへログインすることができます。
パソコンからサーバーへも公開鍵認証でログインできますのですでに設定している方は公開鍵認証にてサーバーへログインしてください。

WindowsPowerShell
# 自分が今いるディレクトリを確認するコマンド
pwd

おそらく/home/acount-name/wwwにいると思います。
このタイミングではどこにいたっていいのですが、、異世界へ転送されたらまず自分のいる場所を確認したくなってしまうので自分は毎回やってしまいます。

ここからレンタルサーバーとGitHubをつなげる準備に入ります。

1-2. レンタルサーバー内で秘密鍵公開鍵を発行します。

まず、サーバー上に守衛室(.sshフォルダ)に移動します。

WindowsPowerShell
# .sshへ移動するコマンド
cd /home/acount-name/.ssh/

次に、鍵穴をセット作ります。

WindowsPowerShell
# 秘密鍵公開鍵を生成するコマンド
$ ssh-keygen -t rsa -f github-repo-sample-project

-t rsaは、鍵の暗号化方式をrsaにしてくださいという指示オプション。このままでok.
-fは、生成する鍵の名前を指定するオプション。github-repo-sample-projectは好きなものに変えてください。

パスフレーズを聞かれますが、何も入力せずにEnterで進めて問題ありません。

本当に鍵穴(秘密鍵と公開鍵)ができているか一応確認します。

WindowsPowerShell
# 今いる場所のフォルダに何があるか見るコマンド
ls -la

github-repo-sample-project    秘密鍵(クライアント用)
github-repo-sample-project.pub  公開鍵(サーバー用)

というのができているかと思います。

今いる場所(/home/acount-name/.ssh/)が自身の鍵保管庫となりますので、秘密鍵(github-repo-sample-project)はそのままにしておきます。

github-repo-sample-project.pubは、鍵穴的なものなので、GitHubの自分のアカウントのところに移動させます。

移動といっても、ファイルそのものを動かすのではなく、github-repo-sample-project.pub(公開鍵)ファイルに入ってるテキスト情報を、GitHub側へコピペしておくカタチです。

WindowsPowerShell
# 公開鍵の中身を見るコマンド
cat github-repo-sample-project.pub

だらだらーっと表示された長い文字列を控えておきます。

1-3. GitHubに公開鍵を登録します。

自分のGithubで作成済みのGithubリポジトリページにアクセスしたら、
Settings → Deploy Keys → Add deploy key をクリックします。

以下のような画面が表示されたら、Titleには、適当なタイトル(github-repo-sample-project.pubとか?)を入力し、Keyのところには、先ほどcat github-repo-sample-project.pubで控えておいた長い文字列を全文は貼り付けます。

✅Allow write access にチェックを入れて、「Add Key」を押下。

これでGitHubへの公開鍵の登録は完了です。

1-4. さくらインターネットからGitHubへの接続確認

最後に、以下のコマンドでGitHubとの接続確認を行います。

WindowsPowerShell
# 接続確認コマンド
ssh -T git@github.com

# Hi git-acount-name! You've successfully authenticated, but GitHub does not provide shell access.
# と返ってきたら成功です。

2. テスト環境での準備作業に入ります。

レンタルサーバーとGitHubで疎通が取れたら、次にレンタルサーバーのテスト環境での準備作業を行います。手順は以下の通りです。

2-1. Gitの初期化

WindowsPowerShell
# テスト環境へ移動するコマンド
cd /home/acount-name/www/staging

# テスト環境の中身を確認するコマンド
ls -la 

テスト環境のディレクトリに移動したら、以下のコマンドを入力して、Gitの初期化を行います。

WindowsPowerShell
# Gitリポジトリを作成するためのコマンド
git init

# テスト環境の中身を確認するコマンド
ls -la 

# .git というディレクトリができていたら成功です。

2-2. リモートリポジトリの設定

WindowsPowerShell
# Gitのリモートリポジトリを設定するコマンド
git remote add origin git@github.com:git-acount-name/sample-project.git

git@github.com:git-acount-name/sample-project.gitは、自分のGitHubのリポジトリからコピーしてきてください。

3. テスト環境でプッシュします。

3-1. コミットとプッシュ

テスト環境でコミットを行います。以下のコマンドで全てのファイルをステージングします。

WindowsPowerShell
# テスト環境の全てのファイルをステージングします。
git add .

コミットを行います。

WindowsPowerShell
# ステージングしたファイルたちをコミットし、コミットメッセージを付けるコマンド
git commit -m "First Commit"

リモートリポジトリにプッシュします。

コミットを行います。

WindowsPowerShell
# ステージングしたファイル、コミットメッセージをプッシュするコマンド
git push -u origin master

3-2. GitHubで確認

テスト環境でのコミットが正常に行われたかを確認します。GitHubのリポジトリページで、先ほどプッシュしたコミットが反映されていることを確認してください。

4.本番環境でクローンします。

本番環境でもGitを使えるようにします。

4-1. Gitの初期化

WindowsPowerShell
# 本番環境へ移動するコマンド
cd /home/acount-name/www/production

# テスト環境の中身を確認するコマンド
ls -la 

本番環境のディレクトリでもGitリポジトリを作成します。

WindowsPowerShell
# Gitリポジトリを作成するためのコマンド
git init

# テスト環境の中身を確認するコマンド
ls -la 

# .git というディレクトリができていたら成功です。

4-2. リモートリポジトリの設定

WindowsPowerShell
# Gitのリモートリポジトリを設定するコマンド
git remote add origin git@github.com:git-acount-name/sample-project.git

git@github.com:git-acount-name/sample-project.gitは、テスト環境で設定したものと同じものです。

4-3. 本番環境でのクローン

最後に、本番環境でのクローン作業を行います。以下のコマンドで本番環境にリポジトリをクローンしてください。

WindowsPowerShell
# Gitのリモートリポジトリから
git clone git@github.com:username/example.git

Discussion