UbuntuでHTTPを使用してGitサーバーを構成する

Configure Git Server With Http Ubuntu



Gitリポジトリをプライベートに操作するためにGitHTTPサーバーをセットアップする場合は、この記事が役に立ちます。この記事では、ApacheHTTPサーバーを使用してUbuntuでGitSmartHTTPサーバーを構成する方法を紹介します。それでは、始めましょう。

GitおよびApacheパッケージは、Ubuntuの公式パッケージリポジトリで入手できます。そのため、APTパッケージマネージャーを使用して簡単にインストールできます。







まず、次のコマンドを使用してAPTパッケージリポジトリキャッシュを更新します。



$sudoaptアップデート



APTパッケージリポジトリキャッシュを更新する必要があります。





次に、次のコマンドを使用してGitとApacheをインストールします。



$sudoaptインストール 行くapache2 apache2-utils

今、を押します 次にを押します インストールを確認します。

GitとApacheをインストールする必要があります。

Git用のApacheHTTPサーバーの構成:

ここで、Apacheを有効にします mod_envmod_cgimod_aliasmod_rewrite 次のコマンドを使用するモジュール:

$sudoa2enmodenvcgiエイリアスリライト

必要なApacheモジュールを有効にする必要があります。

次に、新しいディレクトリを作成します / var / www / git 次のコマンドですべてのGitリポジトリを保持します。

$sudo mkdir /どこ/www/行く

次に、新しいApacheサイト構成を作成します /etc/apache2/sites-available/git.conf 次のコマンドを使用したGitの場合:

$sudo ナノ /NS/apache2/サイト-利用可能/git.conf

ここで、構成ファイルに次の行を入力します。

<VirtualHost*80>>
ServerAdminウェブマスター@ローカルホスト

SetEnv GIT_PROJECT_ROOT<強い> /どこ/www/行く強い>>
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias/行く/ /usr/lib/git-core/git-http-バックエンド/

エイリアス/行く /どこ/www/行く

<ディレクトリ/usr/lib/git-core>>
オプション+ ExecCGI-MultiViews+ SymLinksIfOwnerMatch
AllowOverrideなし
付与されたすべてを要求する
ディレクトリ>>

DocumentRoot/どこ/www/html

<ディレクトリ/どこ/www>>
オプションインデックスFollowSymLinksMultiViews
AllowOverrideなし
付与されたすべてを要求する
ディレクトリ>>


エラーログ$ {APACHE_LOG_DIR}/エラーログ
LogLevel警告
CustomLog$ {APACHE_LOG_DIR}/access.logの組み合わせ
VirtualHost>>

最終的な構成ファイルは次のようになります。次に、を押して構成ファイルを保存します + NS に続く

次に、次のコマンドを使用して、デフォルトのApacheサイト構成を無効にします。

$sudoa2dissite 000-default.conf

デフォルトのサイト構成は無効にする必要があります。

次に、次のコマンドを使用してGitサイト構成を有効にします。

$sudoa2ensite git.conf

Gitサイトの構成を有効にする必要があります。

ここで、次のコマンドを使用してApacheHTTPサーバーを再起動します。

$sudosystemctl restart apache2

Apache HTTPサーバーを介してアクセスできる新しいGitリポジトリをブートストラップするには、いくつかのコマンドを実行する必要があります。新しいGitリポジトリを作成するためだけに、同じことを何度も繰り返したくはありません。そこで、そのためのシェルスクリプトを書くことにしました。

まず、新しいシェルスクリプトを作成します /usr/local/bin/git-create-repo.sh 次のコマンドを使用します。

$sudo ナノ /usr/ローカル/午前/git-create-repo.sh

次に、シェルスクリプトに次のコード行を入力します。

#!/ bin / bash

GIT_DIR='/ var / www / git'
REPO_NAME=$ 1

mkdir -NS '$ {GIT_DIR}/$ {REPO_NAME}。行く'
CD '$ {GIT_DIR}/$ {REPO_NAME}。行く'

git init - ただ &> /開発者/ヌル
接するgit-daemon-export-ok
cpフック/post-update.sampleフック/更新後
git confighttp.receivepackNS
git update-server-info
chown -Rfwww-data:www-data'$ {GIT_DIR}/$ {REPO_NAME}。行く'
捨てた 「Gitリポジトリ」$ {REPO_NAME}'で作成された$ {GIT_DIR}/$ {REPO_NAME}。行く'

これらの行を入力すると、シェルスクリプトは次のようになります。次に、を押してファイルを保存します + NS に続く

次に、次のコマンドを使用して、シェルスクリプトに実行権限を追加します。

$sudo chmod+ x/usr/ローカル/午前/git-create-repo.sh

次に、新しいGitリポジトリを作成します テスト Gitプロジェクトルートで / var / www / git を使用して git-create-repo.sh 次のようなシェルスクリプト:

$sudogit-create-repo.shテスト

Gitリポジトリ テスト 作成する必要があります。

Gitリポジトリにアクセスするには、GitHTTPサーバーのIPアドレスが必要です。

$ip

ご覧のとおり、私の場合のIPアドレスは 192.168.21.208 。それはあなたにとって異なるでしょう。これからあなたのものと交換してください。

今、あなたはクローンを作ることができます テスト Gitリポジトリは次のとおりです。

$git clonehttp://192.168.21.208/行く/test.go

Gitリポジトリ テスト クローンを作成する必要があります。

それでは、新しいコミットをに追加しましょう テスト Gitリポジトリ。

$CDテスト/
$捨てた 'こんにちは世界' >>こんにちは
$git add
$git commit -NS 「初期コミット」

次に、変更をにアップロードします テスト サーバー上のGitリポジトリは次のとおりです。

$git push

ご覧のとおり、変更は問題なくアップロードされます。

ユーザー認証の構成:

このセクションでは、サーバーのGitリポジトリでユーザー認証を構成する方法を説明します。

まず、編集します git.conf 次のようなサイト構成ファイル:

$sudo ナノ /NS/apache2/サイト-利用可能/git.conf

ここで、構成ファイルに次のセクションを追加します。

<LocationMatch/行く/*。行く>>
AuthType Basic
AuthName「Git検証」
AuthUserFile/NS/apache2/git.passwd
有効なユーザーが必要
LocationMatch>>

ここ、 /etc/apache2/git.passwd ユーザーデータベースファイルです。

最終的な構成ファイルは次のようになります。次に、を押してファイルを保存します + NS に続く

次に、新しいユーザーデータベースファイルを作成します /etc/apache2/git.passwd 新しいユーザーを追加します(たとえば、 ショボン )次のようにデータベースファイルに:

$sudohtpasswd-NS /NS/apache2/git.passwd shovon

次に、新しいユーザーの新しいパスワードを入力して、を押します。

同じパスワードを再入力して、を押します

ユーザーとパスワードのペアをデータベースに追加する必要があります。

ここで、次のコマンドを使用してApacheHTTPサーバーを再起動します。

$sudosystemctl restart apache2

さて、あなたがクローンを作ろうとすると テスト 下のスクリーンショットにあるように、リポジトリを再度認証するように求められます。

ユーザー名とパスワードを使用して認証すると、Gitリポジトリにアクセスできるようになります。

Gitリポジトリからプッシュまたはプルしようとした場合でも、ユーザー名とパスワードの入力を求められます。

認証すると、プッシュ/プルが機能します。

Gitリポジトリごとに異なるユーザーデータベースを設定することもできます。これは、多くの人が同じGitリポジトリで一緒に作業しているプロジェクトに役立つ可能性があります。

Gitリポジトリごとの認証を設定するには、まず、 git.conf 次のようなサイト構成ファイル:

$sudo ナノ /NS/apache2/サイト-利用可能/git.conf

ここで、構成ファイルに次の行を追加します。

<位置/行く/test.go>>
AuthType Basic
AuthName「Git検証」
AuthUserFile/NS/apache2/git.test.passwd
有効なユーザーが必要
位置>>

<位置/行く/test2.git>>
AuthType Basic
AuthName「Git検証」
AuthUserFile/NS/apache2/git.test2.passwd
有効なユーザーが必要
位置>>

Gitリポジトリごとに テストtest2 、 に セクションが定義されています。 Gitリポジトリごとに異なるユーザーデータベースファイルが使用されます。

最終的な構成ファイルは次のようになります。次に、を押して構成ファイルを保存します + NS に続く

これで、必要なユーザーデータベースを次のように作成できます。

$sudohtpasswd-NS /NS/apache2/git.test.passwdユーザー名
$sudohtpasswd-NS /NS/apache2/git.test2.passwdユーザー名

完了したら、次のコマンドを使用してApacheHTTPサーバーを再起動します。

$sudosystemctl restart apache2

これで、各Gitリポジトリには、それにアクセスできる独自のユーザーセットが必要になります。

つまり、UbuntuでApacheHTTPサーバーを使用してGitサーバーを構成する方法です。この記事を読んでくれてありがとう。