【あなたは大丈夫?】webアプリがテスト環境から本番環境への移行で陥る3つの落とし穴
目次(クリックで読みたい部分にジャンプできます)
はじめに
このサイトでは0から独学でwebアプリをリリースするまでの経過で学んだことを紹介しています。
書籍『Pythonで始める Webサービス&スマホアプリの書き方作り方』を参考にしている。
パスの違い
パスの違いで陥りやすい罠は、以下の3つがあります。。
- パス記号が異なる
- パスの通し方が違う
- 相対パスと絶対パス
一つ一つ見ていきましょう。
パス記号が異なる
WindowsとmacOSではパス記号が異なります。
windowsはパス記号が「¥」ですが、macOS Linuxでは「/」になっています。
ファイルパスで「¥」を利用していると、うまく動かない場合があります。
パスの通し方が違う
パスが違うと環境の設定方法が異なります。
例えば、いろいろなスクリプトを実行する際に、パスの通ったディレクトリにスクリプトを配置しておいて、それらを実行したい場面もあります。
WindowsではコントロールパネルでGUIを用いてパスを設定しますが、Linuxではシェルごとに設定ファイルにパスを設定する必要があります。
相対パスと絶対パス
プログラムの中で特定のパスを絶対パスで記述していないでしょうか?
例えば「c:¥Users¥kujira¥conf.json」などのパスでは、Linuxなどの本番環境では動かすことはできません。
Pythonでスクリプトのパスを得る方法
Pythonでは、そのスクリプトのファイル自身のパスを「__file__」で知ることができるようになっています。
その他、スクリプトファイルが配置されているディレクトリのパスを得る os.path.dirname関数
相対パスを絶対パスに変換にする os.path.abspath関数があります。
ディレクトリ権限に注意する
テスト環境ではディレクトリの権限で悩むことはないですが、本番環境ではセキュリティも意識するため、ディレクトリの制限を厳しくする必要があります。
そのため、ディレクトリが読み書きできない状態になったり、データが書き込めずエラーが出るということがあります。
本番環境の制限でアウト
本番環境のwebサーバーでは、セキュリティを守るために、さまざまな制限が組み込まれています。
そうした制限が問題となって正しくプログラムが起きないという場合があります。
例えば、「地域設定」や「特定のIPアドレスによる接続制限」「MySQLでのデータベース数制限」「許容メモリの違い」などがあります。
どのサーバーで運用するのか、選定を行った後で開発を始めると良いでしょう。
問題が起きたら
プログラムが動かない場合は、何が原因んでエラーが起きているのかを正しく見極める必要があります
その解決の糸口になるのが、サーバーの動作ログです。
ログを出力する設定にし、サーバーのエラーログが出ていないかを調べましょう。
最後に
テスト環境ではそれほど気にならない問題が、本番環境では大問題になることがあります。また、開発の工数を増やさないためにも、事前にデプロイ後の環境や制限の調査をきちんとしておくことが必要でしょう。