[PYTHON] Anaconda + Diango verbinden

Anaconda + Diango verbinden

In diesem Artikel erstellen wir einen LINE BOT, indem wir Anaconda + Diango verknüpfen. Es ist ziemlich nervig, also solltest du es nicht tun, wenn du lol kannst

Ich werde ab dem Zeitpunkt der Erstellung der Umgebung schreiben, bitte beenden Sie die grundlegenden Ubuntu-Einstellungen vorher.

Schaffung einer Umgebung

Erstellen einer Apache-Umgebung

Erstellen Sie eine Apache-Umgebung. Installieren Sie, was Sie brauchen

sudo apt-get install apache2 apache2-bin apache2-dev

Installation von Anaconda

Installieren Sie als Nächstes Anaconda.

wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh

sudo bash Anaconda3-2020.02-Linux-x86_64.sh

Befolgen Sie die Anweisungen zur Installation. (Um auch Conda zu erkennen)

Als nächstes werden wir Anaconda einrichten. Installieren Sie Django.

sudo conda install django

Die Version von Django ist unten:

python -m django --version
3.0.3

Django-Projekterstellung

Als nächstes werden wir ein Djanog-Projekt erstellen. Die Tutorial-Seite war hilfreich: https://docs.djangoproject.com/ja/2.2/intro/tutorial01/

Führen Sie diesmal wie folgt aus.

django-admin startproject linebot

Dadurch wird ein Ordner namens linebot in Ihrem aktuellen Verzeichnis erstellt.

python manage.py runserver 0.0.0.0:8000

Jetzt können Sie den Server starten.

_2020-04-03_18.17.13.png

Erstellen Sie von nun an eine Django-Anwendung oder lesen Sie das Tutorial. (Ich werde es hier weglassen)

Zusammenarbeit zwischen Django und Apache

Als nächstes werden wir Django, den Dämon Nummer eins, mit Apache verbinden. Verwenden Sie dazu mod_wsgi, um Django und Apache zu verbinden.

Zuerst installieren

pip install mod_wsgi

Suchen Sie dann den Installationsort.

python -c "import sys; print(sys.path)"
['', '/home/vagrant/anaconda3/lib/python37.zip', '/home/vagrant/anaconda3/lib/python3.7', '/home/vagrant/anaconda3/lib/python3.7/lib-dynload', '/home/vagrant/.local/lib/python3.7/site-packages', '/home/vagrant/anaconda3/lib/python3.7/site-packages']

(base) vagrant@vagrant:~/.local/lib/python3.7/site-packages/mod_wsgi/server$ ls
__init__.py  apxs_config.py  management
__pycache__  environ.py      mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so

Es hängt von der Umgebung ab, aber diesmal habe ich es mit Landstreichern gemacht, also war es an einem solchen Ort.

Fügen Sie den Pfad wie folgt in /etc/apache2/mods-available/wsgi.load ein:

LoadModule wsgi_module /home/vagrant/.local/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so

Sie können dies auch in /etc/apache2/mods-available/wsgi.conf schreiben.

<IfModule mod_wsgi.c>
    WSGIPythonHome /home/vagrant/anaconda3
    WSGIPythonPath /home/vagrant/anaconda3/bin
</IfModule>

Aktivieren Sie dann wsgi.

sudo a2enmod wsgi

Enabling module wsgi.
To activate the new configuration, you need to run:
  systemctl restart apache2

Es ist in Ordnung, wenn eine solche Anzeige erscheint.

Als Nächstes erstellen wir eine Site-Einstellungsdatei.

/etc/apache2/sites-available/default-ssl.conf

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName mikuaka.ddo.jp
 
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 
</VirtualHost>

NameVirtualHost *:443

<IfModule mod_ssl.c>
	<VirtualHost _default_:443>

    ServerAdmin [email protected]
    ServerName your.name.com
    ServerAlias www.your.name.com

    WSGIDaemonProcess name display-name=%{GROUP} user=www-data group=www-data python-path=/home/ubuntu/your/project
    WSGIProcessGroup name

    WSGIScriptAlias / /var/www/name/wsgi.py

    <Directory "/var/www/name">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    Alias /static/ /var/www/name/static/

    <Directory /var/www/name/static/>
        Require all granted
    </Directory>

		ErrorLog ${APACHE_LOG_DIR}/error.log
		CustomLog ${APACHE_LOG_DIR}/access.log combined

		SSLEngine on
		SSLCertificateFile	/etc/letsencrypt/live/your.name.com/cert.pem
		SSLCertificateKeyFile	/etc/letsencrypt/live/your.name.com/privkey.pem
		SSLCertificateChainFile /etc/letsencrypt/live/your.name.com/chain.pem
		
 		<FilesMatch "\.(cgi|shtml|phtml|php)$">
				SSLOptions +StdEnvVars
		</FilesMatch>
		<Directory /usr/lib/cgi-bin>
				SSLOptions +StdEnvVars
		</Directory>

	</VirtualHost>
</IfModule>

Ich habe es so gemacht. ↑ enthält auch SSL-Einstellungen.

Starten Sie schließlich Apache neu.

sudo service apache2 restart

Wie war es? Die Zusammenarbeit zwischen Django und Apache ist ziemlich nervig, also hoffe ich, dass Sie verstehen, dass Sie es nicht wollen.

Ich erstelle einen LINE-Bot in dieser Umgebung. Wenn ich es mir leisten kann, möchte ich dort auch einen Artikel schreiben.

Recommended Posts

Anaconda + Diango verbinden
Anakonda
Anakonda eingeführt
Anaconda 2.5 Release
Laden Sie Anaconda herunter