2016年5月29日日曜日

Django を mod_wsgi で Apache 上にデプロイする

* 公式ドキュメント読め
https://docs.djangoproject.com/ja/1.9/howto/deployment/wsgi/modwsgi/

* Apache 再起動しろ

$ sudo apachectl restart

* httpd.conf を編集しろ
- static ファイルのパスをエイリアスする
- wsgi モジュールのロード
- WSGIScriptAlias, WSGIPythonPath の設定
- アクセス権限設定
- db のファイルパーミッション変更
   $ chmod 777 -R db.sqlite3

# Added @ 2016/05/28
Alias /static/ /path/to/project/mysite/polls/static/
LoadModule wsgi_module /path/to/project/venv/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-darwin.so
WSGIScriptAlias /wsgi /path/to/project/mysite/mysite/wsgi.py
WSGIPythonPath /path/to/project/venv/lib/python3.5/site-packages/:/path/to/project/mysite
<Directory /path/to/project/mysite/polls/static>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
 
    <Files wsgi.py>
    Require all granted
    </Files>
</Directory>
<Directory /path/to/project/mysite/mysite>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory> 

* サーバーが吐くエラー読め
$ tail -f /var/log/apache2/error_log 



* デプロイ手順メモ
$ git clone git@github.com:ks6088ts/sandbox.git -b feature/django
$ sandbox/

$ source setup.sh 
# project/settings.py の STATIC_ROOT を定義、STATICFILES_DIRSの static を削除した後、 python manage.py collectstatic
$ sudo apachectl restart
http://localhost/wsgi/admin/ にアクセス

2016年5月15日日曜日

Django チートシート

https://media.readthedocs.org/pdf/test-driven-django-development/latest/test-driven-django-development.pdf


* Virtualenv で仮想環境のセットアップ
(python3 で作りたいので適宜 $ alias python=python3 しておく)

- 生成: $ virtualenv venv
- アクティベート: $ source ./venv/bin/activate
- モジュールのインストール:  $ pip install django
- requirements.txt の生成: $ pip freeze > requirement.txt
- requirements.txt からインストール: $ pip install -r requirements.txt 

* git 設定関連
- ignore ファイル生成: $ echo "*.pyc" > .gitignore

* Django でサイトを作る
- 雛形作成: $ django-admin startproject project
  (移動 cd myblog)
- DBファイルの作成: $ python manage.py makemigrations
- DBファイルの反映: $ python manage.py migrate
- スーパーユーザー作成: $ python manage.py createsuperuser
- サーバー起動: $ python manage.py runserver

* アプリを追加
- 雛形作成: $ python manage.py startapp app


2016年5月14日土曜日

コードスニペットを環境セットアップ要らずに超速実行する Tips

エンジニア間でのサンプルコードの共有に便利なツールがあったのでメモ。
repl.it とかいうウェブサービスです。

出会いの背景:
業務でフランス人エンジニアと協業するようになり、
Pull request のレビュアーに追加したところ、
You'd better do just as <LINK> ... みたいなチャットが飛んできた。

クリックするとサンプルコードが書かれたウェブサイトに飛んだ。
C++ のコードが書かれてたんだけど、
ウェブ上で実行できるのねこれ。
コードスニペットの簡単な実行とか、
この文法C++11 からだっけ?みたいなちょっとしたサンドボックスとして結構便利でした。
https://repl.it/CQfp