共有ホスティングで自分のSVN

svn

私たちは何とか友人と一緒に、スタートアップを立ち上げることはスタートアップではないが、サイトは魂のためにあると決めました。 私たちは決めた-それが起動されます。 予算...そして、さらに2杯のビールを買わないで、発売します。 一般的に、ドメインおよびバリューホストでの共有ホスティングのためのお金。 だから私たちは「大人」であり、すべてを徹底的に行うことに慣れているので、バージョン管理システムが必要です。 valuehostで異なるログインを持つ複数の開発者にアクセスを分散させる可能性があるSubversionリポジトリを上げることが決定されました。 しかし、私たちはすべての制限でホスティングを共有しています、どうすればいいですか?







前提条件:



それらの2つ(一般的な場合)のみがあります:ホストサーバーへのsshアクセスの存在、およびキーによってこのSSHにアクセスする機能。

ところで、ホスティング事業者はvaluehost.ruである必要はありません。記事のvaluehostの例を参照して、状況に翻訳してください。意味はどこでも同じです。



Subversionがインストールされているかどうかを確認します。





[megauser@megaserver ~]$ svn

-bash: svn: command not found

[megauser@megaserver ~]$ svnserve

-bash: svnserve: command not found








インストールされていない場合は、アカウントにインストールしてください。

あなたの場合、Subversionが既にインストールされている場合、すべてのステップをスキップしてください

ポイント4「リポジトリの設定とリポジトリへのアクセス」。



Subversionをインストールする



まず、ソースからプログラムをコンパイルできるかどうかを確認します。



[megauser@megaserver ~]$ make

-bash: make: command not found

[megauser@megaserver ~]$ gcc

-bash: gcc: command not found









可能性がないため、別のマシンでプログラムを収集する必要があります

ホスティング事業者と同じOSの場合:



[megauser@megaserver ~]$ uname -srm

FreeBSD 6.3-RELEASE i386








アクセスできるOSと同じOSのマシンを見つけるか、たとえば、

必要なOSをホームコンピューターに配置します。 これが必要です

インストールするディレクトリへの書き込みアクセス権を持っているマシン

ホストサーバー上のSubversion。 この例では、ディレクトリ/ pub / home / megauser / myrootでした

すべての機会にマニュアルのように、トリックなしで転覆を収集しました

単純なsvnserveサーバーのみ、Apacheでsvn統合なし:



wget subversion.tigris.org/downloads/subversion-1.5.1.tar.gz

wget subversion.tigris.org/downloads/subversion-deps-1.5.1.tar.gz

tar xvzf subversion-1.5.1.tar.gz

tar xvzf subversion-deps-1.5.1.tar.gz

cd subversion-1.5.1

./configure --prefix=/pub/home/megauser/myroot --enable-all-static --disable-mod-activation --without-apache --without-apxs --without-serf --without-berkeley-db --with-ssl

make

make install









(注:現時点では、subversionの最新バージョンは1.5.4ですが、

1.5.1アクションしかなかったので、例はそれに基づいています。1.5.4を取ることができると思います

変更はありませんが、念のため、CHANGELOGをお読みください)



それだけです、SVNは私たちにとって正しい方法で組み立てられ、インストールされます。ホストサーバーでそれを取得します。



tar cvzf ~/builded-svn.tgz /pub/home/megauser/myroot/







次に、ホストのSSHコンソールに移動します。



[megauser@megaserver ~]$ wget your.server/builded-svn.tgz

( , scp)

[megauser@megaserver ~]$ tar xvzf builded-svn.tgz








すべて、SVNがインストールされ、/ pub / home / megauser / myroot / binに追加するだけです。

PATH環境変数。これにより、完全なパスを指定せずにsvnコマンドを実行できます。

彼女への道。 〜/ .bashrcまたは〜/ .profileまたはファイルと同じ意味の行に書き込みます



export PATH=~/myroot/bin:${PATH}







ログインして、新しくインストールしたSVNの状態を確認します。



[megauser@megaserver ~]$ svn

Type 'svn help' for usage.

[megauser@megaserver ~]$ svnserve

You must specify exactly one of -d, -i, -t or -X.

Type 'svnserve --help' for usage.








答えが異なる場合は、すべてがうまくいくまで状況に応じて行動します。 これでインストールは完了です。



リポジトリを構成してアクセスする





まず、リポジトリを作成します。



svnadmin create /pub/home/megauser/myrepo







最初のプロジェクト構造をリポジトリにアップロードする方法、必要なフックを構成する方法などについては説明しません。

これにはsvnbook.red-bean.com/nightly/ru/index.htmlがあります



次に、リポジトリへのsvn + sshプロトコル経由のキーアクセスを設定します。

(valuehostサーバーでは、Linuxシステムでそれぞれ発生する「openssh」ではなく、「ssh.com」バリアントにSSHがありました。それぞれの例は「ssh.com」バリアントであり、

適切なマニュアルを使用すると、Linuxでも同じことが簡単に行えます)。



リポジトリの将来のユーザーの作業コンピューターで、キーペアを作成し、パブリックペアを「ssh.com」形式で保存し、サーバーにアップロードします。

〜/ .ssh2 / id_rsa_ <virtual_user_name> .pubのホスティング事業者は、sshが怖がらず、このキーを持つユーザーを理由で拒否しないように、ファイル許可0600を与えます。

キーファイルの高可用性。



次に、同じアクセス権を持つファイル〜/ .ssh2 / authorization-0600を作成します。ファイルに次のように記述します。



Key id_rsa_user1.pub

Options command="/pub/home/megauser/myroot/bin/svnserve -t -r /pub/home/megauser/myrepo --tunnel-user=user1", no-port-forwarding, no-x11-forwarding, no-agent-forwarding, no-pty



Key id_rsa_user2.pub

Options command="/pub/home/megauser/myroot/bin/svnserve -t -r /pub/home/megauser/myrepo --tunnel-user=user2", no-port-forwarding, no-x11-forwarding, no-agent-forwarding, no-pty







つまり、svn-userごとに2行です。 この特定の例では、2つのSVNユーザー、user1とuser2を作成しました。

リポジトリへのコミットの作成者として使用されるのはホストサーバーへの元のログインではなく、user1とuser2であることに注意してください。

実際に必要なもの。



検証のために、ホストサーバーへの通常のアクセスセッションと同じパラメーターを使用して、PuTTY(または別のsshクライアント)で作業コンピューター上でセッションを作成します。

ただし、svn用に最近生成した秘密キーと、〜/ .ssh2 / id_rsa_.pubに配置した公開部分を使用します。

このセッションを実行します。すべてが正常であれば、次のように表示されます。



( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )







これは、すべてが正常であることを意味し、Tortoiseまたは他のSVNクライアントを使用して、svn + sshに接続できます://server.of.your.hoster.ru/

必要な秘密鍵を使用します。



心配を減らすために、ここにカタログ / pub / home / megauser / myroot /のアーカイブがあります

SVNに加えて、VIM、MC、rsync、および単純なリリーススクリプトもあり、これらを使用してサーバーの戦闘場所に変更をアップロードします。

ここに贈り物があります、あなたの健康を使用してください:)



ps:「なぜこれが必要なのか、そこにあるのか...」という質問は尋ねる価値はありません。 そうしたかった



All Articles