CentOS 7.1にKallithea 0.2.2をインストールする手順 (Apache + mod_wsgi) ******************************************************************************** 最小構成でインストールした直後のCentOS 7.1にKallithea 0.2.2をインストールする手順です。Apacheとmod_wsgiを使用します。 .. contents:: 目次 :depth: 1 :local: OS環境設定 ======================================== SELinuxを無効にする ---------------------------------------- :file:`/etc/sysconifg/selinux` をエディタで開き、 ``SELINUX=disabled`` と設定してSELinuxを無効にしてください。 .. code-block:: text :caption: /etc/sysconfig/selinux :emphasize-lines: 6 # 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を再起動してください。 .. code-block:: shell reboot ファイアウォールで80/tcpを許可 ---------------------------------------- Kallitheaをインストールするサーバに対して外部からhttp(80/tcp)でアクセスできるよう設定を変更してください。 .. code-block:: shell firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload 必要なソフトウェアのインストール ======================================== .. code-block:: shell yum install python-devel git yum groupinstall "Development Tools" easy_install pip .. caution:: CentOS 7標準のMercurialはインストールしないでください。バージョンが古いためKallitheaが正常に動作しません(Mercurialリポジトリの履歴にアクセスしようとするとinternal Server Errorが発生するなど)。 Kallitheaをインストールする際に適切なバージョンのMercurialが一緒にインストールされるのでこの段階でインストールする必要はありません。 Kallitheaのインストール ======================================== 下記コマンドを実行するとKallitheaのダウンロードとインストールが行われます。インストール先は :file:`/usr/lib/python2.7/site-packages/kallithea` です。 .. code-block:: shell pip install kallithea .. note:: Mercurialなどの、Kallitheaの実行に必要なPython製ソフトウェアも一緒にインストールされます。 Kallitheaの環境設定 ======================================== Kalliteaのデータを置くディレクトリを作成 ---------------------------------------- 設定ファイルやリポジトリなどKallitheaのデータを置くディレクトリを作成してください。以下の例は :file:`/var/lib/kallithea` にiniファイルを置き、 :file:`/var/lib/kallithea/repos` にリポジトリを置くことを想定しています。 .. code-block:: shell mkdir /var/lib/kallithea mkdir /var/lib/kallithea/repos Kallitheaの設定ファイルを作成 ---------------------------------------- 設定ファイルのひな型を作成します。 .. code-block:: shell cd /var/lib/kallithea paster make-config Kallithea kallithea.ini 日本語化の設定 ---------------------------------------- 画面をデフォルトの英語ではなく日本語で表示されるように設定します。:file:`kallithea.ini` を開き、``[app:main]`` セクション内の ``lang =`` に ``ja`` と書き加えてください。 .. code-block:: ini :caption: kallithea.ini :emphasize-lines: 10 [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 データベース作成 ---------------------------------------- 下記コマンドを実行してください。 .. code-block:: shell 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のリポジトリを作成するディレクトリを指定してください(例: :file:`/var/lib/kallithea/repos`)。 Specify admin username: 管理者のユーザー名を指定してください(例: ``admin``)。 Specify admin password (min 6 chars): 管理者のパスワードを指定してください。 Confirm password: 管理者のパスワードを再入力。 Specify admin email: 管理者のメールアドレス。 試しにいったん起動してみる ---------------------------------------- 以上でKallitheaそのもののインストールは完了です。Apacheと連携させるための作業が残っていますが、インストールがうまくいったことを確認するために試しに起動してみます。 :file:`kallithea.ini` があるディレクトリ(例: :file:`/var/lib/kallithea`)で下記コマンドを実行すると localhost のポート5000 でKallitheaが起動します。 .. code-block:: shell paster serve kallithea.ini start 下記コマンドを実行してトップページのコンテンツをコンソールに表示させてみてください。大量のHTMLが表示されますが、最後のあたりに "powered by Kallithea" の表示が見えればOKです。 .. code-block:: shell curl http://localhost:5000 .. code-block:: text :emphasize-lines: 2-3 確認が終わったらwebサーバを停止させてください。 .. code-block:: shell paster serve kallithea.ini stop Apacheとの連携設定 ======================================== Apacheとmod_wsgiのインストール ---------------------------------------- Apacheと、Apache上でPythonのwebアプリケーションを実行するためのモジュール mod_wsgi をインストールします。下記コマンドを実行してください。 .. code-block:: shell yum install httpd mod_wsgi Apacheのデフォルトのトップページを削除。 .. code-block:: shell rm /etc/httpd/conf.d/welcome.conf Apacheの設定 ---------------------------------------- Apache上でKallitheaを実行するために以下の内容で :file:`/etc/httpd/conf.d/kallithea.conf` を作成してください。 .. code-block:: apache :caption: /etc/httpd/conf.d/kallithea.conf WSGIDaemonProcess kallithea threads=2 inactivity-timeout=14400 maximum-requests=500 WSGIScriptAlias / /var/lib/kallithea/dispatch.wsgi WSGIPassAuthorization On Require all granted :file:`/var/lib/kallithea/dispatch.wsgi` を以下の内容で作成してください。これは、mod_wsgiから呼ばれてKallitheaを起動するためのスクリプトです。 .. code-block:: python :caption: /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がリポジトリなどを書き込めるよう :file:`/var/lib/kallithea/` 以下のオーナーを下記コマンドを実行して変更してください。 .. code-block:: shell chown -R apache:apache /var/lib/kallithea/ Apacheの起動と自動起動の設定 ---------------------------------------- 下記コマンドを実行し、Apacheを起動するとともにシステム起動時に自動起動されるよう設定してください。 .. code-block:: shell service httpd start systemctl enable httpd 作業完了 ======================================== 以上でインストール作業は完了です。 webブラウザで ``http://サーバIPアドレス/`` にアクセスするとKallitheaのダッシュボードが表示されるはずです。 .. image:: images/blank-dashboard.png