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.
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.
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
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.
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
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
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.
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:
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.
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
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
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.
Recommended Posts