Configurer Django sur Ubuntu 16.04 avec PostgreSQL et Gunicorn sur ECS

Ici, nous allons installer et configurer une base de données PostgreSQL et ** Django ** en utilisant ** Gunicorn ** sur une ** instance Alibaba Cloud ECS ** en utilisant Ubuntu 16.04.

Conditions préalables

1, instance Alibaba Cloud Ubuntu 16.04. 2. Une adresse IP fixe est définie. 3. Le mot de passe root est défini pour l'instance.

Lancer une instance ECS

Tout d'abord, connectez-vous à la Alibaba Cloud ECS Console. Créez une nouvelle instance ECS et Ubuntu en tant que système d'exploitation avec au moins 2 Go de RAM Sélectionnez 16.04. Connectez-vous à l'instance ECS (https://www.alibabacloud.com/help/doc-detail/25434.htm?spm=a2c65.11461447.0.0.7dd84f51itlGPJ) et connectez-vous en tant qu'utilisateur root.

Après vous être connecté à votre instance Ubuntu 16.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

apt-get update -y

Installation des packages requis

Avant de commencer, vous devez installer les packages Nginx, PostgreSQL et Python sur votre système. Vous pouvez tout installer avec la commande suivante.

apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib nginx -y

Une fois tous les packages installés, vous pouvez procéder à la configuration de la base de données PostgreSQL.

Paramètres PostgreSQL

Ensuite, vous devez créer une base de données PostgreSQL et un utilisateur pour votre application Django.

Tout d'abord, connectez-vous à la session interactive PostgreSQL en exécutant la commande suivante:

sudo -u postgres psql

Utilisez ensuite la commande suivante pour créer une base de données PostgreSQL et un utilisateur pour votre projet Django.

postgres=# CREATE DATABASE testproject;
postgres=# CREATE USER testuser WITH PASSWORD 'password'; 

Ensuite, définissez le codage par défaut sur UTF-8, le schéma d'isolation de transaction par défaut sur «lecture validée» et le fuseau horaire sur UTC avec la commande suivante:

postgres=# ALTER ROLE testuser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE testuser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE testuser SET timezone TO 'UTC';

Puis accordez toutes les autorisations à la base de données et terminez la session PostgreSQL avec la commande suivante:

postgres=# GRANT ALL PRIVILEGES ON DATABASE testproject TO testuser;
postgres=#  \q

Créer un environnement virtuel Python

Ensuite, vous devez créer un environnement virtuel Python pour votre projet. Vous pouvez le faire en installant les packages requis en Python dans votre environnement virtuel.

Tout d'abord, mettez à niveau pip et installez l'environnement virtuel avec la commande suivante.

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

Ensuite, créez un répertoire pour votre projet.

mkdir ~/testproject
cd ~/testproject

Ensuite, exécutez la commande suivante pour créer un environnement virtuel Python.

virtualenv testprojectenv

Créez un répertoire testprojectenv sous le répertoire testproject avec la commande ci-dessus et installez la version locale de Python et la version locale de pip.

Ensuite, vous devez installer tous les packages nécessaires à votre projet.

Commencez par démarrer l'environnement virtuel avec la commande suivante.

source testprojectenv/bin/activate

Après avoir activé l'environnement virtuel, installez l'adaptateur PostgreSQL Django, Gunicorn, psycopg2 avec la commande suivante.

(testprojectenv) root@mail:~/testproject# pip install django gunicorn psycopg2

production:

Installing collected packages: pytz, django, gunicorn, psycopg2
Successfully installed django-2.1.1 gunicorn-19.9.0 psycopg2-2.7.5 pytz-2018.5

Mettre en place un nouveau projet Django

Ensuite, vous devez dire à Django d'installer les enregistrements dans le répertoire de votre projet. Cela peut être fait avec la commande suivante:

(testprojectenv) root@mail:~/testproject# django-admin.py startproject testproject ~/testproject

Ensuite, vous devez définir l'adresse IP du serveur, le nom d'utilisateur de la base de données et le mot de passe dans le fichier settings.py.

(testprojectenv) root@mail:~/testproject# nano /root/testproject/testproject/settings.py

Apportez les modifications suivantes:

ALLOWED_HOSTS = ['192.168.43.192']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME':  'testproject',
        'USER' : 'testuser',
        'PASSWORD' : 'password',
        'HOST' : 'localhost',
        'PORT' : '',
    }
}

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vous devez migrer le schéma de base de données initial vers la base de données PostgreSQL. Cela peut être fait en exécutant le script suivant.

(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py makemigrations
(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py migrate

Exécutez ensuite la commande suivante pour créer un utilisateur administrateur pour votre projet.

(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py createsuperuser

production:

Username (leave blank to use 'root'): 
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Exécutez ensuite la commande suivante pour collecter tout le contenu statique dans l'emplacement de répertoire que vous avez défini.

(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py collectstatic

Vous pouvez maintenant démarrer le serveur de développement Django et démarrer votre projet avec la commande suivante:

(testprojectenv) root@mail:~/testproject# ~/testproject/manage.py runserver 0.0.0.0.0:8000

Si le serveur démarre correctement, vous devriez voir une sortie similaire à ce qui suit:

Vérification du système en cours ...

System check identified no issues (0 silenced).
September 10, 2018 - 15:06:07
Django version 2.1.1, using settings 'testproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Maintenant, ouvrez un navigateur Web et entrez l'URL [http: // your-server-ip: 8000](http: // your-server-ip: 8000 /? Spm = a2c65.11461447.0.0.7dd84f51ha1Xoz). Ensuite, vous serez redirigé vers la page d'index Django comme indiqué ci-dessous.

image.png

Vous pouvez également entrer l'URL http: // your-server-ip: 8000 / admin dans votre navigateur pour accéder à l'interface d'administration de Django. Vous serez invité à entrer le nom d'utilisateur et le mot de passe d'administrateur que vous avez créés précédemment, comme suit:

image.png

Après avoir entré votre nom d'utilisateur et votre mot de passe, cliquez sur le bouton de connexion. Vous serez redirigé vers l'écran d'administration de Django comme indiqué ci-dessous.

image.png

Appuyez maintenant sur CTRL + C dans la fenêtre du terminal pour arrêter le serveur de développement.

Si vous souhaitez tester Gunicorn pour tester s'il peut servir votre application, chargez le module WSGI de votre projet avec la commande suivante:

(testprojectenv) root@mail:~/testproject# gunicorn --bind 0.0.0.0:8000 testproject.wsgi

L'exécution de la commande ci-dessus lancera Gunicorn sur la même interface que le serveur de développement Django fonctionnait. Vous pouvez accéder et tester l'URL [http: // your-server-ip: 8000](http: // your-server-ip: 8000 /? Spm = a2c65.11461447.0.0.7dd84f51ha1Xoz).

Lorsque le test est terminé, appuyez sur CTRL + C dans le terminal pour arrêter Gunicorn.

Exécutez ensuite la commande suivante pour désactiver l'environnement virtuel.

(testprojectenv) root@mail:~/testproject# deactivate

Créer un fichier de service Systemd pour Gunicorn

Ensuite, créez un fichier de service systemd pour Gunicorn. Vous pouvez désormais démarrer et arrêter facilement le serveur d'applications. C'est OK si vous créez le fichier suivant.

nano /etc/systemd/system/gunicorn.service

Ajoutez la ligne suivante.

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/root/testproject
ExecStart=/root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/root/testproject/testproject.sock testproject.wsgi:application

[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier. Après cela, démarrez le service Gunicorn avec la commande suivante afin qu'il puisse être démarré au démarrage.

systemctl start gunicorn
systemctl enable gunicorn

Vous pouvez vérifier l'état de Gunicorn avec la commande suivante.

systemctl status gunicorn

Production.

  gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-09-10 20:58:14 IST; 10s ago
 Main PID: 2377 (gunicorn)
   CGroup: /system.slice/gunicorn.service
           ├─2377 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
           ├─2384 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
           ├─2385 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b
           └─2386 /root/testproject/testprojectenv/bin/python3 /root/testproject/testprojectenv/bin/gunicorn --access-logfile - --workers 3 --b

Sep 10 20:58:14 mail.example.com systemd[1]: Started gunicorn daemon.
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Starting gunicorn 19.9.0
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Listening at: unix:/root/testproject/testproject.soc
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2377] [INFO] Using worker: sync
Sep 10 20:58:14 mail.example.com gunicorn[2377]: [2018-09-10 20:58:14 +0530] [2384] [INFO] Booting worker with pid: 2384
Sep 10 20:58:15 mail.example.com gunicorn[2377]: [2018-09-10 20:58:15 +0530] [2385] [INFO] Booting worker with pid: 2385
Sep 10 20:58:15 mail.example.com gunicorn[2377]: [2018-09-10 20:58:15 +0530] [2386] [INFO] Booting worker with pid: 2386

Définir Nginx sur Proxy Pass to Gunicorn

Gunicorn est maintenant installé et fonctionne. Créez un nouveau fichier de configuration Nginx dans le répertoire etc / nginx / sites-available /.

nano /etc/nginx/sites-available/gunicorn

Ajoutez la ligne suivante.

server {
    listen 80;
    server_name 192.168.43.192;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /root/testproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/root/testproject/testproject.sock;
    }
}

Enregistrez et fermez le fichier. Créez ensuite un lien symbolique pour activer l'hôte virtuel Nginx.

ln -s /etc/nginx/sites-available/gunicorn /etc/nginx/sites-enabled/

Ensuite, testez Nginx pour les erreurs de configuration avec la commande suivante:

nginx -t

Ce sera une sortie.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, exécutez la commande suivante pour redémarrer Nginx.

systemctl restart nginx

Nginx est maintenant configuré pour transmettre le trafic au processus. Pour tester, ouvrez un navigateur Web et entrez l'URL http: // your-server-ip. Ensuite, vous serez redirigé vers l'application comme indiqué dans la page suivante.

image.png

Recommended Posts

Configurer Django sur Ubuntu 16.04 avec PostgreSQL et Gunicorn sur ECS
Configurer ansible-playbook sur Ubuntu 20.04
Installez Docker sur Ubuntu et configurez la connexion à distance à l'aide de tls
Configurer un serveur SSH sur Ubuntu 20.04, qui est WSL2
Installez rbenv avec apt sur ubuntu et mettez ruby
Intégration continue sur les instances Ubuntu Alibaba Cloud ECS avec Jenkins
Configurer GitLab avec docker
Configurer Gitolite sur CentOS 7
Configurer un serveur MineCraft Paper avec Ubuntu 20.04.1 LTS ② Mise à jour
Remarque: installez PostgreSQL 9.5 sur Ubuntu 18.04
Comment installer et utiliser Composer sur une instance ECS sur Ubuntu 16.04
Installez Ubuntu Server 20.04 dans VirtualBox sur Mac et établissez une connexion SSH
Installez JDK et JRE sur Ubuntu 16.10
[Ubuntu] Configurer un serveur Nukkit
Activer les SDK Java 8 et Java 11 sur Ubuntu
Installez SonarQube sur l'instance ECS sur Ubuntu 16.04
Installez ruby sur Ubuntu 20.04 avec rbenv
Mettez Zabbix dans Ubuntu avec Docker et surveillez Docker sur le même hôte
Analysez et visualisez les journaux CSV avec Excel Elastic Stack (docker-compose) - Configurez avec docker-compose
Remarques sur ce qu'il faut faire lorsque EC2 est configuré avec t2.micro
Construction de Rails 6 et environnement PostgreSQL avec Docker
DNS sur HTTPS avec Cloudflared sur Ubuntu
Comment configurer et utiliser kapt
Utiliser cljstyle avec Spacemacs sur Ubuntu sur WSL2
Configurer le registre Docker localement sur CentOS 7
Construire OpenCV avec Java Wrapper sur Ubuntu 18.04
Exécutez Ubuntu + ROS avec Docker sur Mac
Résumé de la construction de l'environnement avec rvm et postgresql
Configurer le service de métabase sur Windows Server 2012
Surveillez le conteneur Docker et le processus SystemD sur le même hôte avec Zabbix sur Ubuntu.
Présentation d'un Dark Jupyter Notebook avec des raccourcis clavier pyenv et Vim sur Ubuntu sur WSL 2
Comment configurer la vision par ordinateur pour le suivi des images et des vidéos avec TrackingJs