Baue eine Django-Umgebung auf Raspai. Weil ich wollte. Die verwendete Raspeltorte war Raspberry pi 3B +.
Als ich die Konstruktionsinformationen der Django-Umgebung überprüfte, war alles alt, und es fiel mir schwer, sie mit Mariadb einzustellen, da MySQL nicht in Raspeye enthalten ist. Es handelt sich also um ein Memo.
$ 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 Es sollte von Anfang an installiert worden sein, damit Sie es überspringen können. Wenn die Version niedrig ist, möchten Sie möglicherweise auf 3.7.x aktualisieren.
$ 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
Sie können überprüfen, ob es sich um die neueste Version mit $ pip3 list --outdated
handelt.
MySQL(mariadb) Da MySQL selbst nicht installiert werden kann, installieren Sie 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
Legen Sie das Root-Benutzerpasswort fest. Setzen Sie "********" auf ein beliebiges Passwort.
$ 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;
Die Update-Anweisung kann zusammengestellt werden.
Sie können die Einstellungsinformationen mit "Benutzer auswählen, Passwort, Plugin vom Benutzer auswählen" überprüfen.
mysql> create database mydb;
$ django-admin startproject mysite
Ändern Sie die folgenden zwei Punkte in settings.py
.
$ sudo nano mysite/mysite/settings.py
Geben Sie '*' in [] von ALLOWED_HOSTS = []
ein.
settings.py
# ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']
Zunächst wird sqlite3 angegeben. Kommentieren Sie die MySQL-Einstellungen aus (oder löschen Sie sie) und beschreiben Sie sie.
Geben Sie den erstellten DB-Namen in NAME
an.
Setzen Sie "********" auf das eingestellte Passwort.
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
Lassen Sie es uns mit einem Browser überprüfen, wenn es startet. Sie können eine Verbindung mit dem lokalen Port 8000 herstellen. http://127.0.0.1:8000
Nachdem Sie eine Grundlage haben, können Sie eine App erstellen, während Sie sich die Referenzsite ansehen.
Danke für deine harte Arbeit.
Wenn Sie aufgrund der folgenden Wörter wie "Fehlercode 1" keine Installation durchführen können.
OSError: mysql_config not found
Installieren Sie Folgendes:
$ sudo apt install python3-dev libmariadb-dev
Wenn Sie das Kennwort des Root-Benutzers vergessen haben, setzen Sie das Kennwort zurück.
$ 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_sichere PID]
# 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
Wenn Sie wütend werden, wenn Ihnen mitgeteilt wird, dass es bereits ausgeführt wird, stoppen Sie den bereits ausgeführten Prozess. Überprüfen Sie die PID oben und töten Sie.
Derjenige, der dazu neigt aufzustehen, wenn er alte Informationen betrachtet.
Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?
Als Lösung in der vorherigen Version scheint das folgende Programm in "$ pip install mysqlclient" oder "settings.py" zu schreiben. Wenn Sie den Fehler so wie er ist überprüfen, werden nur diese Informationen ausgegeben, aber diese Lösung selbst Ist alt.
settings.py
#Diese Lösung ist alt und sollte entfernt werden
import pymysql
pymysql.install_as_MySQLdb()
Ab django 2.0 ist pymysql
veraltet. Wenn Sie also eines haben, deinstallieren Sie es bitte.
Derzeit wird "mysqlclient" verwendet. Installieren Sie es daher mit den folgenden Inhalten.
$ pip3 install --force-reinstall --ignore-installed --no-binary :all: mysqlclient
Die normale Installation ($ pip3 install mysqlclient
) scheint nicht auf django zu verweisen, und der gleiche Fehler tritt auf.
Recommended Posts