Apache 2でDebianサーバーにMercurialリポジトリをインストールする

彼は自分のブログで、debianを搭載したサーバー上で独自の水銀リポジトリをapache2で作成し、Web上で表示する方法に関する詳細なマニュアルを書きました。 おそらくubuntuに適合します。



可能であれば、ブログとここの両方を同時に更新しようとしますが、ブログが優先されます。 ブログのマークダウンで、スパースされていない<code>ブロックをすぐに謝罪します。このhtmlでは、パーサーは生成されたhtmlを理解したくないので、<code>と</ code>に注意を払いません







タスク:apache2がインストールされたdebianサーバーでmercurialリポジトリを作成および設定します。



とても簡単ですが、いくつかの微妙な点があります。 すべての手順は、debian lennyと、場合によってはubuntuに有効です(バージョンはわかりません)。 私たちのリポジトリは hg.example.com/public



hg.example.com/public





いくつかの規則









インストール手順





  1. mercurial



    をインストールします。



      <code>#aptitude install mercurial
     </ code> 
  2. システムに別のユーザーを作成します。リポジトリが属するのはこのユーザーです。 ユーザーのホームディレクトリは/home/hg



    ます。



      <code>#useradd hg
     #mkdir / home / hg
     #chown hg:hg / home / hg
     </ code> 
  3. このユーザーでログインします( sudo su - hg



    )。 リポジトリー用のディレクトリーを作成します(この例では/home/hg/repo







      <code> $ mkdir / home / hg / repo
     </ code> 




    DocumentRoot仮想ホストのディレクトリ:



      <code> $ mkdir / home / hg / web
     </ code> 
  4. リポジトリを直接作成します。



      <code> $ cd repo
     $ hg init
     </ code> 




    リポジトリが作成されました。次に、http経由でリポジトリへのアクセスを整理するようにApacheを構成する必要があります。
  5. apache2とsuexecモジュールをインストールします。



      <code>#aptitude install apache2 apache2-suexec
     #a2enmod suexec
     </ code> 
  6. hg.example.com



    ドメインの仮想ホストをhg.example.com



    ます。 これを行うには、 /etc/apache2/sites-available



    ディレクトリに仮想ホストのパラメーターの説明を含むファイルを作成します。



      <code>#vi /etc/apache2/sites-available/hg.regolit.com
     </ code> 




    およそ次の内容のファイルを作成します。



      <code> NameVirtualHost *:80
     <VirtualHost *:80>
         ServerName hg.example.com
         DocumentRoot / home / hg / web
         SuexecUserGroup hg hg
    
        エイリアス/パブリック/ var / www / hg-public
         <ディレクトリ "/ var / www / hg-public">
            オプションExecCGI
             DirectoryIndex hgweb.cgi
             AddHandler cgi-script .cgi
            注文許可、拒否
            すべてから許可
    
             AuthUserFile /home/hg/.hg.htpasswd
             AuthGroupFile / dev / null
             AuthName "パブリックリポジトリ"
             AuthType Basic
    
             <GETExceptを除く>
                有効なユーザーが必要
             </ LimitExcept>
         </ Directory>
    
     </ VirtualHost>
     </ code> 




    新しく作成した仮想ホストをオンにして、Apacheを再起動します。



      <code>#a2ensite hg.example.com
     #/etc/init.d/apache2 force-reload
     </ code> 




    <LimitExcept GET>



    ブロックに注意して<LimitExcept GET>



    。これは、リポジトリを読み取るときにパスワードが要求されないことを意味します(つまり、 GET



    などのhttpリクエスト)。 プライベートリポジトリを整理したい場合は、このブロックをコメントアウトしてください。
  7. 次に、リポジトリにアクセスするためのスクリプトを作成する必要があります。 mercurial-common



    パッケージには、必要なファイル/usr/share/doc/mercurial-common/examples/hgweb.cgi



    がすでに含まれて/usr/share/doc/mercurial-common/examples/hgweb.cgi



    /var/www/hg-public



    ディレクトリにコピーして、少し修正する必要があります。



      <code>#mkdir / var / www / hg-public
     #cp /usr/share/doc/mercurial-common/examples/hgweb.cgi / var / www / hg-public /
     #chown -R hg:hg / var / www / hg-public
     #chmod + x /var/www/hg-public/hgweb.cgi
     </ code> 




    suexecが正しく動作するには、スクリプトが/var/www



    ディレクトリにあり、その所有者/グループがhg



    必要があります( SuexecUserGroup hg hg



    ディレクティブを覚えておいてSuexecUserGroup hg hg



    )。
  8. ファイル/var/www/hg-public/hgweb.cgi



    をテキストエディターで開き、編集します。 交換:



      <code> application = hgweb( "/ path / to / repo"、 "リポジトリ名")
     </ code> 








      <code> application = hgweb( "/ home / hg / repo"、 "Our public repo")
     </ code> 




    行は異なって見えるかもしれませんが、簡単に見つけて、作成されたリポジトリーへのフルパスを入力できます( /path/to/repo



    to /home/hg/repo



    )。
  9. 次に、プッシュアクションに使用するユーザー名を決定する必要があります。 この例では、 hg-user



    という名前を使用しhg-user







      <code>#su-hg
     $ htpasswd -c /home/hg/.hg.htpasswd hg-user
     </ code> 




    パスワードを設定します。 次に、リポジトリオプションでこの名前を直接指定する必要があります。このため、次の内容のファイル/home/hg/repo/.hg/hgrc



    を作成します。



      <code> [web]
     allow_push = hg-user
     push_ssl = false
     </ code> 
  10. ネットワークリポジトリにはURLがあります hg.example.com/public



    hg.example.com/public



    hg push



    は、 htpasswd



    コマンドで指定された名前hg-user



    とパスワードで実行されます。 お楽しみください。




いくつかのコメント





非SSLリポジトリの作成プロセスについて説明します。SSLについては、原則としてすべてがまったく同じであり、仮想ホストのブロックに追加する必要があるのはSSLのディレクティブのみです。



他のユーザーのディレクトリで混乱を生まないように、別のユーザーが使用されます。



スクリプトは、suexecでスクリプトが存在する必要があるため、 /var/www



ディレクトリに配置されます。



All Articles