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.
Erstellen Sie eine Apache-Umgebung. Installieren Sie, was Sie brauchen
sudo apt-get install apache2 apache2-bin apache2-dev
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
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.
Erstellen Sie von nun an eine Django-Anwendung oder lesen Sie das Tutorial. (Ich werde es hier weglassen)
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.