Construisez un environnement django sur Raspai. Car je voulais. La tarte aux framboises utilisée était la Raspberry pi 3B +.
Quand j'ai vérifié les informations de construction de l'environnement Django, tout était vieux, et j'ai eu du mal à le configurer avec mariadb car MySQL n'est pas inclus dans Raspeye, donc c'est un mémo.
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.11 (stretch)
Release: 9
Codename: stretch
$ uname -a
Linux raspberry 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv71 GNU/Linux
$ sudo apt update
$ sudo apt upgrade -y
$ sudo reboot
Python Il aurait dû être installé depuis le début, vous pouvez donc l'ignorer. Si la version est faible, vous souhaiterez peut-être mettre à jour vers 3.7.x.
$ sudo apt install python3 python3-dev
$ python3 -V
Python 3.7.3
Django
$ sudo apt install python3-django
$ pip3 install Django==3.0.6
$ django-admin --version
3.0.6
Vous pouvez vérifier s'il s'agit de la dernière version avec $ pip3 list --outdated
.
MySQL(mariadb) Puisque MySQL lui-même ne peut pas être installé, installez mariadb.
$ sudo apt install mariadb-server
$ mysql --version
mysql Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (i686) using readline 5.2
$ sudo apt install libmariadb-dev
$ pip3 install --no-binary :all: mysqlclient
~
Successfully installed mysqlclient-1.4.6
Définissez le mot de passe de l'utilisateur root. Définissez `` ******** '' sur n'importe quel mot de passe.
$ sudo -i
# mysql -u root
mysql> use mysql;
mysql> update user set plugin='' where user='root';
mysql> update user set password=password('********') where user='root';
mysql> flush privileges;
La déclaration de mise à jour peut être préparée.
Vous pouvez vérifier les informations de réglage avec sélectionner l'utilisateur, le mot de passe, le plugin de l'utilisateur;
.
mysql> create database mydb;
$ django-admin startproject mysite
Modifiez les deux points suivants dans settings.py
.
$ sudo nano mysite/mysite/settings.py
ʻALLOWED_HOSTS = Entrez '*' dans [] de [] `.
settings.py
# ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']
Initialement, sqlite3 est spécifié, alors commentez (ou supprimez) et décrivez les paramètres MySQL.
Spécifiez le nom de la base de données créée dans NAME
.
Réglez `` ******** '' sur le mot de passe défini.
settings.py
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': '********',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
$ python3 mysite/manage.py migrate
$ python3 mysite/manage.py runserver
Vérifions-le avec un navigateur au démarrage. Vous pouvez vous connecter avec le port local 8000. http://127.0.0.1:8000
Maintenant que vous avez une base, vous pouvez créer une application en consultant le site de référence.
Je vous remercie pour votre travail acharné.
Si vous ne pouvez pas installer en raison des mots suivants tels que ʻError Code 1`.
OSError: mysql_config not found
Installez ce qui suit:
$ sudo apt install python3-dev libmariadb-dev
Si vous oubliez le mot de passe de l'utilisateur root, réinitialisez le mot de passe.
$ mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
$ sudo -i
# service mysqld stop
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set plugin='' where user='root';
mysql> update user set password=password('********') where user = 'root';
mysql> flush privileges;
# kill -KILL [mysqld_PID sûr]
# kill -KILL [mysqld PID]
$ ps aux | grep mysqld
# service mysqld start
mysql> use mysql;
mysql> select * from user;
mysql> truncate table user;
mysql> flush privileges;
mysql> grant all privileges on *.* to root@localhost identified by '********' with grant option;
mysql> flush privileges;
# mysqld_safe --skip-grant-tables &
$ 2018-08-05T15:34:57.6NZ mysqld_safe A mysqld process already exists
Si vous vous fâchez quand on vous dit qu'il est déjà en cours d'exécution, arrêtez le processus qui est déjà en cours d'exécution. Vérifiez le PID ci-dessus et Tuez.
Celui qui a tendance à se lever en regardant de vieilles informations.
Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
Comme solution dans la version précédente, il semble écrire le programme suivant dans $ pip install mysqlclient
ou setting.py
, et si vous vérifiez l'erreur telle quelle, seules ces informations sortiront, mais cette solution elle-même Est vieux.
settings.py
#Cette solution est ancienne et doit être supprimée
import pymysql
pymysql.install_as_MySQLdb()
Puisque pymysql
est obsolète depuis django 2.0, veuillez le désinstaller si vous en avez un.
Actuellement, mysqlclient
est utilisé, donc installez-le avec le contenu suivant.
$ pip3 install --force-reinstall --ignore-installed --no-binary :all: mysqlclient
Le simple fait de l'installer normalement ($ pip3 install mysqlclient
) ne semble pas faire référence à django, et la même erreur se produit.