[PYTHON] Erstellen Sie eine Kolben-App mit Tensorflow und Dlib für Centos7

Erstellen Sie, wie der Titel schon sagt, eine Umgebung, in der die Kolben-App mit Tensorflow auf Ceontos 7.1 ausgeführt wird. Einleitung Es wird davon ausgegangen, dass die Umgebung von centos 7.1 mit conoha eingerichtet ist, wie in [diesem Artikel] gezeigt (http://qiita.com/orange634/items/337061f3b0b5a8eaae0f).

App-Konfiguration

Ich benutze Python, Kolben, Anakonda, Tensorflow, Dlib, OpenCV. Die Konfiguration der App ist wie folgt.

.
├── evaluation.py #Beurteilen Sie das Bild. Verwenden Sie dlib, opencv, tensorflow.
├── guniconf.py
├── lib #Wo werden die trainierten Daten von dlib und tensorflow abgelegt?
├── model.py #Verwenden Sie ein Format namens Modell, um die Handhabung von Bilddaten zu vereinfachen
├── static
│   ├── css
│   │   └── style.css
│   ├── images/
│   ├── js
│   │   └── main.js
│   └── robots.txt
├── templates
│   ├── index.html
│   └── layout.html
└── web.py #Erhält eine Anfrage und gibt das Ergebnis zurück

Anakonda einsetzen

Ich werde Pyenv verwenden, um Anakonda zu setzen. Ich bezog mich hier auf die Installation von Pyenv mit Centos. http://qiita.com/glostuan/items/6030e309542615470e0d

$ sudo yum install epel-release #Epel-Repository hinzufügen
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel git
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ vim .bash_profile
#hinzufügen
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

$ source .bash_profile #Reflektieren
$ pyenv install --list
# anaconda3-4.0.Überprüfen Sie, ob 0 vorhanden ist
$ pyenv install anaconda3-4.0.0
$ pyenv global anaconda3-4.0.0
$ pyenv versions
  system
* anaconda3-4.0.0 (set by /home/develop/.pyenv/version)

Jetzt können Sie Anakonda verwenden.

Installation von opencv

Zuerst habe ich viel recherchiert, um opencv zu platzieren, und ich dachte, ich würde die abhängigen Bibliotheken einzeln platzieren, aber die Menge war so groß, dass ich sie nicht gut einfügen konnte. Schließlich habe ich, wie auf der folgenden Website gezeigt, das alte opencv mit yum installiert und die abhängigen Bibliotheken installiert. Anschließend habe ich das alte opencv entfernt und konnte es erfolgreich herunterladen. https://daichan.club/linux/78330 Es gab jedoch eine Bibliothek, die dieses Mal nicht installiert war, um opnecv auszuführen, daher habe ich sie separat mit yum installiert.

$ sudo yum install epel-release #Epel-Repository hinzufügen
$ sudo yum update
$ sudo yum install opencv #Legen Sie den alten opencv ein
#Abhängige Bibliotheksinstallation

$ sudo yum remove opencv #Altes opencv löschen
$ conda install -c menpo opencv3
$ conda install -c menpo dlib
$ conda install -c meznom boost-python
$ conda install -c conda-forge tensorflow=1.1.0

#Wechseln Sie in das App-Verzeichnis

$ python web.py server
#Bestätigen Sie den Start und die Ausführung
#Lesen Sie den Fehler und installieren Sie die erforderlichen Bibliotheken
$ sudo yum install libpng12

Führen Sie als Nächstes die App mit Nginx + Gunicorn aus. Wir werden es unter Bezugnahme auf diesen Artikel einrichten. http://qiita.com/Alice1017/items/fb28e1055c6e498d021e

Gunicorn und Nginx einrichten

Installieren Sie das Gunicorn. Sie können es von pip setzen, aber ich dachte, es wäre besser, es mit anderen Dingen zu vereinen, also habe ich es von conda gesetzt.

$ conda install -c anaconda gunicorn
$ gunicorn web:app --config guniconf.py
# /tmp/gunicorn_my_app.Überprüfen Sie, ob Socke generiert wird

guniconf.py wird wie folgt eingestellt.

guniconf.py


import multiprocessing

# Server Socket
bind = 'unix:/tmp/gunicorn_my_app.sock'
backlog = 2048

# Worker Processes
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = 'sync'
worker_connections = 1000
max_requests = 0
timeout = 30
keepalive = 2
debug = False
spew = False

# Logging
logfile = '/var/www/app/log/error.log'
loglevel = 'error'
logconfig = None

# Process Name
proc_name = 'gunicorn_my_app'

Als nächstes installieren Sie nginx. Da nginx in epel alt ist, registrieren wir uns und installieren das nginx-Repository, damit Sie das neueste nginx selbst installieren können.

$ sudo vim /etc/yum.repos.d/nginx.repo
#Folgende Inhalte wurden hinzugefügt
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

$ sudo yum -y --enablerepo=nginx install nginx

Bearbeiten Sie die Nginx-Konf. Lassen Sie uns die Originaldatei für alle Fälle behalten.

$ cd /etc/nginx/conf.d/
$ sudo mv default.conf default.conf.org
$ sudo vim default.conf

Stellen Sie wie folgt ein.

default.conf


upstream my_app_server{
    server unix:/tmp/gunicorn_my_app.sock;
}

server {
  listen 80 default_server;

  error_page 404 /404.html;

  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
          root /usr/share/nginx/html;
  }

  location / {
          try_files $uri @my_app;
          client_max_body_size 20M;
  }

  location @my_app {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_redirect off;
          proxy_request_buffering off;

          proxy_pass http://my_app_server;
  }

}

client_max_body_size und proxy_request_buffering werden aufgrund der von mir erstellten App wie folgt eingestellt. Wir würden uns freuen, wenn Sie die Einstellungen entsprechend überprüfen könnten.

Starten Sie nginx neu und prüfen Sie, ob es funktioniert.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx
# guniconf.Wechseln Sie in das Verzeichnis, in dem sich py befindet
$ gunicorn web:app --config guniconf.py
#Überprüfen Sie mit dem Browser

Wenn Sie dies mit dem Browser überprüfen können, beenden Sie mit "Strg + C".

Vorstellung des Betreuers

Als nächstes werde ich Supervisor verwenden, um die Bedienung des Gunicorn-Daemons zu vereinfachen. Es ist am einfachsten, lecker zu verwenden.

$ sudo yum install supervisor
$ sudo vim /etc/supervisord.d/my_app.ini

my_app.ini


[program:my_app]
command = /home/develop/.pyenv/shims/gunicorn web:app --config /var/www/app/guniconf.py
directory = /var/www/app/
user = root 

Registrieren Sie den Supervisor bei systemd.

$ sudo vim /etc/systemd/system/supervisord.service

supervisord.service


[Unit]
Description=Supervisor process control system for UNIX
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target
$ sudo systemctl list-unit-files --type=service
#Überprüfen Sie, ob der Supervisor registriert ist

$ sudo systemctl start supervisord
$ sudo systemctl status supervisord
$ sudo systemctl stop supervisord
#Überprüfen Sie, ob die oben genannten drei ordnungsgemäß funktionieren

$ sudo systemctl enable supervisord.service
#Auf automatischen Start einstellen

#Wenn es richtig eingestellt ist, funktioniert es bereits, aber nur für den Fall, führen Sie es aus und überprüfen Sie
$ sudo supervisorctl reread
$ sudo supervisorctl update
$ sudo supervisorctl start my_app

Sie sollten jetzt über Ihren Browser darauf zugreifen können.

Recommended Posts

Erstellen Sie eine Kolben-App mit Tensorflow und Dlib für Centos7
So stellen Sie eine mit Flask erstellte Web-App für Heroku bereit
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Von der Einführung von Flask unter CentOS bis zum Service unter Nginx und uWSGI
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Erstellen Sie eine TensorFlow-Entwicklungsumgebung auf Amazon EC2 mit Befehlskopie
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
Schritte zum Einrichten von Pipenv, Erstellen einer CRUD-App mit Flask und Containerisieren mit Docker
So installieren Sie TensorFlow unter CentOS 7
Erstellen Sie eine Python3-Umgebung unter CentOS7
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Erstellen Sie eine Django-App auf Docker und stellen Sie sie in AWS Fargate bereit
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
Erstellen Sie eine einfache Web-App mit Flasche
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock
Erstellen Sie CentOS 8 unter ESXi 6.7 mit minimaler Konfiguration
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Erstellen Sie eine Web-App, die PDF mit Flask und PyPDF2 in Text konvertiert
Erstellen Sie eine PYNQ-Umgebung auf Ultra96 V2 und melden Sie sich bei Jupyter Notebook an
Bis Python mit Pythonbrew installiert ist und Flask auf dem WSGI-Server ausgeführt wird
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
So entwickeln Sie eine Cart-App mit Django
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Starten Sie einen Webserver mit Python und Flask
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Mattermost Bot mit Python gemacht (+ Flask)
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
So erstellen Sie eine schöne Python-Umgebung auf einem neuen Mac und installieren Jupter Notebook
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Erstellt eine Web-App, die IT-Ereignisinformationen mit Vue und Flask abbildet
Memo Ein Anfänger hat versucht, eine Java-Umgebung zu erstellen und unter Ubuntu 18.04.2 LTS ins Japanische zu übersetzen.
Ich möchte mit einem Knopf am Kolben übergehen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit Py2app und Tkinter eine native GUI-App
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Freigeben von Ordnern für Docker und Windows mit Tensorflow
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Ich möchte mit einem Roboter in Python arbeiten.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Arbeitsnotiz, die ich i18n mit Flask App ausprobiert habe
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
[How to!] Lerne und spiele Super Mario mit Tensorflow !!