...
Base de données MySQL/MariaDB
Installation de MariaDB
| Bloc de code |
|---|
(django_pod) pod@pod:/usr/local/django_projects/podv3$ $ sudo apt-get install mariadb-server mariadb-client $ sudo mysql_secure_installation |
Attention il faut modifier le fichier /etc/mysql/mariadb.conf.d/50-server.cnf
...
Vous devez ensuite créer une nouvelle base de données.
| Bloc de code |
|---|
(django_pod) pod@pod:/usr/local/django_projects/podv3$$ sudo mysqladmin create mydatabase |
Il faut ensuite donner les droits à cette base à un utilisateur renseigné dans votre fichier de settings ci-après
| Bloc de code |
|---|
(django_pod) pod@pod:/usr/local/django_projects/podv3$ $ sudo mysql mysql> GRANT ALL PRIVILEGES ON mydatabase.* TO 'mydatabaseuser'@127.0.0.1 IDENTIFIED BY 'mypassword'; Query OK, 0 rows affected (0.00 sec) mysql> exit |
Depuis la version 3.3.1 il faut installer le timezone dans le moteur SQL (Mysal ou mariadb) (à faire en tant que root mysql !)
| Bloc de code |
|---|
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql --database=mysql |
Pour utiliser la base de donnée données MySQL/MariaDB sur le serveur frontal (ou sur un serveur distant) il faut installer le moteur MySql/Python :
| Bloc de code |
|---|
(django_pod) pod@pod:/usr/local/django_projects/podv3$$ sudo apt-get install pkg-config python3-dev (django_pod) pod@pod:/usr/local/django_projects/podv3$ sudo apt-get install default-libmysqlclient-dev (django_pod) pod@pod:/usr/local/django_projects/podv3$ pip3 install mysqlclient |
Optimisation de MariaDB
Votre configuration doit être adaptée à la taille de votre base de donnée. Pour éviter d'éventuels souci lors des mises à jour, je vous invite à vous assurer que vous avez au minimum 256M pour le paramètre "max_allowed_packet" (voir plus si votre base de données est plus importante. Il faut indiquer la taille de votre plus grosse table)
| Bloc de code | ||
|---|---|---|
| ||
[mysqld]
max_allowed_packet=256M |
Configuration de Pod
Si ce n’est pas encore fait, vous devez spécifier la configuration de votre base de données dans votre fichier de configuration settings_local.py :
...
| Bloc de code |
|---|
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser',
'PASSWORD': 'mypassword',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET storage_engine=INNODB, sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
'charset': 'utf8mb4',
},
}
} |
Il faut ensuite relancer le script présent à la racine afin de créer les fichiers de migration, puis de les lancer afin de créer la base de données :
...
Pour plus de renseignement, d'explication que la documentation ci-dessous, voici le tutoriel que j'ai suivi pour mettre en place cette solution : doc{:target="_blank"}
Installation du serveur Web NGINX et paramétrage :
...
| Bloc de code |
|---|
(django_pod) pod@Pod:~/django_projects/podv3$ sudo apt-get install nginx |
Ensuite, modifier le fichier /etc/nginx/sites-enabled/default
...
Rechercher la ligne ci-dessous à modifiermodifier
| Bloc de code |
|---|
[...]
server { listen 80 default_server;
#listen [::]:80 default_server;
[...] |
...
| Bloc de code |
|---|
(django_pod) pod@Pod:~/django_projects/podv3$ sudo apt-get install nginx-extras |
Rajouter les lignes ci-dessous dans le fichier de configuration de nginx :
...
| Bloc de code |
|---|
(django_pod) pod@Pod:~/django_projects/podv3$ sudo systemctl enable uwsgi-pod |
Et pour Pour le lancer ou l’arrêter :
| Bloc de code |
|---|
(django_pod) pod@Pod:~/django_projects/podv3$ sudo systemctl stop uwsgi-pod (django_pod) pod@Pod:~/django_projects/podv3$ sudo systemctl restart uwsgi-pod |
...
Les fichiers de log peuvent vite grossir sur un serveur en production. Aussi, je vous invite à mettre en place un systeme système de log rotate pour les log logs d'Esup-Pod :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
/usr/local/django_projects/podv3/pod/log/*.log {
su poduserpod nginxwww-data
daily
missingok
rotate 14
nocompress
delaycompress
notifempty
create 0640 poduserpod nginxwww-data
sharedscripts
postrotate
systemctl restart uwsgi-pod >/dev/null 2>&1
endscript
}
|
Puis lancez la commande suivante pour vérifier que ca ça fonctionne :
sudo logrotate -d /etc/logrotate.d/esup-pod