はじめに
インターネットへのアクセスが厳しく制限されている、または一定ではない企業がありますが、私はこれらの人をenましく思いません。 私の場合のように、企業のセキュリティポリシーでは、開発した製品のソースコードを他の人の機器に保存することが許可されていない場合があります。 さらに、すべての開発者グループが、たとえば
bitbucketによって提供される十分な機能を備えているとは限りません。 これらの問題は、例えば
RhodeCodeと
Redmineの束によって解決できます。
目標
- Webインターフェイスを使用してMercurialリポジトリを作成、変更、削除します。
- ユーザーの追加と削除、アクセスの制限、Webインターフェイスを使用したパスワードの変更。
- Webインターフェイスを使用したエラー追跡とタスク配布。
- httpsはどこにでもあります。
使用製品
いくつかの考えと経験に基づいて、目標を達成するための一連のツールが決定されました。
- バージョン管理-Mercurial
- プロジェクト管理-Redmine
- バージョン管理リポジトリ管理-RhodeCode
- まあ、それはすべてDebianで始まります
ステップ0:debian(またはubuntu)をインストールする
以下のすべては、基本インストールのdebian squezeeで行われました。
ubuntu(10.04 LTS)では、パッケージベースが似ているため、変更しないでください。
ステップ1:RhodeCodeをインストールする
easy_installおよびvirtualenvが機能するために必要なパッケージをインストールします。
aptitude install python-setuptools python-dev python-virtualenv
virtualenvを使用して、新しい仮想環境を作成します。
virtualenv --no-site-packages /var/www/rhodecode-venv
/ var / www / rhodecode-venvディレクトリーに新しい仮想環境が作成されます。
次のコマンドで仮想環境をアクティブ化します。
source /var/www/rhodecode-venv/bin/activate
rhodecodeのディレクトリを作成します。例:
mkdir /var/www/rhodecode; cd /var/www/rhodecode
RhodeCodeをインストールするには、次のコマンドを実行します。
easy_install rhodecode
この時点で、easy_installスクリプトは、最新の安定バージョンのmercurialを含む、仮想環境でRhodeCodeに必要なすべての依存関係をインストールします。
ステップ2:RhodeCodeを構成する
RhodeCode構成ファイルを作成します。
paster make-config RhodeCode production.ini
この構成ファイルには、RhodeCodeのさまざまな設定(プロキシポート、電子メール、静的ファイルの使用、キャッシュ、セロリ設定、ロギングなど)が含まれています。 デフォルトでは、SQLiteがデータベースとして使用されます。
次のコマンドを実行してデータベースを作成します。
paster setup-app production.ini
スクリプトリクエストで、RhodeCodeがデータベースを配置するディレクトリへのパスを入力します。
/var/www/rhodecode/
次に、アプリケーション管理者アカウントのユーザー名、パスワード、および電子メールを入力します。 データベース作成チームは、必要なすべてのテーブルと管理者アカウントを作成します。
この構成では、次の行をproduction.iniに追加する必要があります。
1)[アプリ:メイン]セクション:
filter-with = proxy-prefix
force_https = true
2)ファイルの最後:
[フィルター:プロキシプレフィックス]
use = egg:PasteDeploy#プレフィックス
プレフィックス= / hg
仮想環境を離れます:
deactivate
起動スクリプト/etc/init.d/rhodecode-daemonを作成します。
#!/ bin / sh -e
############################################
####これはDEBIAN INIT.Dスクリプトです####
############################################
###開始情報の開始
#提供:rhodecode
#必須開始:$ all
#必須:$ all
#デフォルト開始:2 3 4 5
#デフォルト停止:0 1 6
#簡単な説明:ロードコードのインスタンスを開始します
#説明:start-stop-daemonを使用してrhodecodeのインスタンスを開始
###終了情報の終了
APP_NAME = "rhodecode"
APP_HOMEDIR = "/ var / www"
APP_PATH = "$ APP_HOMEDIR / $ APP_NAME"
CONF_NAME = "production.ini"
PID_PATH = "$ APP_PATH / $ APP_NAME.pid"
LOG_PATH = "$ APP_PATH / $ APP_NAME.log"
PYTHON_PATH = "/ var / www / rhodecode-venv"
RUN_AS = "www-data"
DAEMON = "$ PYTHON_PATH / bin / paster"
DAEMON_OPTS = "serve --daemon \
--user = $ RUN_AS \
--group = $ RUN_AS \
--pid-file = $ PID_PATH \
--log-file = $ LOG_PATH $ APP_PATH / $ CONF_NAME "
start(){
echo "開始$ APP_NAME"
PYTHON_EGG_CACHE = "/ tmp" start-stop-daemon -d $ APP_PATH \
--start --quiet \
--pidfile $ PID_PATH \
--user $ RUN_AS \
--exec $ DAEMON-$ DAEMON_OPTS
}
stop(){
echo "$ APP_NAMEを停止しています"
start-stop-daemon -d $ APP_PATH \
--stop --quiet \
--pidfile $ PID_PATH || echo "$ APP_NAME-実行されていません!"
if [-f $ PID_PATH]; それから
rm $ PID_PATH
fi
}
ケース「$ 1」
開始)
始める
;;
停止)
止まる
;;
再起動)
echo "$ APP_NAMEの再起動"
###停止###
止まる
待って
###開始###
始める
;;
*)
echo "使用法:$ 0 {start | stop | restart}"
1番出口
エサック
必要なアクセス権を割り当てます。
chmod a + x /etc/init.d/rhodecode-daemon
chown www-data:www-data -R / var / www / rhodecode
スクリプトを自動的に実行するには、次を実行します。
insserv rhodecode-daemon
ステップ3:Redmineをインストールする
squeeze-backportsでは、redmineのバージョンが新しいのでインストールしてください。
/etc/apt/sources.listに含めます:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
コンソールで実行します。
適性の更新
aptitude -t squeeze-backportsインストールredmine mercurial
インストール中に、データベース選択ダイアログが表示されます。 私はsqliteを好みました、あなたの選択をしてください。
/ var / wwwディレクトリにリンクを作成します。
ln -s / usr / share / redmine / public / var / www / redmine
chown -R www-data:www-data / var / www / redmine
ステップ4:Apacheを構成する
Redmineを実行するには、Apache Modパッセンジャーをインストールします。
aptitude install libapache2-mod-passenger
秘密鍵と証明書を作成します。
openssl req -new -x509 -days 355 -keyout your.domain.ru.key -out your.domain.ru.pem
共通名は、サーバーのドメイン名と正確に指定する必要があります。
パスワードを削除:
cp your.domain.ru.key your.domain.ru.key.orig
openssl rsa -in your.domain.ru.key.orig -out your.domain.ru.key
rm your.domain.ru.key.orig
/ etc / sslにコピー:
cp your.domain.ru.pem /etc/ssl/certs/; cp your.domain.ru.key /etc/ssl/private/
必要なモジュールが含まれています。
a2enmod ssl
a2enmodプロキシ
a2enmod proxy_http
ファイル/ etc / apache2 / sites-available / default-sslで、以下を置き換えます:
SSLCertificateFile /etc/ssl/certs/your.domain.ru.pem
SSLCertificateKeyFile /etc/ssl/private/your.domain.ru.key
同じファイルのメインセクション(VirtualHost)に次の行を記述します。
1)redmineの場合:
RailsBaseURI /redmine
2)ロードコードの場合:
<Location /hg > ProxyPass http://127.0.0.1:5000/hg ProxyPassReverse http://127.0.0.1:5000/hg SetEnvIf X-Url-Scheme https HTTPS=1 </Location>
ファイル/ etc / apache2 / sites-available / defaultのコンテンツを次のように置き換えます。
<VirtualHost *:80> ServerName your.domain.ru Redirect permanent / https:
default-ssl構成を接続します。
a2ensite default-ssl
rhodecodeを実行します。
service rhodecode-daemon start
Apacheを再起動します。
service apache2 restart
結果
RhodeCodeは次の場所で入手できます。
https://your.domain.ru/hgパスワードはステップ2で設定されます
Redmineは次の場所で入手できます。
https://your.domain.ru/redmine admin admin、password admin
どこでもhttpsを強制。
使用された文献のリスト
- Debianパッケージを使用してRedmineをインストールする方法。
- RhodeCode 1.3.3ドキュメント。 インストール。
- RhodeCode 1.3.3ドキュメント。 セットアップ。
- DebianでHTTPSで動作するようにApacheを設定する簡単な方法。
UPD: Rhodecodeで作成されたリポジトリとのRedmine統合エラーを修正するには、squezee-backportsからmercurial(2.0.1)をインストールします。
aptitude -t squeeze-backportsはMercurialをインストールします