さくらのレンタルサーバ独自ドメイン SSL で HTTPS 接続かどうかを知るには

こないだの話の続きというか、メモ。

環境変数 HTTPSon がセットされるのでこれでわかる。SERVER_PORT80 のままなので注意。

なんだけど、これはなんかの仕様にあるのかさくら固有の話なのかがまだわからん。

SSL 証明書を取った

勉強を兼ねてこのサイトでも https で接続できるように SSL/TLS の証明書を取ってみた。

ドメイン認証だけの証明書であれば(個人ならそれでいいと思う)年額千いくらからあったので、掲示板や WordPress などを気持ちよく設置しときたいならさくっと入れるのがよいと思った。機械処理なのでほとんどのショップで一、二時間で取得できるはず。

無料でドメイン認証の証明書を発行する Let’s Encrypt は今年なかばにスタートすると謳っているけれど、開始早々は混乱があるかもしれないと思ってあえてふつうに買いました。

さくらのレンタルサーバでは SNI 証明書を管理画面から簡単に設定できるので Apache の設定ファイルをごにょごにょする必要もない。ただ、ワイルドカードやマルチドメインの証明書は使えないので横着して失敗しないように。

すべてのページで表示確認はできてないので、おかしなところがあれば教えていただけるとうれしいです。

pip 非対応のモジュールを virtualenv で使うには(OS X 編)

Windows 編POSIX 編の続き。というかこれが本題。

これまで説明してきた方法でシステムにインストールしたパッケージやライブラリを virtualenv 環境にリダイレクトできるのだけど、このやりかたを使って OS X で wxPython を使おうとすると、以下のような奇妙なメッセージが出てうまくいかない。

This program needs access to the screen.
Please run with a Framework build of python, and only when you are
logged in on the main display of your Mac.

どうも OS X の Python は特定の場所にインストールされているバイナリでないと GUI のフレームワークなどを使うことができないらしい(適当な推測)。virtualenv は作業ディレクトリにインタプリタをコピーするのでそれではじかれるようだ。

これは困った。コピーしたインタプリタが使えないんじゃ virtualenv できないじゃないか。で、あれこれ考えたのだけど、環境変数 PYTHONHOME を設定してもとの python を実行すれば別の環境でインタプリタを起動できることに気づいた。virtualenv 環境が /path/to/venv ディレクトリにあるなら、PYTHONHOME を /path/to/venv にして /usr/bin/python を実行すれば、virtualenv と同等のカプセル化の恩恵が得られる。

そこで、activate.csh に(tcsh なんすよ……)、PYTHONHOME を設定するような記述(と、deactivate したときにそれを戻す記述)を追加してみた。それから、virtualenv が作った作業ディレクトリの python コマンドの代わりに、システムの python へのシンボリックリンクを置く。

ln -s /usr/bin/python /path/to/venv/bin/

改造した activate.csh は Gist に置きました。bash 用のスクリプトをだれか作ってあげてください。

それはさておき、こうするとそれまでの virtualenv と同様の使い勝手で開発を続けることができる。めでたい。

めでたいのだけど、virtualenv 環境を作るごとにこの作業をするのは面倒くさい。なんとか virtualenv のほうで対応してくれないものかなあ……。僕の力量ではどうしていいのかわからん。

pip 非対応のモジュールを virtualenv で使うには(POSIX 編)

Windows 編の続き。

Windows ではハードリンクとジャンクションで行ったが、Linux や OS X など、POSIX の環境であればハードリンクとシンボリックリンクで同様に対策できる。じつは Windows 編で紹介したスクリプト(redirect-package.py)は、すでに POSIX 環境ではそう処理するようになっている。

Linux ではこれで問題ない。

ところが、OS X ではこれで wxPython を使えるようにしようとすると virtualenv 環境では wx モジュールをインポートできない。次回にはこれについて書きます。