タイトルそのまんまですが。
私は主にflaskなどでWEBアプリめいたものを作っています。こないだはherokuから某レンタルサーバへ、サービスをお引越ししました。
↓需要があるかわからないですがいちおう貼っておきます。pdfや画像ファイルなどに日付を入れるサイトです。
その際、500番エラーが出てさんざん詰まった後で、思い出しました。そういえば数年前にherokuでも全く同じところでつまずいていたことを。
「ローカルで動かしてみて動くものが、サーバにアップすると(お手本の記事や入門書の通りにやっても)500番エラーになる」
結論から言うと、これの原因のほとんどは、ライブラリの不整合でした。
これはたぶんflaskだけでなく、Djangoなども、さらにはRuby on Railsとか、他のあらゆる言語のフレームワークでも言えることだと思います。
500番エラーについて、どの記事にも(500番エラーの画面自体にも)「コードや.htaccessやパーミッションを見直しましょう」と書いてあるんですが、ライブラリの調整を面倒くさがってコードや.htaccessやパーミッションばかり見ていると、結構な時間を無駄にします。
そもそもコードはローカルでテストしているし、.htaccessやパーミッションは、私のような初心者ならなおさら、お手本に忠実にやっているはず。
ライブラリでもローカルではmodule not foundエラーが出て、いろいろ調整したりしてるんですがね…サーバにあげる時、なぜかそんなことを忘れて、バージョン指定せずに入れてしまう。こんな風に。
$ pip install Flask
とりあえずライブラリは、ローカルで動いた時と同じ全くバージョンを入れた方がいいと思います。
$ pip list
で確認するか、requirements.txtがあるならそれと同じバージョンを指定して。
$ pip install Flask==3.10
何でローカルでライブラリ入れる時、失敗してるのに、サーバ上げる時に忘れて、あまつさえ失敗に気づかないんですかね…「ローカルとサーバは違う」という悪い意味の油断が出てきてしまうのか。そんな自戒を込めて。
むかしスクールに通っていた頃なら講師に相談できたことも、今はひたすら試行錯誤です。おすすめのスクールはこちら。
コメント