web-dev-qa-db-fra.com

Comment configurer un site Web Django sur l'hébergement Amazon EC2?

Quelqu'un peut-il donner des étapes spécifiques sur la façon de mettre en œuvre l'hébergement d'un site Web basé sur Django à l'aide du service d'hébergement EC2 d'Amazon?

Est-ce possible?

Le code source de mon site Web peut être trouvé ici .

J'ai cherché et trouvé cet article .

Mais avant de faire quoi que ce soit, je veux juste avoir quelques idées de base sur l'hébergement Amazon EC2.

47
CodeYun

C'est certainement possible, mais il semble que l'EC2 ne soit pas la meilleure option pour vous. Pour des exemples de personnes qui le font, voir par exemple this ou this .

Dans un sens très simplifié, EC2 n'est qu'un serveur que vous pouvez louer à l'heure. Vous pouvez le faire exécuter Windows ou Linux, puis installer Python et Django comme vous le feriez normalement. En fait, il y a probablement une image qui a déjà préconfiguré Django.

Vous devez comprendre qu'il existe différents types d'hébergement. À une extrémité, vous pouvez payer pour votre propre serveur physique, installer votre propre système d'exploitation (comme Windows ou Linux), installer votre propre Python, vous possédez un serveur Web comme Apache ou IIS, vos propres bibliothèques Django , votre propre base de données (comme MySQL), etc., puis téléchargez votre site Web sur celui-ci. À l'autre extrême, vous pouvez payer pour un compte sur un service d'hébergement partagé, où quelqu'un d'autre a fait toute la configuration du système d'exploitation, de Python, du serveur Web, etc., et tout ce que vous devez faire est de télécharger votre code de site Web. EC2 est beaucoup plus proche du premier extrême et est probablement exagéré pour vous. Je pense que dans votre cas, vous devriez rechercher une solution plus gérée.
Je voudrais consulter cette page Web, qui répertorie un tas de différentes sociétés d'hébergement Django: hébergement Django

32
Peter Recore

Une autre option pour vous si vous ne voulez pas gérer la configuration de votre serveur à partir de zéro est d'utiliser BitNami Django Stack Amazon image . Je suis un développeur BitNami et travaillé sur la création de piles pour plusieurs applications Python. Le BitNami Django Stack comprend déjà MySQL 5.1, Apache 2.2 (avec mod_wsgi) et Python avec MarkDown, html5lib et python-openid installés. Il comprenait également Django 1.3.

Vous devrez installer Django Debug Toolbar, créer la base de données et copier vos fichiers dans/opt/bitnami/apps/Django/django_projects et exécuter le python manage Commandes .py. Après cela, vous devrez configurer Apache pour serveur votre projet si vous souhaitez l'utiliser en production (au lieu du serveur Django server).

Avant d'essayer de déployer votre application directement dans le cloud, vous pouvez utiliser les programmes d'installation natifs et tester le déploiement sur votre machine locale.

Nous avons également un outil d'estimation des coûts . C'est juste pour avoir une idée approximative d'une configuration EC2/EBS simple, Amazon n'est pas toujours aussi cher que vous pouvez vous y attendre bien que cela dépende de beaucoup de facteurs. (Bien que d'après vos commentaires, il semble que vous ayez déjà examiné les coûts).

8
kaysa

J'ai hébergé mon propre site Web Django sur l'instance AWS EC2 t2.micro (niveau gratuit AWS). J'ai utilisé Django 1.9 pour ce projet et MySQL comme base de données). Créez un tunnel SSH vers votre instance et suivez les étapes:

  1. Installez Apache2 et libapache2-mod-wsgi sur votre instance:

    Sudo apt-get install Apache2 libapache2-mod-wsgi

  2. Installez Django sur votre instance:

    Sudo pip install Django

  3. Installez mysql:

    Sudo apt-get install mysqldb

    Sudo pip install mysql-python

    Sudo apt-get install libmysqlclient-dev

(si vous n'avez pas installé pip: Sudo apt-get install python-pip)

  1. Configurez mysql, pour votre projet Django. Importez votre projet Django dans /var/www/html. (utiliser git est le meilleur moyen).

  2. Éditer /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. Exécutez migrate to sync db:

    python manage.py migrate

  4. Redémarrez Apache2:

    Sudo service Apache2 reload

J'espère que vous n'avez pas codé en dur votre modèle et vos chemins statiques dans settings.py, si oui, changez-le en chemin dynamique, sinon modifiez-le en conséquence.

C'est ça! Visitez votre IP publique ou DNS pour accéder à votre site Web Django hébergé sur l'instance AWS EC2.

Veuillez commenter ci-dessous si vous obtenez une erreur.

2
Rishabh Agrahari

Supposons que vous utilisez le serveur Apache sur votre instance, les instructions officielles sur Django fonctionne mieux que beaucoup de billets de blog. Voici ce que j'ai copié à partir du lien: https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/

Modifier et ajouter le code suivant à /etc/Apache2/Apache2.conf fonctionnerait.

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