DebianでのSCM-Managerベースのリポジトリサーバーの設定

リポジトリは、集中管理および監視の可能性なしに、異なる設定を持つ異なるサーバーに散在しているという事実に直面しています。 次の要件を持つ1つの保管場所を作成するというアイデアがありました。


Googleを研究し、さまざまなソフトウェアのインストールをテストした結果、SCMマネージャーに至り、すべての要件をすぐに実現できました。

サービスの実装はDebian 8.3 x64で実行されました。

カットの下で、インストールおよび構成プロセス:

1. MercurialおよびSCM-Managerのインストール


Mercurialをインストールして追加します。 パッケージ:

sudo apt-get install mercurial ca-certificates default-jre 

SCM-Managerをインストールするディレクトリに移動します。

 cd ... 

公式Webサイトから最新バージョンをダウンロードします

 sudo wget https://maven.scm-manager.org/nexus/content/repositories/releases/sonia/scm//scm-server/1.46/scm-server-1.46-app.tar.gz 

解凍します:

 sudo tar -xvf scm-server-1.46-app.tar.gz 

ダウンロードしたアーカイブを削除します。

 sudo rm scm-server-1.46-app.tar.gz 

SCM-Managerを起動します。

 sudo /opt/scm-server/bin/scm-server start 

この段階で、サービスは完全に機能し、基本構成で動作する準備ができています。 Webインターフェースは、 localhost :8080で入手できます。 デフォルトの管理者ユーザー名とパスワードはscmadminです。 しかし、セットアップを続けましょう。

2. SCM-Managerを自動ロードします


ファイル/etc/init.d/scmserverを作成します。

 sudo mcedit /etc/init.d/scmserver 

作成されたファイルに次を入力します。

 #!/bin/sh ### BEGIN INIT INFO # Provides: sscmserver # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Seapine Surround SCM Server # Description: SCM Server init file ### END INIT INFO SCM_SERVER="<b><i>*path_to_install_directory*</i></b>/scm-server/bin/scm-server" start() { "$SCM_SERVER" start } stop() { "$SCM_SERVER" stop } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|restart}" exit 2 esac 

ファイルが実行可能になるように権利を修正しましょう:

 sudo chmod 755 /etc/init.d/scmserver 

スタートアップに追加:

 sudo update-rc.d scmserver defaults 

3.サービスを別のポートに転送する


デフォルトでは、Webベースのインターフェースはポート8080のhttpを介してアクセスできます。変更するには、次の手順を実行する必要があります。

serrver-config.xmlの編集:

 sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml 

セクションを探しています:

 <set name="port"> <systemproperty name="jetty.port" default="<b>8080</b>"> </systemproperty></set> 

必要なものに変更し、ファイルを保存してサービスをリロードします。

 sudo /etc/init.d/scmserver restart 

4. SSLを追加する


設定でディレクトリに行きましょう:

 cd /***path_to_install_directory***/scm-server/conf/ 

1年間の証明書を生成します。

 sudo keytool -genkey -alias scm -validity 365 -keyalg RSA -keystore keystore.jks 

構成を編集します。

 sudo mcedit /***path_to_install_directory***/scm-server/conf/server-config.xml 

SSLコネクターの行のコメントを外し、キーストアの作成時に入力したパスワード(* password *の代わりに)、SSLをリッスンするポート(「ポート」)、およびキーストアの場所を指定します。

 <Call name="addConnector"> <Arg> <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> <Arg> <!-- Exclude SSLv3 to avoid POODLE vulnerability. See https://groups.google.com/d/msg/scmmanager/sX_Ydy-wAPA/-Dvs5i7RHtQJ --> <New class="org.eclipse.jetty.http.ssl.SslContextFactory"> <Set name="excludeProtocols"> <Array type="java.lang.String"> <Item>SSLv2Hello</Item> <Item>SSLv3</Item> </Array> </Set> </New> </Arg> <Set name="Port"><b>443</b></Set> <Set name="maxIdleTime">30000</Set> <Set name="keystore"><SystemProperty name="basedir" default="." />/conf/keystore.jks</Set> <Set name="password">***password***</Set> <Set name="keyPassword"><b>***password***</Set> <Set name="truststore"><SystemProperty name="basedir" default="." />/conf/keystore.jks</Set> <Set name="trustPassword">***password***</Set> </New> </Arg> </Call> 

必要に応じて指紋を確認します。

 keytool -list -keystore keystore.jks 

SSLを構成するプロセスで、SSLをプッシュするときに、サーバーが頑固にSSLを呪い、プッシュしたくないという問題に遭遇しました。問題は、Python 2.7.9以降のバージョンで自己署名証明書の禁止がデフォルトでオンになっていたことです。 このオプションを無効にするには、ファイルを編集します。

 sudo mcedit /usr/lib/python2.7/ssl.py 

_create_default_https_context = create_default_context_create_default_https_context = _create_unverified_contextに変更します。

サービスをオーバーロードして、変更を適用します。

 sudo /etc/init.d/scmserver restart 

これにより、コンソールから構成が完了し、Webベースのインターフェイスから構成が続行されます。

5. Webインターフェースを介したSCM-Managerの構成


localhost Webインターフェイス8080に移動します。 匿名アクセスを削除し、組み込みの管理者のパスワードを変更します。 Webインターフェースで「セキュリティ」-「ユーザー」に移動します->ユーザー「匿名」を削除します->ユーザー「scmadmin」のパスワードを変更します。

ADを介した認証、メールの送信、プッシュ通知の送信のためのプラグインのインストール。 Webインターフェースで「構成」-「プラグイン」に移動します。

AD経由で認証するには、「scm-auth-ldap-plugin」をインストールします
メールを送信するには、「scm-mail-plugin」をインストールします
プッシュ通知の場合、「scm-notify-plugin」をインストールします

Webインターフェイス経由でリポジトリのアクティビティを表示するためのプラグインをインストールします。

Webインターフェースで「構成」-「プラグイン」に移動します
プラグインをインストールします:“ scm-activity-plugin”

プラグインのインストールを完了するには、サービスをリロードします。

 sudo /etc/init.d/scmserver restart 

LDAP認証プラグインの構成。 Webベースのインターフェースで、「構成」-「一般」-「LDAP認証」セクションに移動します。

プロファイル: 「ActiveDirectory」
ベースDN:認証のためにユーザーとOUを許可します
接続DN: ADでSCM-Managerを承認するユーザー
接続パスワード: (ADのSCM-Managerの承認のためのユーザーパスワード)
ホストURL: IPおよびドメインコントローラーポート
Nester広告グループを有効にする:いいえ
StartTLSを使用: no(ADへの接続時に暗号化を有効/無効にします)
有効:はい(プラグインを有効/無効にする)

設定を行った後、「保存」ボタンをクリックして保存します。 設定後、「接続のテスト」ボタンを使用して設定をテストできます。 これで、指定されたOUのすべてのドメインユーザーがログインできます。 しかし同時に、デフォルトでは彼はどこにも権限を持たず、リポジトリを見ることができません。 管理者は、リポジトリのアクセスリストまたは必要なリポジトリへのアクセス権が与えられているグループに追加して、ユーザーにアクセス権を付与する必要があります。

メールを送信するためのプラグイン構成:Webベースのインターフェースで、「構成」-「一般」-「メール構成」セクションに移動します。

次のオプションを設定します。

ホスト: SMTPサーバーアドレス
ポート: SMTPサーバーのポート
ユーザー SMTPサーバーでの承認のためのユーザー
パスワード: SMTPサーバーでの承認のためのユーザーパスワード
差出人:手紙の送信元
トランスポート戦略: SMTP_PLAIN(オープンパスワードを渡す)
件名プレフィックス:(件名行の先頭に挿入されます)

「Test Configuration」ボタンで設定をテストできます。

サーバー上のリポジトリの場所を変更します。Webインターフェースで、「Config」-「Repository Types」に移動します。

SVN、Mercurial、Gitのセクションでは、「リポジトリディレクトリ」の行にパスを記述します。

リポジトリの作成:Webインターフェイスで[メイン]-[リポジトリ]に移動し、[追加]をクリックします。 「名前」フィールドでリポジトリの名前を指定し、「タイプ」フィールドでリポジトリのタイプを選択します。

リポジトリの電子メールプッシュ通知の構成:Webベースのインターフェイスで「メイン」-「リポジトリ」に移動し、電子メールプッシュ通知を構成するリポジトリを選択します。ブックマークが下に表示され、「通知」タブに移動して入力します。

リポジトリ連絡先に通知:いいえ
作成者を差出人アドレスとして使用 :いいえ
プッシュごとのメール:いいえ
最大差分行: 1000(リポジトリファイルに加えられた変更が表示されるレターの行の最大数)

[追加]ボタンをクリックして、通知の送信先の住所を追加します。 [OK]ボタンをクリックして、変更を保存します。

これにより、指定された条件に対するサーバーの構成が完了し、サービスを使用する準備が整います。 SCM-Serverでは、1つの制限付きでリポジトリをインポートできます。許可が必要な場所からリポジトリをインポートすることはできません。

Source: https://habr.com/ru/post/J279505/


All Articles