CentOS 7.1にKallithea 0.2.2をインストールする手順 (Apache + mod_wsgi)

最小構成でインストールした直後のCentOS 7.1にKallithea 0.2.2をインストールする手順です。Apacheとmod_wsgiを使用します。

OS環境設定

SELinuxを無効にする

/etc/sysconifg/selinux をエディタで開き、 SELINUX=disabled と設定してSELinuxを無効にしてください。

/etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

編集後、設定を反映させるためにOSを再起動してください。

reboot

ファイアウォールで80/tcpを許可

Kallitheaをインストールするサーバに対して外部からhttp(80/tcp)でアクセスできるよう設定を変更してください。

firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

必要なソフトウェアのインストール

yum install python-devel git
yum groupinstall "Development Tools"
easy_install pip

注意

CentOS 7標準のMercurialはインストールしないでください。バージョンが古いためKallitheaが正常に動作しません(Mercurialリポジトリの履歴にアクセスしようとするとinternal Server Errorが発生するなど)。

Kallitheaをインストールする際に適切なバージョンのMercurialが一緒にインストールされるのでこの段階でインストールする必要はありません。

Kallitheaのインストール

下記コマンドを実行するとKallitheaのダウンロードとインストールが行われます。インストール先は /usr/lib/python2.7/site-packages/kallithea です。

pip install kallithea

情報

Mercurialなどの、Kallitheaの実行に必要なPython製ソフトウェアも一緒にインストールされます。

Kallitheaの環境設定

Kalliteaのデータを置くディレクトリを作成

設定ファイルやリポジトリなどKallitheaのデータを置くディレクトリを作成してください。以下の例は /var/lib/kallithea にiniファイルを置き、 /var/lib/kallithea/repos にリポジトリを置くことを想定しています。

mkdir /var/lib/kallithea
mkdir /var/lib/kallithea/repos

Kallitheaの設定ファイルを作成

設定ファイルのひな型を作成します。

cd /var/lib/kallithea
paster make-config Kallithea kallithea.ini

日本語化の設定

画面をデフォルトの英語ではなく日本語で表示されるように設定します。kallithea.ini を開き、[app:main] セクション内の lang =ja と書き加えてください。

kallithea.ini
[app:main]
use = egg:kallithea
## enable proxy prefix middleware
#filter-with = proxy-prefix

full_stack = true
static_files = true
## Available Languages:
## cs de fr hu ja nl_BE pl pt_BR ru sk zh_CN zh_TW
lang = ja
cache_dir = %(here)s/data
index_dir = %(here)s/data/index

データベース作成

下記コマンドを実行してください。

paster setup-db kallithea.ini

実行中、対話形式で初期データの投入も行います。画面に表示される質問は下記の通りです。

Are you sure to destroy old database ? [y/n]
データベースを新たに作成してもよいかの確認です。もし既存のデータベースがあれば内容が消去されます。 y と入力してください。
Enter a valid absolute path to store repositories. All repositories in that path will be added automatically:
GitやMercurialのリポジトリを作成するディレクトリを指定してください(例: /var/lib/kallithea/repos)。
Specify admin username:
管理者のユーザー名を指定してください(例: admin)。
Specify admin password (min 6 chars):
管理者のパスワードを指定してください。
Confirm password:
管理者のパスワードを再入力。
Specify admin email:
管理者のメールアドレス。

試しにいったん起動してみる

以上でKallitheaそのもののインストールは完了です。Apacheと連携させるための作業が残っていますが、インストールがうまくいったことを確認するために試しに起動してみます。

kallithea.ini があるディレクトリ(例: /var/lib/kallithea)で下記コマンドを実行すると localhost のポート5000 でKallitheaが起動します。

paster serve kallithea.ini start

下記コマンドを実行してトップページのコンテンツをコンソールに表示させてみてください。大量のHTMLが表示されますが、最後のあたりに “powered by Kallithea” の表示が見えればOKです。

curl http://localhost:5000
 <p class="footer-link-right">
     This site is powered by
         <a href="https://kallithea-scm.org/" target="_blank">Kallithea</a> 0.2.2,
     which is
     <a href="http://localhost:5000/about#copyright">&copy; 2010&ndash;2015 by various authors &amp; licensed under GPLv3</a>.
         &ndash; <a href="https://bitbucket.org/conservancy/kallithea/issues" target="_blank">サポート</a>
 </p>

確認が終わったらwebサーバを停止させてください。

paster serve kallithea.ini stop

Apacheとの連携設定

Apacheとmod_wsgiのインストール

Apacheと、Apache上でPythonのwebアプリケーションを実行するためのモジュール mod_wsgi をインストールします。下記コマンドを実行してください。

yum install httpd mod_wsgi

Apacheのデフォルトのトップページを削除。

rm /etc/httpd/conf.d/welcome.conf

Apacheの設定

Apache上でKallitheaを実行するために以下の内容で /etc/httpd/conf.d/kallithea.conf を作成してください。

/etc/httpd/conf.d/kallithea.conf
WSGIDaemonProcess kallithea threads=2 inactivity-timeout=14400 maximum-requests=500
WSGIScriptAlias / /var/lib/kallithea/dispatch.wsgi
WSGIPassAuthorization On

<Directory "/var/lib/kallithea">
    Require all granted
</Directory>

/var/lib/kallithea/dispatch.wsgi を以下の内容で作成してください。これは、mod_wsgiから呼ばれてKallitheaを起動するためのスクリプトです。

/var/lib/kallithea/dispatch.wsgi
import os
os.environ["HGENCODING"] = "UTF-8"
os.environ['PYTHON_EGG_CACHE'] = '/var/lib/kallithea/.egg-cache'

# Set the current dir
os.chdir('/var/lib/kallithea/')

import site
#site.addsitedir("/home/web/rhodecode/pyenv/lib/python2.6/site-packages")

from paste.deploy import loadapp
from paste.script.util.logging_config import fileConfig

fileConfig('/var/lib/kallithea/kallithea.ini')
application = loadapp('config:/var/lib/kallithea/kallithea.ini')

Kallitheaのディレクトリのオーナー変更

Apacheがリポジトリなどを書き込めるよう /var/lib/kallithea/ 以下のオーナーを下記コマンドを実行して変更してください。

chown -R apache:apache /var/lib/kallithea/

Apacheの起動と自動起動の設定

下記コマンドを実行し、Apacheを起動するとともにシステム起動時に自動起動されるよう設定してください。

service httpd start
systemctl enable httpd

作業完了

以上でインストール作業は完了です。

webブラウザで http://サーバIPアドレス/ にアクセスするとKallitheaのダッシュボードが表示されるはずです。

../_images/blank-dashboard.png