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).
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
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.
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
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".
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.