MediaGoblinのインストール

提供: Akionux-wiki
Share/Save/Bookmark
移動: 案内検索

概要

GNU MediaGoblinはフリーソフトウェアなメディア(動画、画像、音楽など)を出版するプラットフォーム。 YoutubeやInstagramのようなサービスをこのフリーソフトウェアで実現できる。

公式ドキュメント

#ドキュメントのビルドで生成されるHTMLと同じものが以下のサイトにある:

http://mediagoblin.readthedocs.org/en/stable/siteadmin/deploying.html

テスト環境

Slackware Linux x86_64 14.1

依存パッケージ

  • Python 2.7 or Python 3.4+
  • python-lxml
  • git
  • SQLite/PostgreSQL
  • Python Imaging Library (PIL)
  • virtualenv
  • nodejs

SlackBuildでインストールできるパッケージ

  • system/postgresql
  • network/node
  • python/lxml

PostgreSQLでの設定

mediagoblinはmysqlをサポートしておらず、小規模向けのSQLite以外のデータベースとしてはpostgresqlしかない[1]

PostgreSQLを使う場合に行なった設定を以下に載せる。

インストール

SlackBuildからPostgreSQLをインストールする。 SlackBuildを実行する前に、グループとユーザーの作成が必要

sudo /usr/sbin/groupadd -g 209 postgres
sudo /usr/sbin/useradd -u 209 -g 209 -d /var/lib/pgsql postgres

SlackBuildパッケージのインストール後、データベースの初期化(md5で認証する-A md5オプションを付けないこと[2])

sudo -u postgres initdb -D /var/lib/pgsql/9.4/data --locale=en_US.UTF-8

データベース作成

postgresユーザーになって、データベースmediagoblinを作成。

sudo su - postgres
createuser -A -D mediagoblin
createdb -E UNICODE -O mediagoblin mediagoblin
exit

mediagoblinのデプロイ・インストール

mediagoblinユーザーの作成

sudo /usr/sbin/useradd -c "GNU MediaGoblin system account" -d /var/lib/mediagoblin -m -r -g apache mediagoblin

mediagoblinグループを作成してmediagoblinユーザーを入れる

sudo /usr/sbin/groupadd mediagoblin && sudo /usr/sbin/usermod --append -G mediagoblin mediagoblin

ディレクトリを作成

sudo mkdir -p /srv/media.akionux.net && sudo chown -hR mediagoblin:apache /srv/media.akionux.net

mediagoblinとしてログインしてサーバのディレクトリへ移動

sudo su mediagoblin -s /bin/bash
cd /srv/media.example.org

gitクローンしてビルド

git clone git://git.savannah.gnu.org/mediagoblin.git -b stable
cd mediagoblin
./bootstrap.sh && ./configure && make

user_devディレクトリを作成してパーミッション設定

mkdir user_dev && chmod 750 user_dev

FastCGIを使うためflupをインストール

./bin/easy_install flup

設定ファイルをコピー

cp -av mediagoblin.ini mediagoblin_local.ini && cp -av paste.ini paste_local.ini

mediagoblin_local.iniを編集する。 data_basedirにmediagoblinを置いたパスを指定

data_basedir = "/srv/media.akionux.net/mediagoblin"

postgresqlを使う場合はsql_engineを次のように指定

sql_engine = postgresql:///mediagoblin

データベースを初期化するため、

./bin/gmg dbupdate

を実行したがpsycopg2というモジュールが無いというので、インストール

./bin/easy_install psycopg2

そして再び

./bin/gmg dbupdate

サーバのテストをする

 ./lazyserver.sh --server-name=broadcast

ポート6543でサーバが動くか確認する。確認できたらCtrl+Cで終了する。

Apache2 & mod_wsgiによるWebサーバの設定

公式ドキュメントにはWebサーバのためのいくつかの方法が紹介されているが、 ここではApache2とmod_wsgiで設定した内容を載せる。

/etc/httpd/httpd.confなどでmod_wsgiをロードする

LoadModule wsgi_module lib64/httpd/modules/mod_wsgi.so

バーチャルホストを次のように追加

 <VirtualHost *:80>
   ServerName mediagoblin.example.org
 
   Alias /mgoblin_static/ /path/to/mediagoblin/mediagoblin/static/
   Alias /mgoblin_media/ /path/to/mediagoblin/user_dev/media/public/
 
   WSGIScriptAlias / /path/to/mediagoblin/wsgi.py
   # Set user and group to whatever user you used to install mediagoblin (if you used a system account, 
   # it may have the group 'nogroup' assigned, in that case you can remove the group parameter)
   # Remember to change python-path too!
   # Replace the python version in the 'python-path' below with the correct one (eg 2.x -> 2.7)
   WSGIPassAuthorization On
   WSGIDaemonProcess gmg user=mediagoblin group=apache processes=2 threads=10 \
       umask=0007 inactivity-timeout=900 maximum-requests=1000 \
       python-path=/path/to/mediagoblin/:/path/to/mediagoblin/lib/python2.7/site-packages/
   WSGIProcessGroup gmg
   WSGIApplicationGroup %{GLOBAL}
       <Directory "/path/to/mediagoblin/">
       <Files "wsgi.py">
               Require all granted
       </Files>
       </Directory>
       <Directory "/path/to/mediagoblin/mediagoblin/static/">
               Require all granted
       </Directory>
       <Directory "/path/to/mediagoblin/user_dev/media/public">
               Require all granted
       </Directory>
 </VirtualHost>

このバーチャルホストの設定は、公式の設定例からいくつか改良を加えた:

  • python-2.xでなくてpython2.x (python3など他のバージョンを使う場合ほ適宜変更する)
  • wsgi.pyを明示的にアクセス可能にした
  • WSGIDaemonProcessのグループはapache(debian系だとhttp、redhat系だとwww_data)にした。こうしておかないと新たに作成したファイルにWebサーバがアクセスできない。

/path/to/mediagoblin/wsgi.pyに次のようなファイルを作成

#!/path/to/mediagoblin/bin/python

# Written in 2011 by Christopher Allan Webber
#
# To the extent possible under law, the author(s) have dedicated all
# copyright and related and neighboring rights to this software to the
# public domain worldwide. This software is distributed without any
# warranty.
# 
# You should have received a copy of the CC0 Public Domain Dedication along
# with this software. If not, see
# <http://creativecommons.org/publicdomain/zero/1.0/>.


import site
# Replace the python version with the correct one in the line below (eg 2.x -> 2.7)
site.addsitedir('/path/to/mediagoblin/lib/python2.7/site-packages')


from paste.deploy import loadapp

CONFIG_PATH = '/path/to/mediagoblin/paste.ini'

## Uncomment this to run celery in "always eager" mode... ie, you don't have
## to run a separate process, but submissions wait till processing finishes
import os
os.environ['CELERY_ALWAYS_EAGER'] = 'true'

application = loadapp('config:' + CONFIG_PATH)

ここでは、"always eager"モードを有効にした。 このモードを有効にしてない場合は、celeydを次のように別途起動する必要がある[3]

CELERY_CONFIG_MODULE=mediagoblin.init.celery.from_celery ./bin/celeryd

アップロードされたメディアはキューに格納され、Celeryにより変換されるのを待つ。 変換されたメディアはパブリック領域に保存され、ギャラリーに表示されるようになる。 変換の詳しい内容はProcessing - GNU MediaGoblin Wikiを参照。

その他設定

eメールデバッグモードを無効化

デフォルトではeメールデバッグモードのため確認メールが送れないので、mediagoblin_local.ini

# Set to false to enable sending notices
email_debug_mode = false

とする。

新規登録できないようにする

mediagoblin_local.ini

[mediagoblin]
allow_registration = false

とする。

管理者を設定

[4]

./bin/gmg makeadmin (ユーザー名)

動画をアップロードできるようにする

mediagoblin_local.iniで以下のように追記[5]

[plugins]
(中略)
[[mediagoblin.media_types.video]]

新しいメディアタイプを有効にしたら、データベースを更新しなくてはならない。

./bin/gmg dbupdate

以下のgstreamer1-pythonパッケージをインストールしていないとうまくいかなかった。

  • python/gst1-python
    • libraries/gstreamer1
      • development/orc
    • python/pygobject3

あとはgstreamer1のプラグインを一通り入れておく:

  • libraries/gst1-plugins-base
  • libraries/gst1-libav
  • libraries/gst1-plugins-bad
  • libraries/gst1-plugins-good
    • libraries/libvpx (これはVP8ビデオのエンコードに必須で、gst1-plugins-goodのビルドの前にインストールすること)
    • libdv
    • libshout
    • libiec61883
    • jack-audio-connection-kit
    • pulseaudio
    • speex
  • libraries/gst1-plugins-ugly

音楽をアップロードできるようにする

以下のモジュールをインストール

./bin/pip numpy
./bin/pip install scikits.audiolab

mediagoblin_local.iniで以下のように追記

[plugins]
(中略)
[[mediagoblin.media_types.audio]]

その他メディアタイプのサポート

アスキーアート

chardetをeasy_install

./bin/easy_install chardet

mediagoblin_local.ini[plugins]欄に

[[mediagoblin.media_types.ascii]]

を追加して

./bin/gmg dbupdate

を実行。

3Dモデル(STL形式)

Blenderをインストールして、 mediagoblin_local.ini[plugins]欄に

[[mediagoblin.media_types.stl]]

を追加して

./bin/gmg dbupdate

を実行。

SlackBuildのblenderをインストールした場合は、/opt/blenderに配置されるので、リンクを張っておく

sudo ln -s /opt/blender/blender /usr/bin

ドキュメントのビルド

ドキュメントのビルドのために、

  • network/sphinx

が必要で、さらにpythonのsphinxパッケージが必要なのでインストールする

sudo pip install --upgrade pip
sudo pip install sphinx

mediagoblinのディレクトリのdocsディレクトリでmakeを実行する。htmlで出力する場合は、

cd docs
make html

とする。

プラグイン

Available Plugins - GNU MediaGoblin Wikiを参照。

References

  1. #421 (Support MySQL) – GNU MediaGoblin https://issues.mediagoblin.org/ticket/421
  2. postgresql - SQLAlchemy no password supplied error - Stack Overflow http://stackoverflow.com/questions/23839656/sqlalchemy-no-password-supplied-error/28468275
  3. HackingHowto - GNU MediaGoblin Wiki https://wiki.mediagoblin.org/HackingHowto#Running_celeryd
  4. MediaGoblin » Linux Magazine http://www.linux-magazine.com/Online/Features/MediaGoblin
  5. Media Types — GNU MediaGoblin 1.0.dev documentation file:///home/akio/repo/mediagoblin/docs/build/html/siteadmin/media-types.html#enabling-media-types