AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

STATIC_URL と MEDIA_URL は 異なる値が必要

タイトルの通りです。本番側でDebug=Falseで触ってたら気づかなかった。

f:id:hidehara:20160421155349p:plain


FileField 使ったのですが、同じパスにしたら、上げたファイルをapacheの設定変えなくても見えるじゃんと、手抜きしたのがいかん。

ちゃんと、開発でDebug=Trueで作業してからあげましょう。っていうだけの話でした。

homebrew direnv には homebrew python が必要?

(4/27 追記) homebew版 python が必要ではなく、direnv で使ってた pythonz で pythonを入れる前に homebew版 openssl が必要だったのが問題点でした。
Mac に pythonz 入れる前にやっておくこと - AWS / PHP / Python ちょいメモ

      • -

direnvをよく目にするので使ってみようと思ったものの、手元のMacで使うのに時間がかかった。

結論としては homebrew でインストールした direnv 使うには、母体となる python も homebrew で入れる必要あり?というところに落ちました。

母体はオリジナルにしておきたかったので direnv 使おうと思ったんだけど、若干本末転倒?でもディレクトリ移動するだけで使えるのは便利ですね。

環境

続きを読む

Django の Debug Toolbar をリモート接続で表示

以前書いたエントリーの追記。

やはり、リモートでデバッグしてる時にも、Debug Toolbar を使いたくなったので調べてみると、接続元IPがわかれば、設定に書いてあげることで表示が可能でした。

設定方法

settings.py とかに、次の変数をセットしてあげればOK。

INTERNAL_IPS = ('127.0.0.1', 'aaa.bbb.ccc.ddd',)

※aaa.bbb.ccc.ddd は、接続「元」IP


ちなみに、

If INTERNAL_IPS is empty, the Debug Toolbar automatically sets it to '127.0.0.1' and '::1'.

とあるので、設定しない時には、ローカルホストからのアクセスのみが許可されるという状態です。


参考:

Apache で VirtualHost一覧を表示

久しぶりに触るたびに、忘れてる気がするのでメモ。

簡単なコマンド:

apachectl -S

VirtualHostのみを表示する場合:

apachectl -t -D DUMP_VHOSTS


すごく便利ですよね?Apache使いなら、当たり前なのだろうと思いつつも。

続きを読む

Django アップグレード手順まとめ 1.6.x to 1.8.x

この記事は、Python その2 Advent Calendar 2015 の10日目の記事です。

昨日は @CS_Toku さんの Python2からPython3.0での変更点 - Qiita 。明日は @FGtatsuro さん !

どんな話題?

Webアプリを長期運用する時に避けれないのが、フレームワークのアップグレード。約1年前に作った Djangoアプリも例にもれず、1.6.xのメンテナンスが終了ということで、長期サポート(LTS)である 1.8.x へのアップグレードに取り組みました。

大まかな流れとしては、こんな感じです。

  1. 複数バージョンの環境を準備
  2. 1.6.x で Deprecateに対応
  3. 1.7系にバージョンをあげる
  4. migrate する / Deprecateに対応
  5. 1.8系にバージョンをあげる
  6. migrate する / Deprecateに対応
  7. その他の対応

環境

  • Django 1.6.8 で当初開発
  • 開発したmyapp , auth, adminぐらいで構成された比較的小さなプロジェクト
  • DBMSは開発環境のSQLiteと、本番環境のMySQLの2つ


1.7で DB migrate 機能が入ったためか、結構難儀。教訓としては 『メジャーバージョンは1つずつあげていこう』 でしょうか(あたりまえ??)。

(なお migration ツール South 未使用アプリの為、利用してるケースのフローは抑えてません。あと、本来なれば test 走らせるのでしょうか、カバレッジが全然低いので動作は手動で確認。。)

事前準備

公式では、pip使ってるのであれば -U オプションで上書きとありますが、なかなか勇気いりますよね。

僕の場合は、次のような準備を行って、1つずつバージョンを上げるようにしました(DBバックアップを取得したりしながら)。

  • virtualenv/virtualenvwrapper などを用意して、1.6最新 , 1.7最新 , 1.8.x(目的のバージョン)を用意
  • 各種環境で django-admin startproject しておいて、settings.py の違いをdiffっておくと、概要の把握によかった
続きを読む