web-dev-qa-db-ja.com

Amazon EC2ホスティングでDjangoウェブサイトを設定するにはどうすればよいですか?

AmazonのEC2ホスティングサービスを使用して、Djangoベースのウェブサイトのホスティングを実装する方法について、誰かが具体的な手順を説明できますか?

それは可能ですか?

私のウェブサイトのソースコードは here にあります。

検索して見つけた この記事

しかし、何かをする前に、Amazon EC2ホスティングに関する基本的なアイデアをいくつか知りたいだけです。

47
CodeYun

確かにそれは可能ですが、EC2はあなたにとって最良の選択肢ではないようです。それを行う人々の例については、例えば this または this をご覧ください。

非常に単純化した意味では、EC2は1時間ごとにレンタルできる単なるサーバーです。 WindowsまたはLinuxを実行してから、PythonおよびDjangoを通常どおりインストールできます。実際、Djangoが事前に構成されたイメージがおそらくあります。

さまざまな種類のホスティングが存在することを理解する必要があります。極端な例では、非常に独自の物理サーバーの支払い、独自のオペレーティングシステム(WindowsやLinuxなど)、独自のPythonのインストール、ApacheやIISなどのWebサーバー、独自のDjangoライブラリのインストールが可能です。 、独自のデータベース(MySQLなど)などを使用して、そこにWebサイトをアップロードします。他の極端な場合、共有ホスティングサービスのアカウントに料金を支払うことができます。他の誰かがOS、Python、Webサーバーなどのすべてのセットアップを行い、必要なことはWebサイトコードをアップロードするだけです。 EC2は最初の極端に非常に近く、おそらくあなたにとってはやり過ぎです。あなたの場合、より管理されたソリューションを探しているべきだと思います。
さまざまなDjangoホスティング会社のリストが掲載されているこのWebページを確認します。 Django hosting

32
Peter Recore

サーバーをゼロからセットアップしたくない場合の別のオプションは、 BitNami Django St​​ack Amazon image を使用することです。私はBitNami開発者であり、いくつかのPythonアプリケーション用のスタックの作成に取り組みました。 BitNami Django St​​ackには、MySQL 5.1、Apache 2.2(mod_wsgiを使用)、およびMarkDown、html5lib、python-openidがインストールされたPythonが既に含まれています。 Django 1.3も含まれています。

Django Debug Toolbarをインストールし、データベースを作成し、/ opt/bitnami/apps/Django/django_projectsにファイルをコピーして、python manage.pyコマンドを実行する必要があります。その後、(Djangoサーバーの代わりに)本番で使用する場合は、プロジェクトをサーバーに提供するようにApacheを構成する必要があります。

アプリケーションをクラウドに直接デプロイする前に、ネイティブインストーラーを使用して、ローカルマシンでデプロイをテストできます。

コスト見積もりツール もあります。これは、単純なEC2/EBSセットアップの大まかなアイデアを得るためだけのものです。Amazonは、多くの要因に依存しますが、必ずしも期待できるほど高価ではありません。 (あなたのコメントによると、あなたはすでにコストを見ているようです)。

8
kaysa

AWS EC2 t2.microインスタンス(AWS無料利用枠)で独自のDjangoウェブサイトをホストしました。このプロジェクトとデータベースとしてMySQLにDjango 1.9を使用しました。インスタンスへのSSHトンネルを作成し、次の手順に従います。

  1. インスタンスにApache2とlibapache2-mod-wsgiをインストールします。

    Sudo apt-get install Apache2 libapache2-mod-wsgi

  2. インスタンスにDjangoをインストールします:

    Sudo pip install Django

  3. Mysqlをインストールします。

    Sudo apt-get install mysqldb

    Sudo pip install mysql-python

    Sudo apt-get install libmysqlclient-dev

(pipがインストールされていない場合:Sudo apt-get install python-pip

  1. Djangoプロジェクト用にmysqlを設定します。Djangoプロジェクトを/var/www/html。 (gitを使用するのが最善の方法です)。

  2. 編集/etc/Apache2/sites-available/000-default.conf

    <VirtualHost *:80>
        Alias /static /path_to_my_static_folder
    
        <Directory /path_to_my_project_folder_containing_wsgi.py>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>
    
        WSGIDaemonProcess project_name python-path=/path_to/lib/python2.7/site-packages
    
        WSGIProcessGroup project_name
        WSGIScriptAlias / /path_to_wsgi.py
    </VirtualHost>
    
  3. Migrate to sync dbを実行します:

    python manage.py migrate

  4. Apache2を再起動します。

    Sudo service Apache2 reload

Settings.pyでテンプレートと静的パスをハードコーディングしていないことを願っています。そうであれば、動的パスに変更するか、それに従って編集します。

それでおしまい!パブリックIPまたはDNSにアクセスして、Django AWS EC2インスタンスでホストされているウェブサイトにアクセスします。

エラーが発生した場合は、以下にコメントしてください。

2

インスタンスでApacheサーバーを使用していると仮定すると、Djangoサイトの公式指示は多くのブログ投稿よりもうまく機能します。リンクからコピーしたものは次のとおりです。 https:/ /docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/

次のコードを編集して/etc/Apache2/Apache2.confに追加するとうまくいきます。

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
2
Yulun