Résumer la procédure de création d'un environnement de développement Django + Apache sur Ubuntu 18.04 de Windows 10 WSL
Permet à apache2 d'accéder à python via mod_wsgi. En outre, nous rendrons VScode disponible en tant qu'IDE distant pouvant être utilisé avec WSL.
Comme systemctl ne peut pas être utilisé dans WSL, le fonctionnement d'apache change un peu, lorsque vous utilisez anaconda, vous devez changer le paramètre de référence par vous-même sauf si vous installez mod_wsgi avec pip, le paramètre d'apache2.conf est difficile à comprendre, il est facile de trébucher Je pense que c'est l'endroit.
Activez WSL et installez Ubuntu 18.04 https://qiita.com/matarillo/items/61a9ead4bfe2868a0b86
Mise à jour
terminal
sudo apt update
sudo apt upgrade
Installez et démarrez apache2 et apache2-dev
terminal
sudo apt install apache2
sudo apt install apache2-dev
sudo /etc/init.d/apache2 start
Apache devrait maintenant attendre sur http: // localhost. Si vous l'ouvrez dans un navigateur, index.html dans la racine du document / var / www / html / s'ouvrira. Pour l'arrêter, c'est s'arrêter
terminal
sudo /etc/init.d/apache2 stop
Lors du redémarrage pour refléter le changement de paramètre, redémarrez
terminal
sudo /etc/init.d/apache2 restart
Installez pyenv
terminal
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
À travers PATH
terminal
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
Vérifiez la version d'anaconda qui peut être installée
terminal
pyenv install -l | grep anaconda
Installez la version d'anaconda de votre choix. Ci-dessous, la version 2020.02 est installée.
terminal
pyenv install anaconda3-2020.02
pyenv rehash
pyenv global anaconda3-2020.02
Mettez-le dans votre PATH.
terminal
echo 'export PATH="$PYENV_ROOT/versions/anaconda3-2020.2/bin/:$PATH"' >> ~/.bashrc
conda init
source ~/.bashrc
Créez un environnement conda. Ci-dessous, nous créons un environnement python3.7 nommé django. xxxx est le nom d'utilisateur.
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
Installer et vérifier la version
terminal
pip install django
django-admin --version
Créons un projet et déplaçons-le. Vous pouvez créer un projet nommé hoge en créant un répertoire et en faisant django-admin startproject hoge.
terminal
mkdir django
cd django
django-admin startproject proj1
Exécutez manage.py créé dans le répertoire créé à partir de python pour exécuter un serveur simple et vérifier l'opération.
terminal
cd proj1
python manage.py migrate
python manage.py runserver
Ouvrez http: // localhost: 8000 dans votre navigateur et vous devriez voir la page d'exemple de django.
Il existe également un moyen d'installer mod_wsgi à partir d'apt, mais le paramètre par défaut est que mod_wsgi installé avec apt fait référence à python lorsque l'installation d'apt python est effectuée au lieu d'anaconda. Si vous utilisez anaconda, je pense que c'est plus facile à installer à partir de pip.
terminal
pip install mod_wsgi
pip install mod-wsgi-httpd
Mettez-le dans votre PATH. xxxx est le nom d'utilisateur.
terminal
echo 'export PATH=/home/xxxx/.pyenv/versions/anaconda3-2020.02/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Mod_wsgi devrait maintenant fonctionner. Lançons un serveur simple et vérifions le fonctionnement. La commande suivante attendra le serveur simple à l'adresse http: // localhost: 8000, alors ouvrez-le dans votre navigateur.
terminal
mod_wsgi-express start-server
Si le serveur mod_wsgi-express fonctionne correctement, vous verrez une image qui ne ressemble pas à l'exemple de page ci-dessus.
Enfin, récupérez les informations à écrire dans le fichier de configuration Apache2.
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"
Copions ce qui précède quelque part.
django Ajoutez apache2.conf comme officiel. https://docs.djangoproject.com/ja/2.0/howto/deployment/wsgi/modwsgi/
Si vous avez créé le projet django dans / home / xxxx / django /, il ressemblera à celui ci-dessous. Les deux premières lignes sont une copie de ce qui est affiché dans mod_wsgi-express module-config, avec le PATH de wsgi.py créé dans le répertoire du projet django créé par WSGIScriptAlias, et le manage.py du projet django créé par WSGIPythonPath. Le répertoire PATH et Direcoty sont le répertoire PATH de wsgi.py ci-dessus.
/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>
J'ai changé les paramètres d'Apache, alors redémarrez-le.
terminal
sudo /etc/init.d/apache2 restart
Ouvrez http: // localhost dans votre navigateur et vérifiez. Si cela ressemble à ce qui précède, c'est OK.
Si le contenu de apache2.conf est incorrect ou si certains packages ne peuvent pas être installés, une erreur de serveur interne se produit comme indiqué ci-dessous. Il est difficile de comprendre la cause avec cela seul, alors jugeons en regardant le journal des erreurs Apache. Si vous conservez les paramètres par défaut, vous pouvez le voir ci-dessous.
terminal
tail -f /var/log/apache2/error.log
Je pense que c'est soit parce que j'ai oublié de mettre quelque chose ou le PATH est différent.
WSL n'a pas d'interface graphique, mais l'extension WSL de VScode vous permet de développer avec une interface graphique. Activez l'extension WSL après l'installation de VScode sur Windows 10. Lorsque le code VS est démarré à partir de WSL avec la commande suivante, il semble que le code VS du côté Windows viendra s'exécuter du côté WSL.
terminal
cd test
code .
À propos, la limite d'autorisation est la même que celle d'Ubuntu, vous pouvez donc modifier avec l'autorité lorsque vous exécutez du code. Par exemple, dans / var / www / html / où le fichier statique d'apahce est placé, le propriétaire est root, donc si vous essayez de le changer à partir du compte utilisateur, vous obtiendrez une erreur comme l'image ci-dessous. Si vous changez de propriétaire, vous pouvez le changer, mais je ne sais pas si c'est bon pour la sécurité, alors faites-le moi savoir. Au fait, il semble que le code sudo ne puisse pas être exécuté.
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