私は、専用の Linux ベースの Plesk サーバーを持つクライアントと仕事をしています。Web サイト ( としますexample.com
) はライブであり、通常、大幅な変更が必要になるため、ライブで直接動作させることは非常に困難です。サーバーには SVN はなく、FTP のみでした。
サブドメインを作成しstaging.example.com
、FTP 経由でそこにファイルを配置して、クライアントが変更内容をライブにする前に確認できるようにしました。言うまでもなく、各タスクに関連するすべてのファイルを覚えておき、ステージングでアップロードしてテストし、その後、ファイルが何であったかを思い出してライブ サーバーで再度実行するのは非常に面倒です。私はこれを完璧に実行しようとして、何度か「うまく失敗」しました。
これから SVN を使いたいと思います。SSH (フルアクセス権を持っています) とリポジトリ ( ) を使用して SVN をインストールできました/var/www/vhosts/example.com/svn/repos
が、それ以上の設定が不明瞭なようです。セットアップは次のようになります。
- SVN サーバー (実行中
svn.example.com
- すでに完了) - 'master' コピー at
staging.example.com
、 at/var/www/vhosts/example.com/staging
('master' が SVN で特別な意味を持つかどうかはわかりません。メイン コピーを意味します) - の作業ディレクトリ
www.example.com
。svn/var/www/vhosts/example.com/httpdocs
update を実行して変更を反映できます。 - 実際の作業を行うコンピューター上の別の作業ディレクトリ。
私の計画は、自分のコンピューターで作業を行い、それをコミットしてステージングでテストし、すべてが問題なければライブ サイトから更新して変更をライブにすることです。
これを実現する方法を教えてください。また、私はプログラマーであり、システム管理者ではないため、私の計画には問題がある可能性があります。そう思う場合は、代替の解決策を示してください。私は長い間 SVN を使用してきましたが、それはチェックアウト、コミット、更新、解決のみで、セットアップはありませんでした。これが私が今助けを必要としている理由です。
答え1
最も簡単な解決策は、おそらく 3 か所のコード (トランクのみ、ブランチなどなし) をチェックアウトすることです。その後は、適切なタイミングで適切なフォルダーで「svn up」を実行するだけです。
したがって、次のことを試してください (コメントで各ビットについて説明します)。
#SSH to the server as a user who can modify /var/www/vhosts/...
...
cd /var/www/vhosts/ # Since this is a live server, we need to make the
# changeover fast, so work in a new folder.
mkdir example.com_svn # Make the new folder
cd example.com_svn
svn co http://example.com/svn/repos/website staging # Check out the repository
# into a new folder called
# "staging".(Change "website"
# to your folder name)
svn co http://example.com/svn/repos httpdocs # Ditto, but "httpdocs"
# At this point you need to make the file permissions and ownership the same as
# the folders within the /var/www/vhosts/example.com.
# Once you've done that continue...
cd ..
mkdir example.com_old
mv example.com/staging example.com_old/. && mv example.com_svn/staging example.com/.
# This will make the svn version of the staging site live. Check that it works
# then do the same with the httpdocs folders.
もっと複雑な解決策としては、ステージング用とライブ用の 2 つのコード ブランチを使用することです。しかし、この場合はやりすぎでしょう...
答え2
ed の回答の拡張版
序文
すべてを正しく動作させ、内部のプロセスを理解するためには、Subversionの管理スキルを習得する必要があります。
顔
あなたは〜を持つ必要があります:
- 1つのリポジトリ
- リポジトリに少なくとも 2 つのブランチ (fe
STAGING
とLIVE
) - ビジネス ロジック「STAGE または LIVE ターゲットに公開」が組み込まれたコミット後フック
34 つの作業コピー: DEV (ローカルの作業場所、STAGING ブランチにバインド)、MERGE (ローカルの作業場所、LIVE ブランチにバインド)、STAGING (STAGING サーバー上、STAGING ブランチにバインド)、LIVE (LIVE サーバー上、LIVE ブランチにバインド)- STAGINGとLIVEにSVNクライアントをインストール
ワークフロー:
- DEVでコードを編集する
- コミット - コミット後のフックはステージング上の WC を更新します
- ステージングでの変更のテスト
- STAGING ブランチから MERGE WC (テスト済み) の変更にマージする /STAGING ブランチから LIVE ブランチに効果的にマージする/
- LIVE ブランチの変更をコミット - コミット後のフックは、マージされた変更で LIVE 上の WC を更新します (フックは、コミット メッセージ内のキーワード
svnlook log | grep KEYWORD
または LIVE ブランチの変更によって、このようなタイプのコミットを検出できますsvnlook dirs-changed
)
注記:
サーバー上のWCの代わりにssh & svn up
FTPやscpを使用することができます - Subversionは少なくなりますが、サイトの更新で頭を悩ませることになります(削除されたファイルはないFTP|scp によって削除され、共通のプロセスはより複雑に思えます (私にとって)