Ubuntu Weekly Recipe

第400回 Ubuntuで「からあげ」をなんとかする

この記事を読むのに必要な時間:およそ 6 分

Karaage - アカウント管理ソフトウェア

Karaageのインストール先はUbuntu 14.04 LTSとします。インストールガイドには,Debian Jessie用の非公式リポジトリを使う方法が紹介されていますが,14.04の場合はいくつか必要なパッケージが足りないために使えません※3)⁠そこで今回は,Pythonソフトウェアをpipコマンドでインストールすることにします。

※3
たとえばpython-django-xmlrpcパッケージなどが該当します。15.10ではほぼJessie相当になっているため,そちらを使う場合は 非公式リポジトリからインストールできるかもしれません。

KaraageはPythonのWebフレームワークであるDjangoを使っています。よって最低限必要なものはPython処理系だけです。ただし,インストールガイドではWebサーバーとしてApache2/WSGI,データベースとしてMySQLを使っているため,この記事もそれを利用することにします。

Apache2のインストールはとても簡単です。SSL接続もできるようにしています。SSL証明書はssl-certパッケージをインストールした時に自動生成されるsankeoilの自己署名証明書を使うことにしましょう。SSL証明書関連の詳しいことは第387回を参照してください。

$ sudo apt-get install apache2 libapache2-mod-wsgi
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl
$ sudo service apache2 restart

MySQLもリポジトリからインストールします。インストール時,MySQLのルートパスワードを問われるので,適切な値を設定しておきましょう。ここでは「KARAAGE」としておきます。

$ sudo apt-get install mysql-server

MySQLの設定ファイル(/etc/mysql/conf.d/karaage.cnf)を作成します。

[mysqld]
character_set_server=utf8
default-storage-engine = innodb
sql_mode = STRICT_ALL_TABLES

[client]
default-character-set = utf8

最後に,次のようにデータベースとユーザーを作成します。⁠-pKARAAGE」はMySQLのルートパスワードに置き換えてください。

$ mysql -uroot -pkaraage
mysql> create database karaage;
mysql> CREATE USER 'karaage'@'localhost' IDENTIFIED BY 'karaage';
mysql> GRANT ALL PRIVILEGES ON karaage.* TO 'karaage'@'localhost';

下準備が整いましたので,Karaageをインストールします。pipコマンドはPyPIからだけでなく,GitHubなどからのインストールもサポートしています※4)⁠よってpipコマンド用にpython-pipとgitパッケージをインストールしましょう。python-mysqldbとpython-pilはKaraageの設定によって必要になるパッケージです。

$ sudo apt-get install python-pip git python-mysqldb python-pil
$ sudo pip install git+git://github.com/Karaage-Cluster/karaage.git#egg=karaage
(中略)
Successfully installed karaage cssmin Django python-alogger django-xmlrpc django-simple-captcha django-ajax-selects django-jsonfield django-model-utils python-tldap django-pipeline django-tables2 django-filter slimit ldap3 passlib futures ply pyasn1
※4
今回はシステム領域にインストールしているため「sudo」をつけています。管理者権限がない場合であっても「--user」オプションをつけるなり,virtualenvを使うなりすれば,ユーザーのホームディレクトリ以下にインストールできます。

これでインストール完了です。⁠/usr/local」以下に上記のようなPythonパッケージがインストールされていることがわかります。次に「/etc/karaage3/settings.py」を編集して,Karaageの設定を行いましょう。変更箇所のみを列挙します。個々の設定について詳しくは公式ドキュメントを参照してください。

# FQDNのホスト名を設定します。
# ローカルでの動作確認のみであれば、
# /etc/hostsにkaraage.example.orgを追加しておくとよいでしょう。
#
HTTP_HOST = "karaage.example.org"

# Djangoのより新しいバージョンはHTTPリクエストのHostsヘッダーが、
# ALLOWED_HOSTSと一致しないとエラーとなります。外部からIPアドレスなどで
# アクセスする場合、そのIPアドレスをALLOWED_HOSTSにリストアップしましょう。
#
ALLOWED_HOSTS = ["10.0.3.65"]

# データベースの設定です。
# MySQLのデータベース設定時に作成したデータベース名と
# ユーザー名・パスワードを指定してください。
#
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'karaage',
        'USER': 'karaage',
        'PASSWORD': 'karaage',
        'HOST': 'localhost',
        'PORT': '',
        'ATOMIC_REQUESTS': True,
    }
}

# Djangoのプロジェクトで使う秘密鍵です。
# 予測不能なランダムな文字列であればいいので、次のように生成して
# 埋め込んでおくとよいでしょう。
# $ cat /dev/urandom | fold -w 32 | head -n 1 | base64
#
SECRET_KEY = 'ey5iM7WFA8Dkdo1G4cGMtkN3O7OeqdbtU1/+ANTAipoK'

また,Djangoプロジェクトで使ういくつかのディレクトリを作成しておきます。

$ sudo mkdir -p /var/log/karaage3 /var/cache/karaage3/{files,tmp} /var/lib/karaage3/static
$ sudo chown -R www-data: /var/{cache,log,lib}/karaage3

設定が一通り完了したので,Karaageのマイグレーションを行います。

$ sudo kg-manage migrate
(中略)

Running migrations:
  Rendering model states... DONE
  Applying captcha.0001_initial... OK
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying karaage.0001_initial... OK
  Applying karaage.0002_auto_20140924_1111... OK
  Applying karaage.0003_auto_20150410_1032... OK
  Applying methods.0001_initial... OK
  Applying sessions.0001_initial... OK
  Applying sites.0001_initial... OK

また,Karaageの管理者を作成します。

$ sudo kg-manage kgcreatesuperuser
Username: karaage
E-mail address: karaage@example.com
Password: 
Password (again): 
Short Name: karaage
Full Name: Ubuntu Karaage
No Institutes in system, will create one now.

Institute Name: ubuntu
Created new group ubuntu.
Created new institute ubuntu.
Karaage Superuser created successfully.

最後にKaraage用のWSGI設定(/etc/apache2/conf-available/karaage3-wsgi.conf)を有効化し,Apacheサービスをリロードします※5)⁠

$ sudo a2enconf karaage3-wsgi
$ sudo service apache2 reload
※5
mod_wsgiを使っているのでAapacheのリロードでなく, ⁠sudo touch /etc/karaage3/karaage.wsgi」でも,次回アクセス時にDjangoアプリケーションがリロードされます。以降の手順はApacheのリロードで統一していますが,touchする方法に置き換えてかまいません。

「https://マシンのアドレス/karaage」にアクセスするとKaraageの初期画面が表示されるはずです。さらに右上の「Log In」から先ほど作成した管理者のユーザー名とパスワードでログインできます。

図2 Karaageの初期画面

画像

図3 Karaageのログイン画面

画像

図4 Karaageの基本画面

画像

Karaageにはプラグイン機能が存在します。これを使うとユーザーアカウントの管理だけでなく,利用状況の表示なども行えるようになります。これらのインストール方法もあわせて紹介しておきましょう。

まずusageプラグインで使うpython-mattplotlibパッケージをインストールしたあとに,3つのプラグインを順番にインストールしていきます。

$ sudo apt-get install python-matplotlib
$ sudo pip install git+git://github.com/Karaage-Cluster/karaage-applications.git#egg=karaage-applications
$ sudo pip install git+git://github.com/Karaage-Cluster/karaage-software.git#egg=karaage-software
$ sudo pip install git+git://github.com/Karaage-Cluster/karaage-usage.git#egg=karaage-usage

さらにpipからインストールできるdjango-table2には問題があるためパッチを適用します。

$ wget https://github.com/bdauvergne/django-tables2/commit/423a74702c7bff58cbe8f9078c5241b99ba3bb77.patch
$ sudo patch -d /usr/local/lib/python2.7/dist-packages/ -p1 < ~/423a74702c7bff58cbe8f9078c5241b99ba3bb77.patch

設定ファイル(/etc/karaage3/settings.py)に有効するプラグインを列挙します。

PLUGINS = [
    'karaage.plugins.kgapplications.plugin',
    'karaage.plugins.kgsoftware.plugin',
    'karaage.plugins.kgsoftware.applications.plugin',
    'karaage.plugins.kgusage.plugin',
]

マイグレーションとApacheのリロードを行います。

$ sudo kg-manage migrate
$ sudo service apache2 reload

最後に分散タスクキューであるCeleryを起動するスクリプトをインストールして起動しましょう。

$ wget https://raw.githubusercontent.com/Karaage-Cluster/karaage-usage/master/debian/karaage3-celery.default
$ wget https://raw.githubusercontent.com/Karaage-Cluster/karaage-usage/master/debian/karaage3-celery.init
$ sudo mv karaage3-celery.default /etc/default/karaage3-celery
$ sudo mv karaage3-celery.init /etc/init.d/karaage3-celery
$ sudo chmod 755 /etc/init.d/karaage3-celery
$ sudo service karaage3-celery start

Karaageのウェブページをリロードすると,サイドバーに有効にしたプラグインが追加されているはずです。

最後の仕上げ

ここまで説明しておいてなんですが,このKaraage,単体ではあまり使えません。最初の方で言及したように,SlurmやPBS/TORQUEなどと併用して初めて便利になります。いずれもパッケージ化されているので,導入自体は簡単です。KaraageとSlurmやPBS/TORQUEの間は,KaraageにData Storeを作成しLDAP over TLSを設定して連携する必要があります。

このままではあまり実用的でない上に,⁠からあげ」っぽくないので,⁠からあげ」画像で装飾することにしましょう。実はDjangoには,生成されるページにからあげ画像を表示するミドルウェアが存在します。よく読み取れなかった方のためにもう一度,生成されるページにからあげ画像を表示するミドルウェア 」が存在するのです。

さっそくインストールしましょう。こちらもKaraageと同じくpipコマンドでインストールします。karaage.jsはインストールされなかったので手動でインストールしています。

$ sudo pip install git+git://github.com/drillbits/django-karaage.git#egg=django-karaage
$ wget https://raw.githubusercontent.com/drillbits/django-karaage/master/django_karaage/karaage.js
$ sudo cp karaage.js /usr/local/lib/python2.7/dist-packages/django_karaage/

設定ファイル(/etc/karaage3/settings.py)のMIDDLEWARE_CLASSESに有効するミドルウェアを列挙します。MIDDLEWARE_CLASSESはもともと次のファイルで設定されています。

/usr/local/lib/python2.7/dist-packages/karaage/conf/defaults.py

これをそのままsettings.pyにコピー&ペーストして,最後にdjango_karaageを追加します。

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.middleware.common.BrokenLinkEmailsMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'karaage.middleware.threadlocals.ThreadLocals',
    'karaage.middleware.saml.SamlUserMiddleware',
    'tldap.middleware.TransactionMiddleware',
    'django_karaage.middleware.KaraageMiddleware',
)

最後にApache2をリロードすれば設定完了です。

$ sudo service apache2 reload

ちなみにsettings.pyの中でKARAAGE_IMAGE_URLにからあげ画像のURLをセットすれば,任意のからあげ画像を表示できます。

図5 ページを蹂躙するからあげ画像

画像

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入