質問 1:リモート サーバー上のユーザーを参照しています。
質問 2:これは 2 つのシナリオによって異なります。 1. リモート サーバーにプッシュするローカル ユーザーの公開鍵を追加する必要があります。2. 別のサーバーにデプロイするために ssh が必要な場合は、post-receive フックを実行するローカル ユーザーに公開鍵を追加する必要があります。ほとんどの場合、問題になるのは 1 つだけで、リモート サーバーがリモート git リポジトリと www サーバーを格納するため、2 は問題ではありません。
これは、linux/unix 環境で、公開鍵を authorized_keys ファイルに追加することを意味します。このファイルは通常、/home/$USER/.ssh/authorized_keys にあります。authorized_keys ファイルは、ユーザーの known_hosts ファイルと同じディレクトリにあります。
質問 3:リモート git リポジトリのセットアップ方法を説明しています。ローカル リポジトリと同じパスである必要はありません。
OK - ここで実際に何が起こっているのかを明確にします。このチュートリアルでは、プッシュされるたびに jekyll インストールをデプロイするリモート リポジトリをセットアップする方法を説明しています。
これは、github リポジトリがある場合、そこにサーバー側のフックをセットアップできないことを意味します。代わりに、リモート サーバーに新しいリモートをセットアップします。したがって、サーバーにログインし (通常は ssh を使用)、実行pwd
してフル パスを取得するか、環境変数に設定するとします。
$DIR=`pwd`
これで、このサーバーにベア リポジトリを作成できます。
git init --bare $DIR/<SOMEDIRNAME>.git
これで、サーバーにリモートのベア git リポジトリができました。次に、プッシュの受信時に Jekyll サイトをデプロイできるようにするフックを追加する必要があります。あなたがリストしたサイトの展開はかなり単純ですが、基本的には _site dir を提供される html ページにするだけです。これを行うにはいくつかの方法があります。ユーザーをできるだけ混乱させずに行うことをお勧めします。は、そのようなことを行うサンプル スクリプトです。
#!/bin/bash
# Assuming a directory structure for www:
# $www_root/releases
# $www_root/shared
# $www_root/current
# all releases go in releases dir as timestamps dirs
# any logs or other shared items go in shared dir - shared/logs
# current is a symlink to latest release
unset GIT_DIR
WWW_ROOT=/PATH/TO/WWW
REPO_PATH=/PATH/TO/REPO
REPO_BRANCH=master
SITE_DIR=/PATH/TO/_SITE/DIR/IN/REPO
DATE=$(date +"%Y%m%d%H%M")
# get code
if [ ! -d $WWW_ROOT/shared/git_maint ]; then
mkdir -p $WWW_ROOT/shared/git_maint
cd $WWW_ROOT/shared/git_maint
git clone $REPO_PATH $WWW_ROOT/shared/git_maint
git checkout master
else
cd $WWW_ROOT/shared/git_maint
git pull
git checkout master
fi
# do deploy
if [ ! -d $WWW_ROOT/releases/$DATE ]; then mkdir $WWW_ROOT/releases/$DATE; fi
cp -ar $WWW_ROOT/shared/git_maint/$SITE_DIR $WWW_ROOT/releases/$DATE
ln -snf $WWW_ROOT/releases/$DATE $WWW_ROOT/current
exit 0
そのようなものは良い展開になります。このスクリプトをリモート サーバーのベア リポジトリ フック/post-receive ファイルに保存すると、リポジトリがプッシュされるたびにスクリプトが実行されます。実行可能にすることを忘れないでください: chmod 755hooks/post-receive
したがって、この新しいリモートを git リポジトリに追加すると、次のようになります。
git remote add DEPLOY_PROD user@remote.server.com:/path/to/bare/repo
次にgit push DEPLOY_PROD
、それがリモートにプッシュされ、リモート リポジトリが post-receive フックを起動し、ベア リポジトリをメンテナンス ディレクトリにコピーします。このディレクトリは、ほぼいつでも吹き飛ばすことができます。このディレクトリは、サイト ディレクトリをリリース ディレクトリに cp するために使用され、メイン ディレクトリにリンクされます。
もちろん、これはすべてやり過ぎである可能性が高く、ローカル ホストから実行するデプロイ スクリプトを作成するだけで、ssh 経由でこれらすべてを実行できます。
問題は、この方法論ではサーバー側のフックを github から直接実行できないため、回避する必要があることです。展開戦略としてカピストラーノをチェックすることをお勧めします- current/releases/shared ディレクトリと git_maint ディレクトリはスキーマから取得され、うまく機能します。
ここで何か助けが必要な場合はお知らせください。私は展開および自動化された展開戦略の開発に多くの経験を持っているため、状況によって状況が異なります.