おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

研究の成果をWIKIで管理しよう。ローカルにDjango-WIKIをつくろう。(Django==1.6)

追々追記:2015/04/30
画像などをアップロードしたときに、htmlからアクセスする必要があるので。
Apache側で設定をする。

Alias /static/ /var/www/cgi-bin/local/static/
<Directory /var/www/cgi-bin/local/static/>
Order deny,allow
Allow from all
</Directory>

________________________________
追追記:2015/04/28
ファイルをアップロードするために、専用のディレクトリを用意する必要がある。
settings.pyの中身に下記を追記

MEDIA_ROOT='/var/www/cgi-bin/local/media/'
MEDIA_ROOT_URL='/media/'

内容通りにlocal(localはプロジェクト名)内に

mkdir media
chmod 777 media

これで、アップロードファイルが保存される。
________________________________
追記:2015/04/28
かなりバージョンに依存する設定が必要となる。wikiを導入するのにここまで大変だとグッタリです(python愛で乗りきるしかない)。Django==1.6でインストールした方がいいのかも...。(django-wikiが1.6を対象として安定版をリリースしているため)
________________________________
研究の成果を管理するためにローカルでDjango-WIKIを構築する。将来的には、クラスター上で計算を実行し、実行結果を自動で解析し、Wiki上に表示するといった一連の作業を自動化する。また、文献などの管理にも役立つと思われる。
A wiki for Django! — django-wiki 0.1.dev documentation

Django-wikiのインストール

環境:CentOS6.5(vagrant)

とりあえず、必要なものをインストールしましょう。

sudo yum install python-setuptools
sudo yum install python-imaging
sudo yum install libjpeg-devel #アップロードした画像の表示のため
sudo yum install git
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper

djangoは、virtualenvを起動してからでも良かったかも...。
python2.7系のインストール

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure

ここでmod_wsgiをpython2.7でインストールする際にsharedオブジェクトの名前云々でエラーが出るのでMakefileを書き換える。

CFLAGSFORSHARED= $(CCSHARED)#変更前は何も代入されていない。

適当に検索すれば出てくると思います。
参考URL:ROOTのインストール [ShotakahaDokuWiki]
makeしましょう。

make
make install

virtualenvwrapper.shのパスを探す。

sudo yum install mlocate
updatedb
locate virtualenvwrapper.sh

出力が合わせて、.bashrcを編集

if [ -f /usr/bin/virtualenvwrapper.sh ]; then
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/bin/virtualenvwrapper.sh
fi

読み込み

source .bashrc

早速仮想環境を作ってみる.(ディレクトリを作成する必要が無かった...。)

mkdir ~/py27
mkvirtualenv --python=/usr/local/bin/python2.7 py27

問題がなければ、そのままdjangoをインストール(理由が無い限り最新の安定版を入手するべし。後々になって面倒なことになる。)
問題がある場合は(以下のようなエラーが出る場合)

New python executable in py27/bin/python2.7
Also creating executable in py27/bin/python
Installing setuptools, pip...done.
/usr/local/bin/python: No module named virtualenvwrapper

これは、/usr/local/bin/pythonシンボリックリンクが書き換わっているせいです。
python2.6系に戻してやりましょう。

sudo rm /usr/local/bin/python
sudo ln -s /usr/bin/python2.6 /usr/local/bin/python

djangoのインストール(workon py27)

pip install Django==1.6

django-wikiのインストール(pip install wiki)でインストール出来ます...。

git clone https://github.com/django-wiki/django-wiki.git
cd django-wiki
python setup.py build
python setup.py install

djangoの立ち上げ(/var/www/cgi-bin/に作成)

django-admin.py startproject local
cd local
mkdir db

local/local/settings.pyのINSTALLED_APPSに以下を追記する。

'django.contrib.sites', # django 1.6.2
'django.contrib.humanize',
'django_nyt',
'mptt',
'sekizai',
'sorl.thumbnail',
'wiki',
'wiki.plugins.attachments',
'wiki.plugins.notifications',
'wiki.plugins.images',
'wiki.plugins.macros',
##'south',

southがあると、データベースのテーブルの名前がバッティングするから気をつける。
さらにsetting.pyに以下を追記

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.request",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    "sekizai.context_processors.sekizai",
)

SITE_ID=1

さらにデータベースの位置を変更(これをしないとデータベースにアクセスできない云々が出るので注意:結構ハマった)

	'NAME': os.path.join(BASE_DIR, 'db/db.sqlite3'),

データベースの構築

python manage.py syncdb
python manage.py migrate
chmod 777 db
chmod 777 db/db.sqlite3

local/local/urls.pyに追記

from wiki.urls import get_pattern as get_wiki_pattern
from django_nyt.urls import get_pattern as get_nyt_pattern
urlpatterns += patterns('',
    (r'^notifications/', get_nyt_pattern()),
    (r'', get_wiki_pattern())
)

デプロイ

apache,nginxや何でもいいが,とりあえずApache

sudo yum install httpd httpd-devel

mod_wsgiのインストール(yumでインストールするとpython2.6になってしまうのでgitで落としてくる)

git clone https://github.com/GrahamDumpleton/mod_wsgi.git
cd mod_wsgi
./configure
make
make install

エラーが出る場合、pythonをインストールする段階まで戻る必要があるかも。上を参照して下さい。
/etc/httpd/conf.d/python.confを作成

LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonPath /root/.virtualenvs/py27/
WSGIScriptAlias /wiki /var/www/cgi-bin/local/local/wsgi.py


<Directory /var/www/cgi-bin/local/local/>
Order deny,allow
Allow from all
</Directory>

Alias /static/ /var/www/cgi-bin/local/static/
<Directory /var/www/cgi-bin/local/static/>
Order deny,allow
Allow from all
</Directory>

私の場合は、cgi-binにlocalという名前でプロジェクトを作成しました。akiniwa.hatenablog.jp
上記を参考にして、local/local/wsgi.pyを編集

import os
import sys
import site

path='/var/www/cgi-bin'

if path not in sys.path:
  sys.path.append(path)
#site.addsitedir("/root/.virtualenvs/py27/lib/python2.7/site-packages")                                                                                                                                             
sys.path.append('/var/www/cgi-bin/local')
sys.path.append('/var/www/cgi-bin/local/local')

activate_env = os.path.expanduser("/root/.virtualenvs/py27/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "local.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

静的ファイルを収集するためにSTAIC_ROOTを設定する
settings.pyに以下を追記

STATIC_ROOT = os.path.join('/var/www/cgi-bin/local', 'static')
STATIC_URL = '/static/'

ほんでもって

mkdir local/static
./manage.py collectstatic 

ここまできたら

service httpd restart

でアパッチをリスタートする。
最後にvagrantを作成する際に設定したURL/wikiをブラウザに入力すれば
wikiが作成されているはず!!(ubuntu14.04の私の環境では確認出来ました。)

Have a nice Python Django Life!!!!