PythonにはDjangoという有名なフレームワークがあります。Djangoには簡易サーバーが付いているので、自分のMacで開発するときは、特にApacheやnginxなどのWebサーバーをインストールする必要はありません。開発用の段階ではこれで十分です。 しかし、いざ、iPhoneやAndroidなどの端末からサーバーにアクセスするアプリを開発しようとすると、外側から自分のMacにアクセスできるようになることが必要になります。iPhoneなどの端末から自分のMacにアクセスできないと、ちゃんと動いているかどうかもわかりません。ここで壁となるのが、Djangoに付属して付いてくるこのウェブサーバーでは外側からアクセスできないのです。 私は、今、iPhoneからサーバーに領収書の写真を送って、サーバー側で私たち会計事務所のスタッフが会計データに変換するサービスの開発をやっています。人間が写真のデータを会計データに直すサービスなので、AIなどのかっこいい技術を使うわけではありません。そこはいけていないのですが、そこはちょっと脇に置いておきます。 そのようなわけで、いろいろ調べてみた結果、昔からあるApacheと比較的最近のnginx(エンジンXと読む)が選択肢になったのですが、前にも触ったこともあって馴染みにあるApacheを入れてみることにしました。 具体的なステップ ApacheをDjangoで使えるようにするのには、ほぼ一日仕事でした。速い人は数時間でできるのかもしれませんが、初めての方には、色々とひっかりやすいポイントがあり、結構時間がかかります。 私の環境は、Apache2.4、Python3.6です。 順番に、 Apacheのインストールと起動、 mod_wsgiをインストールしてApacheからPaythonのプログラムファイルを処理できるようにする、 MaxOS/Linuxのファイル権限を変更して、外部からのアクセスでも必要なファイルを読み書きできるようにする、 という順番でやっていきます。 一気にやろうとすると、色々なところでハマるので問題の切り分けができにくくなります。順番にやっていくのがいいと思います。 (1) まず、最初はApacheです。 Apacheは、とりあえず動くようにして、「It works!」の既定のメッセージが見れるようになることが目標です。 まずはターミナルを開けて、appachectl startとコマンドを打ち込みます。問題がなければ、次の行に移動して入力ができるようになります。 そして、Safariか Chromeを開けて、アドレスバーのところに127.0.0.1と打ち込みます。「It works!」と表示されれば、Apacheはちゃんと動いています。 (2) 次に、mod_wsgiをインストールします。 これが、Webでは様々な記事が交錯していて、一番わかりにくく苦労しました。しかし、一度出来てしまえばちゃんと動きます。ポイントはmod_wsgi.soというファイルをApacheの設定ファイルにちゃんと書いて、ApacheへのリクエストがきちんとPythonの処理として認識されるようにすることです。私は、最初、Pythonのプログラムのファイル(例:hello.pyなど)がただのテキストファイルとしか認識してもらえず苦労しました。 手順としては、 ターミナルからpip3を使って、pip3 install mod_wsgiを実行する。ー>mod_wsgiがインストールされる。 Apacheの設定ファイルであるhttpd.confのファイルを編集する。httpd.confファイルはprivate/etc/apache2という場所にある。これをATOMなどのエディターで開いて、以下のテキストを追加する。場所はどこでもいいようです。 ポイントは、ネットに色々書いてあるような単純なファイル名ではないので、ちゃんとそのsoファイルの場所と名前を発見して、その通りに記述することです。私の場合は、発見したネット情報のPythonバージョンが3.5と少し違っていたので、修正したらちゃんと動きました。 また、Directoryタグの中の記述の仕方もちょっと変わっているようなので、下記のようにすることが重要です。 LoadModule wsgi_module /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-darwin.so WSGIScriptAlias / /users/ichirok/Documents/python_projects/firstDjango/firstDjango/wsgi.py Require all granted この設定がちゃんとできるようになると、Apacheがちゃんと動いて、返ってくるエラーもInternal Server Errorなどになります。それまでは、そもそもPythonのファイルをプログラムファイルとして認識してくれません。 (3) ファイルのアクセス権(Mac OS/Linux)の設定 Permission Deniedなどのエラーが返ってきます。 chmod 755 directoryName コマンドを使って、Apacheがちゃんとファイルを読めるようにしなければなりません。 どこに問題があるか、問題の特定は、Apacheのエラーログを見ると速いです。エラーログは /private/var/log/apache2 … Read More “DjangoをApacheで動かすまでの話” »
Month: April 2017
Well known structure Buying properties abroad has become a well known structure for saving setting among individuals in high income tax brackets. Properties abroad are especially popular because of two major reasons. 1) The split of the cost between building and land is much more favorable overseas. In Japan, especially in urban area, land portion … Read More “Well known tax saving setting by buying properties abroad” »
GTECを受けてみました。 テストの結果は、もう一つでしたが、気軽に30分でやれるし、値段は2000円だし、そういう意味では価値があると思いました。 この自宅でできるGTECではリスニングとリーディングがあります。私の場合は、自分の思い込みとは別に、リスニングがダメでした。そう言われてみれば、相手が言っていることをちゃんと聞き取れないことがあるし、言いたいことをうまく言えないこともよくあります。自分では、リスニングは得意ではないけど、それほどダメでもないだろうと思ってたのですが、テストの成績は残酷であり正直です。やっぱりリスニングがダメなのでした。 今後は少しリスニングの勉強を続けたいと思います。 このテストは値段がお手頃なところがとてもいいです。毎月1回受けても全然問題ありません。いわゆるPDCA的なものを練習してみるのにもちょうどいいように思いました。つまり、目標を立てて、その目標を実現するための計画を立てます。実行してみて、結果を確認し、良ければそれでいいですし、ダメならダメで、では次は何をしようとやり方を変えてみれば良いのです。 しばらく(5年ぐらい?)続けてみようかと思いました。