忍者ブログ
Admin / Write / Res
ちゃんとカテゴリ分けされておりませんので、 記事をお探しならブログ内検索が便利です。 ご活用くださいませー+.(≧∀≦)゚+.゚
ブログ内検索
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カウンター
アクセスカウンター
最新コメント
[11/22 รูปพวงหรีดแสดงความเสียใจ]
[11/22 ดอกไม้ งานศพ]
[11/22 ช่อดอกไม้ตามสั่ง]
[11/22 ร้านดอกไม้บรรยากาศอบอุ่น]
[11/21 Robertret]
最新トラックバック
プロフィール
+ハンドル+
y_ayamori(purple)
+職業+
IT系エンジニア
+すまい+
さいたま
バーコード
[748]  [747]  [746]  [745]  [744]  [743]  [742]  [741]  [740]  [739]  [738
バージョン管理は主に案件、システム単位で行うことは多いと思いますがそうなるとその単位でリポジトリを切ることになります。
ローカル、または共有サーバ上でディレクトリを作成してそれぞれにリポジトリを作ることはリポジトリの管理の面でとても楽ちんです。

一方でローカル、またはイントラにあるネットワークからはデプロイが困難という側面もあります。
高度なインテグレーション体制(CIツールの利用)があれば、解決可能でしょうが、そこに至らない小規模開発ベンチャーにはハードルが上がります。<br />
<br />
またアクセス権という意味ではしっかりしておかないと、リポジトリにアクセスできる人はどのリポジトリにもアクセス可能になってしまいます。<br />
githubなどはそれらをうまく回避可能なのでしょうが、Mercurialではどうでしょうか、ということで前置き長くなりましたが、hgwebの導入について、です。<br />
<br />
hgwebの特徴<br />
・WEB経由で行える<br />
・リバプロで対応することでインターネットはSSL通信を容易に実現可能
・BASIC認証などを組み合わせればアクセス制限を簡易的に実現できる


ほぼ以下を丸パクリ<br />
https://github.com/benoitc/gunicorn-recipes/issues/1
 
でもいくつか思い通りにならないので後ほど修正します。
<br />
事前準備
<pre>
# 必要なモジュールを pip で入れていく
# 必要に応じてvenvは事前にして置くこと
pip install mercurial
 
# リポジトリ群を格納するディレクトリを作成(場所は任意)
mkdir -p /var/vcs/mercurial/repos
# hgwebの設定を諸々記載するディレクトリを作成(場所は任意)
mkdir -p /var/vcs/mercurial/hgweb
 
# hgweb.py を作っていく
vim /var/vcs/mercurial/hgweb/hgweb.py
----

from mercurial.hgweb import hgweb

# bytes にするところがミソ
CONFIG = b'./hgweb.config'
app = hgweb(CONFIG)
 
----
 
# hgweb config を作っていく
vim /var/vcs/mercurial/hgweb/hgweb.config
----
 
[ui]
editor = vim
 
[web]
# 今回は /hgweb/ からリバプロからのリクエスト想定なのでこのようにする
baseurl = hgweb/
# 今回は paths でワイルドカードを指定し、動的(再帰的)にリポジトリを検索する
descend = True
# SSLはApacheで、リバプロと hgweb はイントラ内なのでSSLは無効にする
push_ssl = false
# pushを許可する
allow_push = *
 
[paths]
/ = /var/vcs/mercurial/repos/*
 
----
 
# gunicorn の設定
vim /var/vcs/mercurial/hgweb/gunicorn.conf.py
----
import pathlib
base_dir = pathlib.Path(__file__).parent
 
wsgi_app = 'hgweb:app'
 
host = "127.0.0.1"
port = "9000"
bind = f"{host}:{port}"
 
daemon = True
reload = True
----
 
# httpd.conf この辺は諸々省略します
----
cat << EOS > /etc/httpd/conf.d/hgweb.conf
ProxyPass /hgweb/ http://127.0.0.1:9000/
ProxyPassReverse /hgweb/ http://127.0.0.1:9000/
EOS
----
 
# リポジトリ作成
cd /var/vcs/mercurial/
hg init repos/test_repo && touch hgweb/gunicorn.conf.py
 
# リポジトリが見えることを確認する
https://hgweb.host/hgweb/
 
</pre>

拍手

PR
この記事にコメントする
Name
Title
Color
Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (管理人にのみ表示)
Copyright ©  アナログを愛するデジタル生活館 All Rights Reserved.
* material by Pearl Box   * Template by tsukika

忍者ブログ [PR]