Fassen Sie das Verfahren zum Erstellen einer Django + Apache-Entwicklungsumgebung unter Ubuntu 18.04 von Windows 10 WSL zusammen
Ermöglicht Apache2 den Zugriff auf Python über mod_wsgi. Außerdem stellen wir VScode als Remote-IDE zur Verfügung, die mit WSL verwendet werden kann.
Da systemctl in WSL nicht verwendet werden kann, ändert sich die Funktionsweise von Apache ein wenig. Wenn Sie anaconda verwenden, müssen Sie die Referenzeinstellung selbst ändern, es sei denn, Sie installieren mod_wsgi mit pip. Die Einstellung von apache2.conf ist schwer zu verstehen und leicht zu stolpern Ich denke es ist der Ort.
Aktivieren Sie die WSL und installieren Sie Ubuntu 18.04 https://qiita.com/matarillo/items/61a9ead4bfe2868a0b86
Aktualisieren
terminal
sudo apt update
sudo apt upgrade
Installieren und starten Sie apache2 und apache2-dev
terminal
sudo apt install apache2
sudo apt install apache2-dev
sudo /etc/init.d/apache2 start
Jetzt sollte Apache unter http: // localhost warten. Wenn Sie es in einem Browser öffnen, wird index.html im Dokumentstamm / var / www / html / geöffnet. Zu stoppen ist zu stoppen
terminal
sudo /etc/init.d/apache2 stop
Starten Sie den Computer neu, um die Änderung der Einstellungen widerzuspiegeln
terminal
sudo /etc/init.d/apache2 restart
Installieren Sie pyenv
terminal
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Durch den Weg
terminal
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
Überprüfen Sie die Version von Anaconda, die installiert werden kann
terminal
pyenv install -l | grep anaconda
Installieren Sie die Version von Anaconda Ihrer Wahl. Unten ist die Version 2020.02 installiert.
terminal
pyenv install anaconda3-2020.02
pyenv rehash
pyenv global anaconda3-2020.02
Legen Sie es in Ihren Pfad.
terminal
echo 'export PATH="$PYENV_ROOT/versions/anaconda3-2020.2/bin/:$PATH"' >> ~/.bashrc
conda init
source ~/.bashrc
Erstellen Sie eine Conda-Umgebung. Im Folgenden erstellen wir eine Python3.7-Umgebung mit dem Namen django. xxxx ist der Benutzername.
terminal
conda create -n django python=3.7
echo 'export PYTHONHOME=/home/xxxx/.pyenv/versions/anaconda3-2020.02' >> ~/.bashrc
echo 'export PYTHONPATH=/home/xxxx/.pyenv/versions/anaconda3-2020.02/bin:/home/xxxx/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages' >> ~/.bashrc
conda create django
Version installieren und überprüfen
terminal
pip install django
django-admin --version
Lassen Sie uns ein Projekt erstellen und verschieben. Sie können ein Projekt mit dem Namen hoge erstellen, indem Sie ein Verzeichnis erstellen und django-admin startproject hoge ausführen.
terminal
mkdir django
cd django
django-admin startproject proj1
Führen Sie die im erstellten Verzeichnis von Python erstellte Datei "manage.py" aus, um einen einfachen Server auszuführen und den Vorgang zu überprüfen.
terminal
cd proj1
python manage.py migrate
python manage.py runserver
Öffnen Sie http: // localhost: 8000 in Ihrem Browser und Sie sollten die Django-Beispielseite sehen.
Es gibt auch eine Möglichkeit, mod_wsgi von apt aus zu installieren. Die Standardeinstellung ist jedoch, dass sich mod_wsgi, das mit apt installiert wurde, auf Python bezieht, wenn apt install python anstelle von anaconda installiert wird. Wenn Sie Anaconda verwenden, ist es meiner Meinung nach einfacher, es von Pip aus zu installieren.
terminal
pip install mod_wsgi
pip install mod-wsgi-httpd
Legen Sie es in Ihren Pfad. xxxx ist der Benutzername.
terminal
echo 'export PATH=/home/xxxx/.pyenv/versions/anaconda3-2020.02/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Mod_wsgi sollte jetzt funktionieren. Lassen Sie uns einen einfachen Server ausführen und den Betrieb überprüfen. Der folgende Befehl wartet auf den einfachen Server unter http: // localhost: 8000. Öffnen Sie ihn daher in Ihrem Browser.
terminal
mod_wsgi-express start-server
Wenn der mod_wsgi-express-Server ordnungsgemäß funktioniert, wird ein Bild angezeigt, das nicht wie auf der obigen Beispielseite aussieht.
Schließlich erhalten Sie die Informationen zum Schreiben in die Apache2-Konfigurationsdatei.
terminal
mod_wsgi-express module-config
terminal
LoadModule wsgi_module "/home/xxxx/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so"
WSGIPythonHome "/home/xxxx/.pyenv/versions/anaconda3-2020.02"
Lassen Sie uns das Obige irgendwo kopieren.
django Füge apache2.conf als offiziell hinzu. https://docs.djangoproject.com/ja/2.0/howto/deployment/wsgi/modwsgi/
Wenn Sie das Django-Projekt in / home / xxxx / django / erstellt haben, sieht es wie folgt aus. Die ersten beiden Zeilen sind eine Kopie dessen, was in mod_wsgi-express module-config angezeigt wird, wobei der Pfad von wsgi.py im Verzeichnis des von WSGIScriptAlias erstellten Django-Projekts und die von WSGIPythonPath erstellte Datei manage.py des Django-Projekts erstellt werden. Das Verzeichnis PATH und Direcoty sind das Verzeichnis PATH von wsgi.py oben.
/etc/apache2/apache2.conf
LoadModule wsgi_module /home/xxxx/.pyenv/versions/anaconda3-2020.02/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so
WSGIPythonHome /home/xxxx/.pyenv/versions/anaconda3-2020.02
WSGIScriptAlias / /home/xxxx/django/proj1/proj1/wsgi.py
WSGIPythonPath /home/xxxx/django/proj1
<Directory /home/xxxx/django/proj1/proj1>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Ich habe die Apache-Einstellungen geändert, also starte sie neu.
terminal
sudo /etc/init.d/apache2 restart
Öffnen Sie http: // localhost in Ihrem Browser und überprüfen Sie. Wenn es so aussieht, ist es in Ordnung.
Wenn der Inhalt von apache2.conf falsch ist oder einige Pakete nicht installiert werden können, tritt ein interner Serverfehler auf, wie unten gezeigt. Es ist schwer, die Ursache allein damit zu verstehen. Lassen Sie uns also anhand des Apache-Fehlerprotokolls beurteilen. Wenn Sie die Standardeinstellungen beibehalten, sehen Sie sie unten.
terminal
tail -f /var/log/apache2/error.log
Ich denke, das liegt entweder daran, dass ich vergessen habe, etwas einzutragen, oder dass der Pfad anders ist.
WSL hat keine GUI, aber mit der WSL-Erweiterung von VScode können Sie mit einer GUI entwickeln. Aktivieren Sie die WSL-Erweiterung nach der Installation von VScode unter Windows 10. Wenn VS-Code von WSL mit dem folgenden Befehl gestartet wird, wird VS-Code auf der Windows-Seite anscheinend von der WSL-Seite ausgeführt.
terminal
cd test
code .
Das Berechtigungslimit entspricht übrigens dem von Ubuntu, sodass Sie bei der Ausführung von Code mit der Berechtigung bearbeiten können. In / var / www / html /, wo sich die statische Datei von apahce befindet, ist der Eigentümer root. Wenn Sie also versuchen, sie über das Benutzerkonto zu ändern, wird eine Fehlermeldung wie in der Abbildung unten angezeigt. Wenn Sie den Eigentümer wechseln, können Sie ihn ändern, aber ich weiß nicht, ob dies für die Sicherheit gut ist. Lassen Sie es mich bitte wissen. Übrigens scheint es, dass Sudo-Code. Kann nicht ausgeführt werden.
terminal
Unable to write file 'vscode-remote://wsl+ubuntu-18.04/var/www/html/test.html' (NoPermissions (FileSystemError): Error: EACCES: permission denied, open '/var/www/html/test.html')
https://docs.djangoproject.com/ja/2.0/howto/deployment/wsgi/modwsgi/ https://codelab.website/anaconda-django/ https://qiita.com/itisyuu/items/dafa535adc8197208af1 https://blog.capilano-fw.com/?p=369
Recommended Posts