Python für Windows mit VSCodium

Tutorial für eine einfache Entwicklungsumgebung

Auf https://www.python.org/downloads/windows/ befinden sich die Downloads, um den Python-Interpreter auf Windows zu installieren.

Wir nehmen die aktuellste Version (3.10.4 für 64-bit) am besten gleich in der Installer-Version.

Auswahl des Python-Installer für Windows

Wir fügen Python auf dem Windows-Pfad hinzu, also mit den Pfeil setzen. Ansonsten können die Default-Einstellungen übernommen werden.

Python installieren
Python-Installation Einstellungen

Wer mehr Information benötigt, dem sei diese ausführliche Seite auf python.org empfohlen: https://docs.python.org/3.10/using/windows.html

PowerShell installieren und nutzen

Normalerweise wird die PowerShell (als besserer Ersatz für die Kommandozeile cmd) immer schon mit Windows installiert. Solltet ihr sie deinstalliert haben, könnt ihr sie leicht wieder zurückinstallieren. Es kann auch nicht schaden, die neuete Version zu installieren. Das Paket dazu findet sich hier: https://docs.microsoft.com/…

In der PowerShell (oder, wenn man die nicht mag, in der Kommandozeile) prüfen wir, ob Python installiert ist

Python --version
Python mit VSCodium
Python ist erfolgreich installiert.

Mit dem Befehlt python starten wir den Interpreter. Dass der Interpreter läuft, erkennt man am Prompt „>>>“.

Python mit VSCodium
Der Python-Interpreter ist gestartet.

Mit quit() kann man den Interpreter wieder verlassen.

Python mit VSCodium

Entwicklungsstudio VSCodium

Natürlich könnte man jetzt auch mit einem simplen Text-Editor arbeiten. Aber das wäre bei einem komplexen Framework wie Python sehr mühselig.

Daher installieren wir uns auf unserem Windows-Rechner den von mir favorisierten Editor VSCodium. VSCodium ist die OpenSource Alternative zu Visual Studio Code von Microsoft und ähnelt diesem komplett, bis auf die Tatsache, dass keine Nutzungsdaten an Microsoft sendet.

Für meine Windows-Version nutze ich: https://github.com/VSCodium/vscodium/releases/download/1.63.2/VSCodium-x64-1.63.2.msi

Python mit VSCodium
VSCodium nach dem ersten Start

Was wir vorhin zum Test in der PowerShell eingegeben haben, können wir jetzt selbstverständlich auch im eingebauten Terminal von VSCodium eingeben.

Python mit VSCodium
Terminal on VSCodium

Es gibt einige Erweiterungen (Extensions) für VSCodium, die wir uns noch installieren sollten. Das geht ganz einfacher über den eingebauten Extension Marktplatz.

Python mit VSCodium

Folgende Erweiterungen werden benötigt bzw. sind empfehlenswert:

  • Python (Anmerkungen weiter unten beachten)
  • Python Indent
  • Python Test Explorer

Wenn man die Python-Extension installiert, wird man gefragt, ob man Python installieren oder eine vorhandene Installation nutzen will.

Python mit VSCodium

Wenn alles geklappt hat, wird unten links im Editor die aktuelle Python-Version ausgegeben.

Optional: GitHub

GitHub ist die aktuell wichtigste Software für Versionsverwaltung. Im Grunde kann es nicht schade, sich damit auszukennen, da man bei richtigen Projekten früher oder später damit konfrontiert wird.

Die aktuellste Version erhält man hier: https://git-scm.com/download/win

GitHub laden
GitHub für Windows

GitHub kann für unsere Bedürfnisse ganz einfach per Default installiert werden.

„Hallo, Welt“-Beispiel

Wir legen mit STRG+N (oder per Menübefehl) erstmalig eine neue Python-Datei an.

Python mit VSCodium
Python mit VSCodium, eine neue Datei

Als Typ wählen wir natürlich „Python File“ aus.

Im Editor geben wir jetzt folgende, einzelne Zeile ein:

print("Hallo, Welt!")
Python mit VSCodium
Die erste Zeile Code

Nun wählen wir auf der linken Leiste den Punkt „Run and Debug“ aus und klicken auf die nun erscheinende Schaltfläche gleiche namens.

Python and VSCodium, Run and Debug
Debug, 1. Schritt

Sollten wir die Datei bisher noch nicht gespeichert haben, werden wir nun dazu aufgefordert. Praktischerweise solltet ihr euch dafür auch gleich einen Extra-Ordner anlegen, um (später) mit der Versionsverwaltung von GitHub arbeiten zu können.

Haben wir alles richtig gemacht, dann sollten wir im Terminal von VSCodium nun die Ausgabe „Hallo, Welt!“ sehen.

Python and VSCodium, Run and Debug
Debug, 2. Schritt

Versionsverwaltung mit GitHub

Um nun die Versionsverwaltung mit GitHub zu aktivieren, gehen wir wie folgt vor.

Links „Source Control“ auswählen (oder STRG+SHIFT+G), danach den oben erwähnten Ordner über „Open Folder“ auswählen.

Python and VSCodium, GitHub
GitHub, 1. Schritt

Nun muss mit „Initialize Repository“ erstmalig die Datenbank angelegt werden, die GitHub benötigt, um alle notwendigen Informationen zu speichern. Dabei handelt es sich um einen versteckten (Unter-)Ordner im Ordner der Python-Dateien.

Python and VSCodium, GitHub
GitHub, 2. Schritt

Nun kann man in einem geteilten Fenster die Änderungen bzw. Unterschiede (rechts) vom Original-Programmcode (links) sehen. Da es sich bei unserem Beispiel um die erste Version des Programmcodes handelt, ist die linke Fensterseite natürlich noch leer.

Python and VSCodium, GitHub
GitHub History

So, das soll es erstmal gewesen sein.

Wer sich jetzt in Python weiterbilden möchte, der sollte hier hereinschauen:

https://code.visualstudio.com/docs/python/python-tutorial

https://www.tutorialsteacher.com/python

Webmin für Debian installieren

Hier beschreibe ich, wie man die Konfigurationsumgebung Webmin für Debian schnell und einfach installiert.

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # Kopie schadet nie
echo 'deb http://download.webmin.com/download/repository sarge contrib' | sudo tee -a /etc/apt/sources.list > /dev/null
su -l # zu root wechseln
cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc
exit # wieder zurück zu Default Nutzer
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install webmin

Webmin startet immer mit einer erzwungenen SSL-Verbindung. Da wir in der Regel auf dem Server noch kein SSL-Zertifikat installiert haben, schalten wir den Zwang zu SSL vorläufig aus, um Stress mit dem Browser zu vermeiden.

Wir öffnen die Konfigurationsdatei von Webmin:

sudo nano /etc/webmin/miniserv.conf

und ersetzen ssl=1 durch ssl=0

Nun müssen wir den Webmin-Server wieder starten

sudo /etc/init.d/webmin restart

Wir öffnen im Browser http://masch3:10000 und wählen uns als normaler Linux-Nutzer an. (Hinweis: beim ersten Aufruf kann es durchaus etwas länger dauern, bis der Browser eine Seite auswirft.)

Nun müssen wir noch Refresh Modules klicken, um eventuell noch nicht von Webmin zugeordnete Module zu erkennen.

Pimp my shell – Eine vernünftige Arbeitsumgebung für Linux

Immer, wenn ich ein neues Linux aufsetze, führe ich bestimmte Kommandos durch bzw. konfiguriere ich mein System so, dass ich vernünftig damit arbeiten kann. Jeder hat seine Eigenheiten und Bedürfnisse – hier skizziere ich mal die meinen.

Zunächst installieren wir uns sudo, um als normaler Nutzer auch wie ein Supernutzer (=root) agieren zu können, ohne uns als root anmelden zu müssen. Natürlich müssen wir diese eine Installation selbst noch als root vornehmen. Danach müssen wir uns nie wieder als root anmelden – außer ins Notfällen.

apt-get install sudo

Nun fügen wir den während der Installation angelegten Nutzer der Gruppe „sudo“ hinzu: adduser sudo. In meinem Falle also den Nutzer „juergen“

adduser juergen sudo

Mit dem Befehl groups <username> kann man prüfen, ob das Hinzufügen tatsächlich geklappt hat.

groups juergen

Das war es schon. Jetzt bitte mit exit wieder aus der Shell ausloggen und als normaler Nutzer wieder einloggen. Jetzt kann man mit einem vorangestellten sudo Befehle wie root ausführen.

Testen wir unsere neuen Fähigkeiten, indem wir gleich einmal einen vernünftigen Editor installieren.

sudo apt-get install nano

Mit diesem Editor nehmen wir unsere erste Anpassung vor. Wir sorgen dafür, dass ab jetzt jeder neue Nutzer mit der bin/bash Shell verbunden wird.

sudo cp /etc/adduser.conf /etc/adduser.conf.bak # Kopie schadet nie
sudo nano /etc/adduser.conf

Im Editor suchen wir jetzt folgende Zeile (oder fügen sie, falls nicht vorhanden, hinzu):

DSHELL=/bin/bash

Als Nächstes sorgen wir dafür, dass unser System gleich mit den wichtigsten Alias-Befehlen versorgt wird. Mit einem alias kann man mehrere Linux-Kommandos, oder ein Linux-Kommando mit mehreren Optionen durch einen neuen Befehl ersetzen. Es wird benutzt, um Zeit zu sparen und weniger zu tippen.

Das bekannteste alias dürfte wohl die Abkürzung dir für den Befehl „ls -l“ sein.

Wir bearbeiten wieder eine Konfigurationsdatei.

sudo cp /etc/bash.bashrc /etc/bash.bashrc.bak #  Kopie schadet nie
sudo nano /etc/bash.bashrc

Und fügen ans Ende folgende Zeilen hinzu:

alias +='pushd .'
alias ..='cd ..'
alias ...='cd ../..'
alias dir='ls -la  --color=auto'
alias gzcat='gunzip -c'
alias l='ls -alF'
alias la='ls -la'
alias ll='ls -la'
alias ls='/bin/ls $LS_OPTIONS'
alias ls-l='ls -l'
alias md='mkdir -p'
alias o='less'
alias rd='rmdir'
alias rehash='hash -r'
alias rm='rm -i'
alias unzip='tar xfvz'
alias which='type -p'
alias zip='tar cfvz'

Und schon sieht unsere Shell (nach einer Neueinwahl) sehr viel bunter, schöner, übersichtlicher aus.

Entwicklungsumgebung für Symfony auf Oracle VM mit Debian und Windows als Host, Teil 3

Nun kommen wir Symfony einen Schritt näher. Da Symfony zunächst einmal eine große Sammlung verschiedenster PHP-Dateien ist, benötigen wir die Anwendung composer. Diese hilft uns – hier und im Weiteren – verschiedene PHP-Anwendungen zu installieren. Vorher müssen noch einige zusätzliche Befehle installiert werden. Wir gehen wie folgt vor:

sudo apt update # Linux-Pakete auf den neuesten Stand bringen
sudo apt install wget php-cli php-zip unzip php-xml # was sonst noch gebraucht wird
cd ~
wget -O composer-setup.php https://getcomposer.org/installer
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
sudo composer self-update # composer selbst auf den neusten Stand bringen
composer --version # die aktuelle Versionsnummer herausgeben
rm composer-setup.php # kann gelöscht werden

PHP 8 installieren

Aktuell wird PHP 7.1 oder höher benötigt, um Symfony zu nutzen. Wir installieren also gleich PHP 8. Ich folge dieser Anleitung: https://computingforgeeks.com/how-to-install-php-on-debian-linux/

sudo apt update
sudo apt -y upgrade
sudo reboot # falls es Kernel-Upgrades gab
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt update
sudo apt install php8.0
sudo update-alternatives --set php /usr/bin/php8.0 #  PHP 8 als Default PHP Version aktivieren
sudo apt install php8.0-{mysql,cli,common,imap,ldap,xml,fpm,curl,mbstring,zip}
sudo apt install php8.0-intl
sudo apt install php8.0-xsl
sudo apt install php8.0-amqp
sudo apt install php8.0-gd
php -v # PHP-Version ausgeben
php -m # zeigt die erfolgreich installierten Module an

So, jetzt geht es ans Eingemachte. Wir erstellen unser erstes Symfony-Projekt. Es erhält den Namen testproject. Wenn im Laufe des Procederes die Frage gestellt wird, ob man für Docker eine Konfiguration anlegen möchte, so kann man das getrost verneinen.

cd /var/www/html # hier wird installiert
composer create-project symfony/website-skeleton testproject

Wir rufen im Browser folgende Adresse auf: http://masch3/testproject/public/

Das ist doch schonmal ein schöner Erfolg. Werfen wir mal einen Blick in das von composer erzeugte Verzeichnis:

Im Browser sieht das Verzeichnis folgendermaßen aus:

Entwicklungsstudio VSCodium

Natürlich könnte man jetzt auch mit einem simplen Text-Editor arbeiten. Aber das wäre bei einem komplexen Framework wie Symfony so, als würde man versuchen, mit den Füßen einen Faden in ein Nadelöhr einzufädeln: möglich, aber sehr mühselig.

Daher installieren wir uns auf unserem Windows-Rechner den von mir favorisierten Editor VSCodium. VSCodium ist die OpenSource Alternative zu Visual Studio Code von Microsoft und ähnelt diesem komplett, bis auf die Tatsache, dass keine Nutzungsdaten an Microsoft sendet.

Für meine Windows-Version nutze ich: https://github.com/VSCodium/vscodium/releases/download/1.63.2/VSCodium-x64-1.63.2.msi

VSCodium nach dem ersten Start

Wenn wir im Editor nun auf unser Projekt-Verzeichnis S:\html\testproject zugreifen (File→Open Folder …), werden wir mit einer kleinen Sicherheitsabfrage konfrontiert, die wir getrost bejahen können, solange nur wir mit dieser Entwicklungsumgebung arbeiten.

Danach sieht es im Editor so aus:

Es gibt einige Erweiterungen (Extensions) für VSCodium, die wir uns noch installieren sollten. Das geht ganz einfacher über den eingebauten Extension Marktplatz.

Folgende Erweiterungen werden benötigt:

  • PHP Intelephense
  • Twig Language 2
  • Symfony for VSCode

Nun möchte ich noch das Paket profiler installieren, dieses bietet umfangreiche, unverzichtbare Debug-Werkzeuge, die direkt vom Browser aufgerufen werden können. Dazu wechseln wir auf die Konsole unserer Maschine und geben Folgendes ein:

cd /var/www/html/testproject # Wichtig, da profiler für jedes Symfony-Projekt extra installiert werden muss
composer require --dev symfony/profiler-pack

Pfad-Probleme mit Apache

Leider kann es passieren, dass der Apache-Webserver für die Nutzung von Symfony nicht optimal installiert ist – zumindest ist das bei Debian und Ubuntu der Fall. Dort kann es passieren, dass die Pfade in der URL nicht korrekt erkannt werden.

Um diesem Problem zu begegnen müssen wir die Apache-Konfigurationsdatei /etc/apache2/apache2.conf bearbeiten.

sudo nano /etc/apache2/apache2.conf

Wir suchen nach folgenden Zeilen:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

und ersetzen AllowOverride None durch AllowOverride All.

So sollte der Abschnitt jetzt aussehen:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

Jetzt müssen noch folgende Befehle ausgeführt werden:

sudo a2enmod rewrite
sudo systemctl restart apache2

Und anschließend noch für jedes Symfony-Projekt einzel:

cd /var/www/html/testproject
composer require symfony/apache-pack

Jetzt haben wir auf der Startseite unten links den Profiler aktiviert.

Nun steht den ersten aktiven Schritten in Symfony nichts mehr im Wege. Ich würde aber noch empfehlen, eine vernünftige Server-Konfigurationsumgebung, wie bspw. Webmin zu installieren. Ich beschreibe das in meinem Beitrag: Webmin für Debian installieren.

Was noch fehlt

Um die letzten, noch nützlichen Teile für Symfony zu installieren, benötigen wir zunächst einmal die CLI für Symfony.

echo 'deb [trusted=yes] https://repo.symfony.com/apt/ /' | sudo tee /etc/apt/sources.list.d/symfony-cli.list
 sudo apt update
 sudo apt install symfony-cli

Entwicklungsumgebung für Symfony auf Oracle VM mit Debian und Windows als Host, Teil 2

Nachdem wir uns im ersten Teil um die Grundinstallation unserer virtuellen Maschine gekümmert haben, müssen wir nun erstmal testen, ob diese Maschine vom Windows-Gastsystem über das Netzwerk überhaupt zu erreichen ist. Alles andere wäre zu mühselig, denn wir wollen nicht direkt auf der Maschine unseren PHP/Symfony-Code schreiben, sondern lediglich dort ablegen und zum Laufen bringen.

Um unsere Maschine im Netzwerk kenntlich zu machen, müssen wir einige Einstellungen im Oracle VM Manager vollziehen, und zwar in den Netzwerkeinstellungen. Wichtig: Die Maschine darf noch nicht gestartet sein. Sollte sie schon gestartet sein, dann bitte vorher herunterfahren.

Bitte einfach den Angaben aus dem Screenshot übernehmen. Sollte der angezeigte Name nicht in der Auflistung auftauchen, dann einfach irgendeinen wählen. Bisher habe ich keinen Unterschied dabei entdecken können. Wichtig ist der Punkt: „Promiscous-Modus: erlauben für alle VMs“

Wenn wir jetzt dann die Maschine wieder starten, können wir mit dem Linux-Befehl hostname unsere IP im Netz ermitteln.

hostname -I

Nun prüfen wir noch, ob a) der Webserver auf unserer Maschine korrekt läuft und b) ob der Name (hier: masch3) korrekt aufgelöst wird. Dazu geben wir einfach http://masch3 im Browser unserer Wahl ein. Und siehe da: Es klappt.

Ein Samba share

Wir werden jetzt schauen, wie wir mithilfe eines Samba-Servers uns über Windows direkt mit der Maschine verbinden können. Wir legen dazu einen Samba share an. Somit können wir zukünftig schreibend und lesend auf Verzeichnisse im Entwicklungsserver, und zwar über einen frei zu wählenden Laufwerksbuchstaben, zugreifen. Das ist sehr viel komfortabler, als die Dateien per FTP zu befördern.

Wir loggen uns in gestartete Maschine ein und geben folgende Befehle ein. (nicht wundern, man wird öfters aus Sicherheitsgründen bei Nutzung des sudo-Befehls dazu gezwungen, das Passwort einzugeben.

sudo apt-get install samba # der Server, alles per Default akzeptieren
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup # Kopie schadet nie
systemctl status smbd # Status prüfen

Der Befehl systemctl status smbd zeigt uns, ob der Samba Server korrekt läuft. Dann sollte die Ausgabe wie folgt aussehen (oder zumindest sehr ähnlich, wobei grüner Text immer gut ist).

Der erste Schritt wäre getan. Nun geht es an die Konfiguration.

MERKE: Für Samba müssen wir extra (mindestens) einen Benutzer anlegen. Dieser Benutzer sollte einen korrespondierenden Nutzer auf der Linux-Ebene haben. Leider übernimmt Samba nicht direkt die Nutzerdatenbank von Linux. Es hat so seine Zeit gedauert, bis ich das verstanden habe.

Wir öffnen die Konfigurationsdatei

sudo nano /etc/samba/smb.conf

und fügen ganz am Ende folgenden Code hinzu:

[www]
  comment = Web Root Dir
  path = /var/www
  valid users = <username>
  browseable = yes
  public = no
  writable = yes
  printable = no
  create mode = 0644
  directory mode = 0775
  force group = <username>
  force user = <username>

Und natürlich muss statt <username> euer Benutzername stehen. Diese Angaben ermöglichen den Zugriff eines Nutzers <username> auf den Samba Share /var/www, wobei neue Dateien mit den Zugriffsrechten 0664 angelegt werden und neue Ordner mit 0775. Jede neue Datei und jeder Ordner wird dem Nutzer <username> und der Gruppe <username> zugewiesen.

Nun müssen wir einen Samba Benutzer anlegen:

sudo smbpasswd -a <username> # bitte das Passwort merken

Der Samba share (und alle darin befindlichen Dateien) muss auch dem Benutzer und der Benutzergruppe zugewiesen werden.

sudo chown -R <username>:<username> /var/www

Wir starten den Samba Server neu:

sudo service smbd restart

Netzwerk verbinden

Nun geht es daran, das Samba share übers Netz mit einem Laufwerksbuchstaben von Windows zu verbinden.

  1. Den Windows Explorer öffnen und auf „Dieser PC“ klicken
  2. Jetzt im Menü auf „Netzlaufwerk verbinden“ klicken.
  3. Einen passenden Laufwerksbuchstaben auswählen und folgende Ordner-Angabe eintragen: \\masch3\www
  4. Das Häkchen bei „Verbindung bei Anmeldung wiederherstellen“ kann gesetzt werden.
  5. Nach Klick auf OK müssen die Samba-Verbindungsdaten eingegeben werden, die vorher mit smbpasswd festgelegt wurden.

Wir können nun als (in meinem Fall) über den Laufwerksbuchstaben S: auf den Ordner /var/www unserer virtuellen Maschine zugreifen.

Ein kleiner Test noch, um auch die Schreibrechte zu prüfen. Wir öffnen mit einem normalen Editor – der Microsoft Editor (=Notepad) tut es auch – die Datei S:\html\index.html und setzen hinter den Text „It works!“ eine Ergänzung. Speichern nicht vergessen!

Wir öffnen wieder den Browser mit der Adresse http://masch3 und schauen, ob sich der Text geändert hat. Und siehe da: Es hat geklappt. Wir haben nun von Windows aus einen vollen Zugriff auf den Ordner unserer Maschine /var/www.

In Teil 3 werden wir dann endlich Symfony installieren.