研究の成果を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の私の環境では確認出来ました。)