Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver

Hinzugefügt am 2019.11.06.

Motivation

Ich verwende einen Heimserver mit GitLab und Mattermost, der unter CentOS 7 installiert ist, um eine Programmierumgebung zu Hause einzurichten (ich bereite einen separaten Artikel für dieses Setup vor. Es hat aus verschiedenen Gründen lange gedauert ...)

In Mattermost werden verschiedene Benachrichtigungen von GitLab angezeigt. Wenn jedoch ein Virus von ClamAV erkannt wird oder ein entsprechendes Protokoll an den privaten Kanal von Mattermost gesendet werden kann, ist die Verwaltung einfacher. Google Mail ist in viel Spam vergraben. Es scheint, dass Python eine Bibliothek namens slackweb hat, die Nachrichten an slack usw. senden kann. Das endgültige Ziel ist es also, sie zu installieren.

Ich habe jedoch überhaupt nicht mit Python auf dem Server gespielt, daher werde ich eine Umgebung erstellen, in der ich 3 Systeme anstelle von CentOS 7 Standard 2.7 verwenden kann. Da gesagt wird, dass es eine geeignete virtuelle Umgebung schafft, um die ursprüngliche Umgebung nicht zu verschmutzen, schien die virtuelle Umgebung von pyenv und pipenv gut zu sein, als ich sie googelte, also werde ich es vorerst versuchen.

Ergänzung zu $ und # Für die Konsole ist $ der lokale Benutzer und # der Root-Benutzer (sudo su state).

Vorbereitungen

Aktualisieren Sie die Umgebung zunächst wie gewohnt einmal mit "sudo yum update". Dieses Mal stieg GitLab von 12.4.0 auf 12.4.1 und das Update dauerte einige Zeit.

Installieren Sie pyenv

Installieren Sie zunächst die erforderlichen Pakete für pyenv.

# yum install gcc bzip2 bzip2-devel openssl openssl-devel readline readline-devel sqlite-devel tk-devel git

Dann klonen Sie Pyenv von Github. Platziert in / usr / local / pyenv, damit es von allen Benutzern verwendet werden kann.

# git clone git://github.com/pyenv/pyenv.git /usr/local/pyenv
# cd /usr/local/pyenv
# mkdir {versions,shims}  <- ,Setzen Sie kein Leerzeichen danach

Laden Sie auch das Paket für das Pyenv-Update herunter.

# cd plugins/
# git clone git://github.com/pyenv/pyenv-update

Geben Sie die Umgebungsvariable für pyenv an und übergeben Sie sie über den Pfad.

# echo 'export PYENV_ROOT="/usr/local/pyenv"' >> /etc/profile.d/pyenv.sh
# echo 'export PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/pyenv.sh

PATH kann auch zum Zeitpunkt von sudo übernommen werden

# visudo

Bearbeiten Sie oben die Zeile mit "secure_path" wie folgt.

#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults        env_keep += "PATH"
Defaults        env_keep += "PYENV_ROOT"

Melden Sie sich jetzt erneut an oder $ source / etc / profile.d / pyenv.sh und der Pfad wird übergeben, sodass Sie pyenv verwenden können.

$pyenv --version
pyenv 1.2.14-11-gb5f69fe
$pyenv install --list
~Die verfügbaren Python-Versionen sind gestaffelt~

(Es ist in Ordnung, den Pfad durchzugehen, aber ich verstehe nicht wirklich, warum das Bearbeiten des Inhalts von visudo so ist. Kann ich unter / sbin ... einen Kommentar abgeben?)

Installation von pipenv

Da pip selbst nicht enthalten war, installieren Sie von dort aus.

$curl https://bootstrap.pypa.io/get-pip.py | sudo python
$pip --version
pip 19.3.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)

Warten Sie als Nächstes auf die Installation von pipenv.

$sudo pip install pipenv
$pipenv --version
pipenv, version 2018.11.26

Erstellen Sie die virtuelle Umgebung selbst im Ordner # 2019.11.06 Addendum

Im obigen Zustand kann pipenv verwendet werden, und eine virtuelle Umgebung für jeden Ordner oder jedes Projekt kann mit pipenv --python 3.7.5 usw. im nächsten Abschnitt erstellt werden. Der Inhalt dieser virtuellen Umgebung wird jedoch in "~ / .local / share / virtualenvs /" erstellt. Als ich mich am Server anmeldete, wollte ich abrufen und benachrichtigen, wer sich mit getpass.getuser () bei Mattermost angemeldet hat. Da sich die Entität jedoch im Home-Verzeichnis jedes Benutzers befindet, möchte ich slack web erhalten Ich konnte es nicht lesen und warf einen Fehler. Da die Version von Python für andere Benutzer 3.7.5 war, wurde anscheinend die Umgebung von pyenv geladen, aber die Umgebung von pipenv konnte nicht geladen werden. Um dies zu vermeiden, definieren Sie "$ PIPENV_VENV_IN_PROJECT" als Umgebungsvariable. Infolgedessen wird die tatsächliche virtuelle Umgebung in jedem Projektverzeichnis im Verzeichnis ".venv" gespeichert. Ich möchte, dass alle angemeldeten Benutzer ".venv" jedes Projekts verwenden. Fügen Sie daher am Ende von "/ etc / bashrc" Folgendes hinzu.

/etc/bashrc


# To enable local virtual enviroment for pipenv
export PIPENV_VENV_IN_PROJECT=1

Jetzt können alle Benutzer alles von Programmen bis zu Umgebungen verarbeiten, die sie nur mit dem Inhalt eines einzelnen Verzeichnisses verwenden möchten.

Erstellen einer virtuellen Python-Umgebung mit pyenv und pipenv

Erstellen Sie einen Projektordner, um den Betrieb von slackweb zu überprüfen. Dies ist das ursprüngliche Ziel.

$mkdir my_program
$mkdir my_program/slackweb
$cd my_program/slackweb

Geben Sie Python 3.7.5 der neuesten Karte der 3.7-Serie als Umgebung an. Es scheint jedoch, dass libffi-devel erforderlich ist, um die 3.7-Serie oder höher zu verwenden. Installieren Sie es daher vor der Installation von 3.7. (Ich ging später hin und her, ohne dies zu tun)

$sudo yum install libffi-devel 
$sudo pyenv install 3.7.5

Nachdem wir 3.7.5 über pyenv haben, erstellen Sie eine virtuelle Umgebung, um sie im Ordner my_program / slackweb zu verwenden.

$pipenv --python 3.7.5

Überprüfen Sie in diesem Status, ob die Python-Version des Systems und die Python-Version von pipenv in diesem Ordner unterschiedlich sind.

$python --version
Python 2.7.5
$pipenv run python --version
Python 3.7.5

Wenn Sie "pipenv run" im Auge behalten, verwenden Sie den Befehl in dieser Umgebung. Das ist mit einer kleinen Bestätigung in Ordnung, aber wenn Sie unter der virtuellen Umgebung eingeben und alle nachfolgenden Befehle mit Python in der virtuellen Umgebung ausführen möchten, wenn Sie alle nachfolgenden Befehle mit Python in der virtuellen Umgebung ausführen möchten, geben Sie die Umgebung mit "pipenv shell" ein. Beenden beim Beenden. Selbst wenn Sie es von pipenv aus tun, ohne vorher pyenv zu machen, scheint es, dass es von der Installation von Python in Zusammenarbeit mit pyenv gemacht wird, aber in diesem Fall müssen Sie es mit sudo machen. Dann befindet sich die erstellte virtuelle Umgebung wahrscheinlich unter root (?). Diesmal wird sie also separat ausgeführt. Wenn Sie pyenv nur für lokale Benutzer installieren und den Pfad nur an sich selbst übergeben, benötigen Sie kein sudo (?)

Installieren Sie schließlich Slack Web.

$pipenv install slackweb

Wenn Sie "pip list" in einer normalen Shell ausführen, können Sie die von pip of system installierten Dinge sehen, jedoch in einer virtuellen Umgebung

[name@localhost slackweb]$ pipenv shell
(slackweb) [name@localhost slackweb]$ pip list
Package    Version
---------- -------
pip        19.3.1
setuptools 41.6.0
slackweb   1.0.5
wheel      0.33.6

Auf diese Weise können Sie den Inhalt der von Ihnen erstellten virtuellen Umgebung überprüfen. Hier ist ein Test, um zu sehen, ob Slackweb funktioniert:

(slackweb) [name@localhost slackweb]$python
Python 3.7.5 (default, Nov  3 2019, 00:13:05)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import slackweb
>>> slack = slackweb.Slack(url="Eingehende Web-Hook-Adresse Ihres Mattermost")
>>> slack.notify(text="This is a test from inside of the server.")

Auf dem Stadtplatz von Mattermost heißt es, dies sei ein Test innerhalb des Servers. Auf diese Weise können in Zukunft verschiedene Benachrichtigungen an Mattermost gesendet werden, was praktisch ist. Verschiedene Dinge werden wahrscheinlich weitergehen.

Senden Sie eine Anmeldemeldung an Mattermost # 2019.11.06 Addendum

Wir haben ein Programm vorbereitet, das Mattermost benachrichtigt, wenn sich der Server tatsächlich anmeldet.

login_notification.py


import slackweb
import getpass

slack = slackweb.Slack(url="Eingehende Web-Hook-Adresse Ihres Mattermost")
attachments = []
attachment = {"title": "Login notification",
              "pretext": "This is a notification from _Server FQDN_",
              "text": "**" + getpass.getuser() + "** logged in.",
              "mrkdwn_in": ["text", "pretext"]}
attachments.append(attachment)
slack.notify(channel="#Name des Benachrichtigungszielkanals",
             username="CentOS 7",
             attachments=attachments)

Das getpass -Modul ist übrigens die Standardbibliothek von Python, sodass Sie nicht versuchen müssen, es in pipenv zu speichern (oder besser gesagt, Sie leiden nur unter Fehlern, verschwenden Zeit ...). Wenn Sie es versehentlich installieren, bleibt ein seltsamer Datensatz in der Pipfile zurück. Löschen Sie daher unnötige Informationen mit "pipenv uninstall getpass", "pipenv clean".

Danach können Sie eine Anmeldemeldung erhalten, indem Sie diese ausführen. Führen Sie einfach "pipenv run python login_notification.py" aus, aber ich möchte, dass Sie nur einmal automatisch benachrichtigt werden, wenn Sie sich anmelden. Fügen Sie es daher am Ende von / etc / bashrc hinzu, damit dies auch für alle Benutzer geschieht.

/etc/bashrc


# Notify the login to mattermost
cd /home/username/my_program/slackweb/    <-Benutzername ist der Benutzer, der die oben genannte Umgebung und das Programm erstellt hat
pipenv run python login_notification.py
cd ~     <-Ich weiß nicht, was ich später tun soll, daher gehe ich zurück zum Haus des angemeldeten Benutzers

Jedes Mal, wenn Sie sich mit "ssh" oder "sudo su" anmelden, werden Sie Mattermost darüber informiert, dass Sie sich als jeder Benutzer oder Root angemeldet haben. Mattermost kann Benachrichtigungen problemlos mit Smartphones verknüpfen. Selbst wenn eine verdächtige Person ohne Ihr Wissen die Kontrolle übernimmt, können Sie dies sofort bemerken. Es ist nur eine Versicherung für den Seelenfrieden, daher ist es wichtiger zu verhindern, dass der private Schlüssel für den Zugriff durchgesickert ist, aber ich denke, es ist sehr wichtig, dass sich die Menschen wohl fühlen. (In diesem Sinne bin ich überhaupt nicht erleichtert, weil ich mir Sorgen mache, dass ich beim Hochladen dieses Artikels versehentlich den Web-Hook oder den Benutzernamen offenlegen könnte.)

Referenzseite

Installieren Sie Pyenv unter CentOS und erstellen Sie eine Python 3-Entwicklungsumgebung

[Python] Erstellen Sie eine virtuelle Python-Umgebung mit pyenv und pipenv (CentOS 7 fast vom Ausgangszustand aus)

Ich habe versucht, Pipenv für die Python-Entwicklung zu verwenden

Pipenv: Python-Entwicklungsworkflow für Menschen (pipenv Official)

POST-Nachricht von Python an Slack über eingehenden Webhook

Recommended Posts

Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver
Erstellen Sie eine Python3-Umgebung unter CentOS7
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Erstellen Sie eine Python-Entwicklungsumgebung auf Ihrem Mac
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie eine Python-Umgebung in Centos
Erstellen Sie eine Python-Umgebung unter MacOS (Catallina)
Erstellen Sie eine Python-Umgebung auf Ihrem Mac
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
Erstellen Sie eine Python + OpenCV-Umgebung in Cloud9
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Erstellen Sie einfach eine Python 3-Ausführungsumgebung unter Windows
Erstellen Sie eine Python-Umgebung auf einem Mac (Mountain Lion)
Erstellen Sie eine Kubernetes-Umgebung für die Entwicklung unter Ubuntu
Erstellen einer Python-Umgebung auf dem Sakura VPS-Server
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
Erstellen Sie eine Versionsverwaltungsumgebung für Python, Ruby, Perl, Node.js unter UNIX
Erstellen Sie eine LAMP-Umgebung [CentOS 7]
Erstellen Sie eine Python-Umgebung unter Windows
Erstellen Sie eine Python-Umgebung mit Windows
Erstellen Sie die Python-Umgebung offline
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (3) GVim8.0 und Python3.6
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
Erstellen Sie eine lokale Entwicklungsumgebung für Laravel6.X auf Ihrem Mac
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (1)
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Vorgehensweise zum Erstellen einer CDK-Umgebung unter Windows (Python)
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
Erstellen einer Python-Umgebung auf einem Mac
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Erstellen Sie eine Umgebung für maschinelles Lernen mit Python unter MacOSX
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
Erstellen einer Python-Umgebung unter Ubuntu
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
Erstellen Sie eine GVim-basierte Python-Entwicklungsumgebung unter Windows 10 (2) Grundeinstellungen
Richten Sie die Python-Umgebung unter CentOS ein
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Erstellen Sie die Python-Erweiterung E-Cell 4 unter Mac OS X (Yosemite).
Erstellen Sie die Python 3.8 + Pipenv-Umgebung unter Ubuntu 18.04
Erstellen einer virtuellen Umgebung für Python auf dem Mac [Sehr einfach]
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Erstellen und testen Sie eine CI-Umgebung für mehrere Versionen von Python
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit dem Serverless Framework eine lokale Entwicklungsumgebung für Lambda + Python
# 3 Erstellen Sie eine Python-Umgebung (Django) mit einer EC2-Instanz (ubuntu18.04) von AWS part2
Versuchen Sie es mit virtualenv, mit dem eine virtuelle Umgebung von Python erstellt werden kann
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
Erstellen Sie einen Pypi-Cache-Server auf QNAP
Erstellen Sie eine Umgebung für das in Blender integrierte Python
Build-Umgebung für Python 2.7, 3.4, 3.5-Erweiterungsmodule unter Windows
Erstellen Sie Python 3 und OpenCV unter Ubuntu 18.04
Erstellen wir eine virtuelle Umgebung für Python
Erstellen Sie einen einfachen WebDAV-Server unter Linux
Ein Memo mit Python2.7 und Python3 in CentOS
Erstellen Sie einen CGI-Server, der unter Python 3 in Docker ausgeführt wird
Ich möchte eine Python-Umgebung erstellen
[Mac] Erstellen einer virtuellen Umgebung für Python
Erstellen Sie einen Samba-Server unter Arch Linux
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac