他のクラウドでもいいと思うのですが、皆使っているという理由が多いような気が。EC2サーバーの準備AWSのEC2インスタンス(仮想サーバー)を作成します。(64bit版)を使い、Djangoをインストールします。Linux2はCentOS7ベースに近いので、この記事はCentOS7での構築にも参考になると思います。サーバーの構築からログインまで準備ができたという前提で進めます。サーバーの環境構築まずはログインして環境設定です。rootログインをしている状態での説明ですので、sudoを使う場合は適宜読み替えてください。実行コマンドを羅列していますが、実行結果(表示出力されるテキスト)はカットしています。Linuxの初期状態ではスワップファイルが無い状態ですので、スワップファイルを有効にします。最終行に下記の行を追記します。0タイムゾーンを日本標準時に設定します。Asia/Tokyo念の為既存モジュールのアップデートと、epelレポジトリ、開発環境をインストールしておきます。Tools"Python3のインストールPythonはver2系とver3系がありますが、今回のプロジェクトで使用するのはver3系です。単純にver2系のPythonを削除やアップデートすればいいのでは~と思えますが、ver2系はOS標準のコマンドやスクリプトで多数使用されているため、削除したりアップデートしたりできません。面倒でトラブルも多いのですが、今回はPython2(ver2系)とPython3(ver3系)を共存させて環境を構築します。pyenvでPython環境を切り替える方法もあるのですが、Djangoで動作する時のみPython3が使えればいいので、今回はpyenvは使用しません。それでは、Python3をインストールします。python3-develこれでPython3がインストールされました。現時点でインストールされたバージョンはPython3.7.4でした。pip3を必ず使い、Python2とPython3を使い分けなくてはなりません。Python3用にpymysqlモジュールをインストールします。pymysqlエラーが出なければ問題ありません。Djangoのインストール次にPythonをWEBサーバーで使用するために、アプリケーションフレームワークのDjangoをインストールします。pymysqlモジュールが、最新のDjangoに対応していないということなので、バージョン2.1指定でインストールします。--versionで確認できます。Djangoの動作テスト任意の場所(今回は/var/www/cgi-bin)にDjangoのプロジェクトmyprojectを作成して動作テストを行います。mysiteカレントディレクトリ(例では/var/www/cgi-bin)以下に、mysiteというプロジェクトディレクトリが作成されます。プロジェクトディレクトリのmysiteディレクトリ以下にある、setting.pyの1行を修正("*"の追加)してデフォルトのアクセス制限を外します。["*"]プロジェクトディレクトリ内で、以下のコマンドを実行し、Djangoの内部WEBサーバーを起動します。0.0.0.0:8000データベースの設定をしていないので、migrateしていないとかの警告が出ますが、Djangoのインストールと動作確認だけ進めていますので、後回しにして無視します。それではPCのブラウザのアドレス欄に下記を入力します。http://サーバーのIPアドレス:8000以下のようにブラウザでDjangoの画面が出れば正常です。タイムアウトなどが起こる場合、ファイアーウォール(AWSではセキュリティグループのインバウンド)でポート8000を通すようにして下さい。8000の部分を80に変更すれば、ポート80のhttpに変更できますが、Apacheなどが先に起動していると衝突してエラーになります。Webサーバーを停止するには、CONTROLキーとCを同時に押します。ここまででDjangoがインストールして正常に動作しているのを確認できました。mod_wsgiDjangoの内部Webサーバーでの動作は確認できましたが、実際にサービスとして使う場合はApacheやnginx等のWebサーバーを使用します。今回はApacheを使いますが、WebサーバーとDjangoの橋渡しをするのが、mod_wsgiモジュールです。Apache(httpd)とmod_wsgiをインストールします。mod_wsgi-httpdwsgiのApacheモジュールが作成されましたが、どこにモジュールが生成されたのか表示されないので探します。ファイルの1行目で読み込みの指定をします。</Files></Directory>このファイルを作成したら、反映させるためにApacheを再起動します。自動起動設定にしていなければ、ここでApacheの自動起動設定をします。httpd.servicePCのブラウザのアドレス欄に下記を入力します。今回はポート80なのでポート指定はしません。http://サーバーのIPアドレスDjangoのページが表示されれば正常です。Errorの表示場合は、Apacheのエラーログを確認して下さい。Pythonプログラムファイルやモジュールのパスに注意ここまでのインストールの道のりは簡単そうですが、実はかなり試行錯誤しています。Pythonはパスが重要だと再認識しました。ファイルを置いてあるパスやモジュールのパスです。当記事では、毎度sudoを使って説明するのが面倒なので、rootユーザーで記述説明しています。実際のインストールや開発には管理者でない一般ユーザーでログインし、sudoを使いインストールや、インストール後にライブラリモジュール等のインストールをしています。このモジュールのパスがApache/wsgiから認識されない、あるいはApacheの読み取り権限が無い等に気づかずはまりました。Apacheのプロセスはapacheユーザー権限にて起動しているので、コマンドライン環境とも異なります。この後多数のパスを追加することになりました。requestStockLike1@mighty-n株式会社マイティークラフトのテクニカルディレクター兼サーバー管理者のNです。upLoginユーザーは見つかりませんでした。