<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.astroneth.de/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Holger+Neth</id>
	<title>AstroNeth-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.astroneth.de/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Holger+Neth"/>
	<link rel="alternate" type="text/html" href="https://www.astroneth.de/wiki/Spezial:Beitr%C3%A4ge/Holger_Neth"/>
	<updated>2026-05-21T06:39:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=PlayGround&amp;diff=191</id>
		<title>PlayGround</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=PlayGround&amp;diff=191"/>
		<updated>2026-04-09T08:23:27Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: Copy button&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Playground ==&lt;br /&gt;
&#039;&#039;&#039;fett&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sqrt{a^2 + b^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;\int_a^b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy button|Text to be copied.}}&lt;br /&gt;
&lt;br /&gt;
{{Message-warning|Inhalt=Für Warnungen und ähnliches.}} &lt;br /&gt;
{{Message-info|Inhalt=Zum Anzeigen von Informationen.}}&lt;br /&gt;
{{Message-ok|Inhalt=Alles ist gut.}}&lt;br /&gt;
{{Message-error|Inhalt=Alles ist schlecht.}}  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote width=80%; style=&amp;quot;background:#f4f4ff; border: 2px solid #999; border-right-width: 2px&amp;quot;&amp;gt;&lt;br /&gt;
:Diesen Text kannst du gern verbessern! Der Text in dieser Box darf auch mehrere Zeilen lang sein!&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
===Vorlage Benutzer===&lt;br /&gt;
{{Benutzer&lt;br /&gt;
|Vorname=Holger&lt;br /&gt;
|Nachname=Neth&lt;br /&gt;
|Stadt=Hamburg&lt;br /&gt;
|Telefonnummer=01 12345678&lt;br /&gt;
|E-Mail-Adresse=holger.neth@gmail.com&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Code darstellen===&lt;br /&gt;
Code im Text &amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
phpinfo();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt; ohne Syntax-Highlight&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php&lt;br /&gt;
  phpinfo();&lt;br /&gt;
  ?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
siehe auch in [https://wiki.openstreetmap.org/wiki/Wiki:DE:Code_darstellen MediaWiki]&lt;br /&gt;
hier Pythoncode:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot; start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def quick_sort(arr):&lt;br /&gt;
	less = []&lt;br /&gt;
	pivot_list = []&lt;br /&gt;
	more = []&lt;br /&gt;
	if len(arr) &amp;lt;= 1:&lt;br /&gt;
		return arr&lt;br /&gt;
	else:&lt;br /&gt;
		pass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
def quick_sort(arr):&lt;br /&gt;
	less = []&lt;br /&gt;
	pivot_list = []&lt;br /&gt;
	more = []&lt;br /&gt;
	if len(arr) &amp;lt;= 1:&lt;br /&gt;
		return arr&lt;br /&gt;
	else:&lt;br /&gt;
		pass&lt;br /&gt;
‎&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pwsh&amp;quot;&amp;gt;&lt;br /&gt;
screen -S session01&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
====Sonderzeichen====&lt;br /&gt;
€&lt;br /&gt;
&lt;br /&gt;
{{Clickable button|:en:Wikipedia:Manual of Style/Layout|&#039;&#039;&#039;Wikipedia&#039;s manual of Style&#039;&#039;&#039;|class=ui-button-green ui-button-large}}&lt;br /&gt;
&lt;br /&gt;
==Kopiervorlage ==&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste||halten}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===weitere===&lt;br /&gt;
{| style=&amp;quot;line-height:200%&amp;quot;&lt;br /&gt;
!Das schreibt man !! So sieht es aus&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|Alt|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|Alt|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|⌥ Alt|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|⌥ Alt|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|⌥ Option|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|⌥ Option|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|⇧ Umschalt|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|⇧ Umschalt|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|⇧ Shift|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|⇧ Shift|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|Strg|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|Strg|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Taste|⌘ Befehl|halten}}&amp;amp;amp;nbsp;+&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;||{{Taste|⌘ Befehl|halten}}&amp;amp;nbsp;+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=190</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=190"/>
		<updated>2025-07-01T07:33:24Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=189</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=189"/>
		<updated>2025-06-15T06:27:20Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: anderer Kategorie zugewiesen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=188</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=188"/>
		<updated>2025-06-14T23:48:25Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=187</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=187"/>
		<updated>2025-06-14T23:48:02Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=186</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=186"/>
		<updated>2025-06-14T22:37:00Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== MAC OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Homebrew|Homebrew-Installation auf dem MAC]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[Primzahlenprogramm|Primzahlenprogramm mit Test]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=185</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=185"/>
		<updated>2025-06-14T22:36:13Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== MAC OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Homebrew|Homebrew-Installation auf dem MAC]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[Primzahlenprogramm von ChatGPT|Primzahlenprogramm mit Test]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=184</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=184"/>
		<updated>2025-06-14T22:30:30Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=183</id>
		<title>Primzahlenprogramm</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Primzahlenprogramm&amp;diff=183"/>
		<updated>2025-06-14T20:17:57Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: Die Seite wurde neu angelegt: „&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt; &amp;#039;&amp;#039;&amp;#039; Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.  Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung. &amp;#039;&amp;#039;&amp;#039;  def is_prime(n):     &amp;#039;&amp;#039;&amp;#039;Prüft, ob eine Zahl eine Primzahl ist.&amp;#039;&amp;#039;&amp;#039;     if n &amp;lt; 2:         return False     if n == 2:         return True     if n % 2 == 0:         return False     for i in range(3, int(n**0.5) + 1, 2):         if n % i == 0:             re…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Programm zur Ermittlung und Ausgabe der ersten 100 Primzahlen mit Nummerierung.&lt;br /&gt;
&lt;br /&gt;
Erstellt von einem erfahrenen Programmierer mit 20 Jahren Berufserfahrung.&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
def is_prime(n):&lt;br /&gt;
    &#039;&#039;&#039;Prüft, ob eine Zahl eine Primzahl ist.&#039;&#039;&#039;&lt;br /&gt;
    if n &amp;lt; 2:&lt;br /&gt;
        return False&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        return True&lt;br /&gt;
    if n % 2 == 0:&lt;br /&gt;
        return False&lt;br /&gt;
    for i in range(3, int(n**0.5) + 1, 2):&lt;br /&gt;
        if n % i == 0:&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def generate_primes(count):&lt;br /&gt;
    &#039;&#039;&#039;Generiert die ersten &#039;count&#039; Primzahlen und gibt sie nummeriert aus.&#039;&#039;&#039;&lt;br /&gt;
    primes = []&lt;br /&gt;
    num = 2&lt;br /&gt;
    while len(primes) &amp;lt; count:&lt;br /&gt;
        if is_prime(num):&lt;br /&gt;
            primes.append(num)&lt;br /&gt;
        num += 1&lt;br /&gt;
    return primes&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    &#039;&#039;&#039;Hauptfunktion zur Ausgabe der ersten 100 Primzahlen.&#039;&#039;&#039;&lt;br /&gt;
    prime_numbers = generate_primes(100)&lt;br /&gt;
    for index, prime in enumerate(prime_numbers, start=1):&lt;br /&gt;
        print(f&amp;quot;{index}: {prime}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
# Einfache Tests zur Verifizierung der Primzahl-Funktion&lt;br /&gt;
assert is_prime(2) == True&lt;br /&gt;
assert is_prime(3) == True&lt;br /&gt;
assert is_prime(4) == False&lt;br /&gt;
assert is_prime(29) == True&lt;br /&gt;
assert is_prime(30) == False&lt;br /&gt;
assert generate_primes(5) == [2, 3, 5, 7, 11]&lt;br /&gt;
print(&amp;quot;Alle Tests erfolgreich bestanden!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=182</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=182"/>
		<updated>2025-06-14T20:15:32Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== MAC OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Homebrew|Homebrew-Installation auf dem MAC]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[Primzahlenprogramm|Primzahlenprogramm mit Test]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=181</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=181"/>
		<updated>2025-06-14T20:14:54Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: neuer Link Primzahlenprogramm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== MAC OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Homebrew|Homebrew-Installation auf dem MAC]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[Primzahlenprogramm|Primzahlen mit Test]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=180</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=180"/>
		<updated>2024-10-14T19:38:38Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;oder&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;virtualenv .env&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder besser&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv --python 3.11.0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv shell&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv graph&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install mysqlclient&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install django-debug-toolbar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=179</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=179"/>
		<updated>2024-01-21T10:19:10Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;fail2ban-client status sshd&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install --classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt --apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew --dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg --dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
*Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
*Tabellen über Webmin importiert&lt;br /&gt;
*Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
*Tabellen über Webmin importiert&lt;br /&gt;
*Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
*Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; ✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=178</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=178"/>
		<updated>2024-01-21T10:17:59Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
---&lt;br /&gt;
&amp;lt;li&amp;gt;fail2ban-client status sshd&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install --classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt --apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew --dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg --dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
*Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
*Tabellen über Webmin importiert&lt;br /&gt;
*Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
*Tabellen über Webmin importiert&lt;br /&gt;
*Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
*Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; ✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=177</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=177"/>
		<updated>2024-01-15T23:50:38Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install --classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt --apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew --dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg --dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
* Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
* Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=176</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=176"/>
		<updated>2024-01-15T23:41:25Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install --classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot --apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt --apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew --dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg –dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
* Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
* Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=175</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=175"/>
		<updated>2024-01-15T23:33:59Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install --classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt –apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew –dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg –dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
* Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
* Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=174</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=174"/>
		<updated>2024-01-15T23:07:39Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &lt;br /&gt;
oder [https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04-de hier mit Apache]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install –classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt –apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew –dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg –dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
* Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
* Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=173</id>
		<title>Servereinrichtung</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Servereinrichtung&amp;diff=173"/>
		<updated>2023-12-22T15:01:58Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;server-ncubuntua&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= [[Servereinrichtung|Servereinrichtung (mit Ubuntu und Apache)]] =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;start-timeline&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Start Timeline ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ssh-Zugriff mit root einrichten&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]PROD\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;root neues Passwort erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
------&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;useradd -m -s /bin/bash -c “Vorname Nachname” username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG sudo username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;passwd username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;userhome .bashrc ändern&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#my own&lt;br /&gt;
PS1=&amp;amp;quot;\[\e[1;31m\]TEST\[\e[0m\] $PS1 &amp;amp;quot;&lt;br /&gt;
mycpsave() { cp $1 $1.$(date +&amp;amp;quot;%Y%m%d.%H%M%S%N&amp;amp;quot;); };&lt;br /&gt;
export -f mycpsave&lt;br /&gt;
export PATH=~/bin:$PATH&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
{{Message-info|Inhalt=im home-Verzeichnis von username.}}&lt;br /&gt;
&amp;lt;li&amp;gt;mkdir .ssh&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;cp /root/.ssh/authorized_keys .ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;chown -R username:group.ssh/&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/ssh/sshd_config&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin no  &amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;dpkg-reconfigure dash&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;timedatectl&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;⚠ Zeitsynchronisation überprüfen&lt;br /&gt;
systemctl status systemd-timesyncd&lt;br /&gt;
timedatectl set-ntp true&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install net-tools&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt dist-upgrade&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install ufw&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw app list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow OpenSSH&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
{{Message-info|Inhalt= Erst SSH erlauben, bevor die Firewall arbeitet....}}&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw enable&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw status verbose&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;dns-der-domain-angepasst-auf-die-ip-des-servers&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;DNS der Domain angepasst auf die IP des Servers&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install mariadb-server&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;mysql_secure_installation&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;SQL-Anbindung mit PHP prüfen siehe [https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mariadb-php-lemp-stack-on-debian-10 Digital Ocean] &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apache2 php libapache2-mod-php&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod ssl&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl restart apache2&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;usermod -aG www-data username&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2ensite 001-sitename.de.conf&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ein paar Verzeichnisse erstellt in html und sitename.de/html&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;phpinfo.php erstellt&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;chown -R user:www-data /var/www/&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cd /etc/fail2ban&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cp jail.conf jail.local&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano jail.local&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;bantime  = 30m&lt;br /&gt;
findtime  = 15m&lt;br /&gt;
maxretry = 3&lt;br /&gt;
. . .&lt;br /&gt;
[apache-auth][apache-badbots]&lt;br /&gt;
&lt;br /&gt;
enabled = true&lt;br /&gt;
. . .&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;systemctl restart fail2ban&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install snapd&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;snap install –classic certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ln -s /snap/bin/certbot /usr/bin/certbot&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot –apache –register-unsafely-without-email&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;letsencrypt –apache -d sitename.de,www.sitename.de,webmin.sitename.de&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;certbot renew –dry-run&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;sudo certbot certificates&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl list-timers&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install libapache2-mod-wsgi-py3&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apache2/conf-available/mod-wsgi.conf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  WSGIScriptAlias /test /var/www/sitename.de/html/test_wsgi.py&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano test_wsgi.py&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  im Website-Stammverzeichnis:&lt;br /&gt;
  def application(environ,start_response):&lt;br /&gt;
      status = &#039;200 OK&#039;&lt;br /&gt;
      html = b&#039;&amp;amp;lt;html&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039; Hooray, mod_wsgi is working\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/body&amp;amp;gt;\n&#039; \&lt;br /&gt;
             b&#039;&amp;amp;lt;/html&amp;amp;gt;\n&#039;&lt;br /&gt;
      response_header = [(&#039;Content-type&#039;,&#039;text/html&#039;)]&lt;br /&gt;
      start_response(status,response_header)&lt;br /&gt;
      return [html]&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;a2enmod wsgi&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apachectl configtest&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span id=&amp;quot;systemctl-reload-apache2&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;systemctl reload apache2&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;nano /etc/apt/sources.list&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;  ✍ deb https://download.webmin.com/download/repository sarge contrib &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;wget https://download.webmin.com/jcameron-key.asc&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;cat jcameron-key.asc | gpg –dearmor &amp;amp;gt;/etc/apt/trusted.gpg.d/jcameron-key.gpg&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install apt-transport-https&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt update&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;apt install webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;systemctl status webmin&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;ufw allow 10000&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://www.howtoforge.de/anleitung/wie-installiert-man-webmin-und-sichert-es-mit-lets-encrypt-ssl-auf-ubuntu-2004-lts/ Webmin Installationshilfe] oder bei [https://www.digitalocean.com/community/tutorials/how-to-install-webmin-on-ubuntu-22-04 Digital Ocean]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Webmin Modul “certmgr” installiert&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Message-warning|Inhalt=der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden.}}&lt;br /&gt;
&amp;lt;p&amp;gt;⚠ der Downloadlink stimmt nicht in der Webmin-Oberfläche: “www...” muss mit “http://download.webmin.com/download/modules” ersetzt werden&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;span id=&amp;quot;snapshot-ncubunua20230204s001&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Snapshot ncubuntua20230204s001==&lt;br /&gt;
* Datenbank astroneth mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE astroneth;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holger&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON *.* TO &#039;holger&#039;@&#039;localhost&#039;;&lt;br /&gt;
      CREATE USER &#039;holast&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON astroneth . * TO &#039;holast&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Datenbank anwiki mit Berechtigung erstellt:&lt;br /&gt;
&lt;br /&gt;
      CREATE DATABASE anwiki;&lt;br /&gt;
      SELECT user FROM mysql.user;&lt;br /&gt;
      CREATE USER &#039;holwiki&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;sicheresPasswort&#039;;&lt;br /&gt;
      GRANT ALL PRIVILEGES ON anwiki . * TO &#039;holwiki&#039;@&#039;localhost&#039;;&lt;br /&gt;
      FLUSH PRIVILEGES;&lt;br /&gt;
* Tabellen über Webmin importiert&lt;br /&gt;
* Wiki kopiert und localsettings.php angepasst&lt;br /&gt;
* Virtual-Hosts-Sites astroneth (001-anhome.conf) und holgerneth (001-mediawiki.conf) erstellt&lt;br /&gt;
==Snapshot ncubunua20230407s001==&lt;br /&gt;
&lt;br /&gt;
==ToDo==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-to-use-custom-error-pages-on-ubuntu-14-04 eigene Fehlerseiten]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;✍️ ToDo: fail2ban und SSH-Port prüfen&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Server]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=172</id>
		<title>Maria DB</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=172"/>
		<updated>2023-10-03T02:59:29Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* brew update&lt;br /&gt;
* brew install mariadb&lt;br /&gt;
* mysql.server start&lt;br /&gt;
* brew services start mariadb&lt;br /&gt;
* brew info mariadb&lt;br /&gt;
* mariadb-secure-installation&lt;br /&gt;
* CREATE DATABASE techmax;&lt;br /&gt;
* GRANT ALL PRIVILEGES ON techmax.* TO &amp;quot;holast&amp;quot;@&amp;quot;localhost&amp;quot;;&lt;br /&gt;
* FLUSH PRIVILEGES;&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=171</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=171"/>
		<updated>2023-10-02T21:28:32Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Installation im entsprechenden Verzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder besser&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv --python 3.11.0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv shell&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv graph&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install mysqlclient&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pipenv install django-debug-toolbar&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Projekte&amp;diff=170</id>
		<title>Projekte</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Projekte&amp;diff=170"/>
		<updated>2023-10-02T21:25:27Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Python Environment-Installation im entsprechenden Verzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Projekt Homepage astroneth.eu ==&lt;br /&gt;
&lt;br /&gt;
=== Python Environment-Installation im entsprechenden Verzeichnis ===&lt;br /&gt;
&lt;br /&gt;
*python3 -m venv .venv&lt;br /&gt;
*.venv\Scripts\activate.ps1&lt;br /&gt;
&lt;br /&gt;
    oder&lt;br /&gt;
    source .venv/bin/activate&lt;br /&gt;
    jetzt kann python.exe mit python benutzt werden&lt;br /&gt;
    deactivate ==&amp;gt; das Enviroment wieder deaktivieren&lt;br /&gt;
&lt;br /&gt;
*pip install django mysqlclient&lt;br /&gt;
&lt;br /&gt;
       pip install --upgrade django&lt;br /&gt;
       pip install --upgrade pip&lt;br /&gt;
&lt;br /&gt;
*pip list&lt;br /&gt;
*python -m django --version&lt;br /&gt;
&lt;br /&gt;
       ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
&lt;br /&gt;
*python -m pip install -U Django&lt;br /&gt;
&lt;br /&gt;
       ℹ Django upgraden&lt;br /&gt;
*pipenv install django-debug-toolbar&lt;br /&gt;
&lt;br /&gt;
=== Projekt anlegen ===&lt;br /&gt;
&lt;br /&gt;
*django-admin startproject astroneth&lt;br /&gt;
*python manage.py startapp home&lt;br /&gt;
*urls.py erstellen und registrieren (include in Projekt urls.py)&lt;br /&gt;
*settings.py bearbeiten&lt;br /&gt;
&lt;br /&gt;
       DATABASES = {&lt;br /&gt;
           &#039;default&#039;: {&lt;br /&gt;
           &#039;ENGINE&#039;: &#039;django.db.backends.mysql&#039;,&lt;br /&gt;
           &#039;NAME&#039;: &#039;db-name&#039;,&lt;br /&gt;
           &#039;USER&#039;: &#039;db-user&#039;,&lt;br /&gt;
           &#039;PASSWORD&#039;: &#039;xxxxxxxxx&#039;,&lt;br /&gt;
           &#039;HOST&#039;: &#039;localhost&#039;,&lt;br /&gt;
           &#039;PORT&#039;: &#039;&#039;,&#039;&#039;&lt;br /&gt;
           }&lt;br /&gt;
       }&lt;br /&gt;
       	&lt;br /&gt;
       INSTALLED_APPS = [&lt;br /&gt;
           &#039;home&#039;,&lt;br /&gt;
           ...   &lt;br /&gt;
       &lt;br /&gt;
       TEMPLATES = [&lt;br /&gt;
           {&lt;br /&gt;
           ...&lt;br /&gt;
           &#039;DIRS&#039;: [(BASE_DIR / &#039;templates&#039;)],        	&lt;br /&gt;
           ...&lt;br /&gt;
           &lt;br /&gt;
       LANGUAGE_CODE = &#039;de&#039;&lt;br /&gt;
       &lt;br /&gt;
       TIME_ZONE = &#039;Europe/Berlin&#039;&lt;br /&gt;
       &lt;br /&gt;
       STATIC_URL = &#039;static/&#039;&lt;br /&gt;
       #STATICFILES_DIRS = [&lt;br /&gt;
       #    BASE_DIR / &amp;quot;static&amp;quot;&lt;br /&gt;
       #]  &lt;br /&gt;
       STATIC_ROOT = os.path.join(BASE_DIR, &amp;quot;static&amp;quot;) *** wieder raus nach collectstatic&lt;br /&gt;
 &lt;br /&gt;
* Ordnerstruktur erweitern (templates und static) &lt;br /&gt;
* python manage.py collectstatic (kopiert die Adminfiles aus den Django-Verzeichnis in static)              &lt;br /&gt;
* Models erstellen&lt;br /&gt;
* python manage.py makemigrations&lt;br /&gt;
* python manage.py migrate&lt;br /&gt;
* python manage.py createsuperuser&lt;br /&gt;
* python manage.py runserver&lt;br /&gt;
&lt;br /&gt;
=== Hompage Deployment ===&lt;br /&gt;
* git pull git@github.com:holnet/Homepage.git&lt;br /&gt;
* sudo systemctl restart apache2&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=169</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=169"/>
		<updated>2023-09-21T11:35:25Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Installation im entsprechenden Verzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder auch&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv --python 3.11.0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv shell&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv graph&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install mysqlclient&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=168</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=168"/>
		<updated>2023-09-21T11:34:22Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Installation im entsprechenden Verzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder auch&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv --python 3.11.0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv shell&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv graph&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install mysqlclient&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=167</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=167"/>
		<updated>2023-09-21T11:32:08Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Installation im entsprechenden Verzeichnis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder auch&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv --python 3.11.0&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv shell&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;pipenv graph&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=166</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=166"/>
		<updated>2023-09-21T11:26:25Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder auch&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Pipenv --python 3.11.0&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=165</id>
		<title>Django</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Django&amp;diff=165"/>
		<updated>2023-09-21T11:24:13Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.djangoproject.com/ Django Website]&lt;br /&gt;
=Django-Projekt anlegen=&lt;br /&gt;
==Installation im entsprechenden Verzeichnis==&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python3 -m venv .venv&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;source .venv/bin/activate&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;oder auch&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;jetzt kann python.exe mit python aufgerufen werden&lt;br /&gt;
deactivate ==&amp;amp;gt; das Enviroment wieder deaktivieren&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;pip install django&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;python -m django –-version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;ℹ nur zur Prüfung ob alles OK ist&lt;br /&gt;
oder auch mit&lt;br /&gt;
python&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import django&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(django.get_version())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
==Projekt anlegen==&lt;br /&gt;
&lt;br /&gt;
# django-admin startproject &amp;lt;projektname&amp;gt;&lt;br /&gt;
#* python manage.py makemigrations polls&lt;br /&gt;
#* python manage.py sqlmigrate polls 0001&lt;br /&gt;
#* python manage.py check;&lt;br /&gt;
# python manage.py migrate&lt;br /&gt;
# python manage.py shell&lt;br /&gt;
       ℹ nur zum üben&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; dir(Choice)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.slug&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p = Poll(name=&amp;quot;Wann steht ihr morgens immer auf?&amp;quot;, slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.id&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; p.save()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Poll.objects.filter(slug=&amp;quot;weckzeit&amp;quot;).all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.get(slug=&amp;quot;weckzeit&amp;quot;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; b = Poll.objects.get(pk=2)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2]&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.all()[2].name&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; quit()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from polls.models import Choice, Poll&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; a = Poll.objects.first()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; Choice.objects.filter(poll__id=1).all() oder besser &amp;gt;&amp;gt;&amp;gt; a.choice_set.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; python manage.py create_template_tags foobar&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u = User.objects.get(username=&#039;Max&#039;)  # Hohle den Benutzer Max aus der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.set_password(&#039;neues passwort&#039;)  # Vergebe das neue Passwort&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; u.save()  # Speichere das neue Passwort in der Datenbank&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; from django.contrib.auth.models import User&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users = User.objects.all()&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; users&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt; user = User.objects.create_user(&#039;Ernst&#039;, &#039;ernst@ernst.org&#039;, &#039;benutzer_passwort&#039;)&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
       &amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:DevStudio]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=164</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=164"/>
		<updated>2023-09-19T19:50:12Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;Inhalt von .zprofile:&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
* pyenv install --list | grep &amp;quot; 3\.[678]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=163</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=163"/>
		<updated>2023-09-19T18:35:23Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;Inhalt von .zprofile:&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=162</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=162"/>
		<updated>2023-09-19T18:34:32Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
_.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=161</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=161"/>
		<updated>2023-09-19T18:33:44Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=160</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=160"/>
		<updated>2023-09-19T18:33:14Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=159</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=159"/>
		<updated>2023-09-19T18:32:53Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;&lt;br /&gt;
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=158</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=158"/>
		<updated>2023-09-19T18:32:16Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=157</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=157"/>
		<updated>2023-09-19T18:31:59Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
      export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=156</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=156"/>
		<updated>2023-09-19T18:31:42Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
  export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=155</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=155"/>
		<updated>2023-09-19T18:30:47Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
{{Message-info|Inhalt=&#039;&#039;&#039;eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;$HOME/.pyenv/bin:$PATH&amp;quot;&lt;br /&gt;
eval &amp;quot;$(pyenv init --path)&amp;quot;&#039;&#039;&#039;_&#039;&#039;&#039;fully.sh und in cron.d integriert&#039;&#039;&#039;.}}&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=154</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=154"/>
		<updated>2023-09-19T14:49:30Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* /bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;&lt;br /&gt;
* (echo; echo &#039;eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&#039;) &amp;gt;&amp;gt; /Users/holger/.zprofile&lt;br /&gt;
* eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=153</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=153"/>
		<updated>2023-09-19T14:34:12Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* /bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=152</id>
		<title>Homebrew</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Homebrew&amp;diff=152"/>
		<updated>2023-09-19T14:32:41Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: Die Seite wurde neu angelegt: „=== xxx ===  * /bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== xxx ===&lt;br /&gt;
&lt;br /&gt;
* /bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=151</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=151"/>
		<updated>2023-09-19T14:31:50Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== MAC OS ==&lt;br /&gt;
&lt;br /&gt;
* [[Homebrew|Homebrew-Installation auf dem MAC]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=150</id>
		<title>Pyenv</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Pyenv&amp;diff=150"/>
		<updated>2023-09-19T08:42:35Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: Die Seite wurde neu angelegt: „== mehrere Python-Versionen ==  * brew install pyenv * brew info * pyenv install 3.11.5 * pyenv install 3.11.0 * pyenv versions * python --version * echo &amp;#039;eval &amp;quot;$(pyenv init --path)&amp;quot;&amp;#039; &amp;gt;&amp;gt; ~/.bash_profile * source ~/.bash_profile * pyenv global 3.11.0 * python -m venv .venv * source .venv/bin/activate * pip install django * python -m django version * pip install mysqlclient  {{Hauptseite}} Kategorie:Python“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== mehrere Python-Versionen ==&lt;br /&gt;
&lt;br /&gt;
* brew install pyenv&lt;br /&gt;
* brew info&lt;br /&gt;
* pyenv install 3.11.5&lt;br /&gt;
* pyenv install 3.11.0&lt;br /&gt;
* pyenv versions&lt;br /&gt;
* python --version&lt;br /&gt;
* echo &#039;eval &amp;quot;$(pyenv init --path)&amp;quot;&#039; &amp;gt;&amp;gt; ~/.bash_profile&lt;br /&gt;
* source ~/.bash_profile&lt;br /&gt;
* pyenv global 3.11.0&lt;br /&gt;
* python -m venv .venv&lt;br /&gt;
* source .venv/bin/activate&lt;br /&gt;
* pip install django&lt;br /&gt;
* python -m django version&lt;br /&gt;
* pip install mysqlclient&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:Python]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=149</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=149"/>
		<updated>2023-09-19T08:06:18Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
* [[pyenv|mehrere Pythonversionen]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=148</id>
		<title>Maria DB</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=148"/>
		<updated>2023-09-09T19:34:02Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* brew update&lt;br /&gt;
* brew install mariadb&lt;br /&gt;
* mysql.server start&lt;br /&gt;
* brew services start mariadb&lt;br /&gt;
* brew info mariadb&lt;br /&gt;
* mariadb-secure-installation&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Kategorie:MAC&amp;diff=147</id>
		<title>Kategorie:MAC</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Kategorie:MAC&amp;diff=147"/>
		<updated>2023-09-09T18:45:31Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: Die Seite wurde neu angelegt: „Apple MAC“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Apple MAC&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=146</id>
		<title>Maria DB</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=146"/>
		<updated>2023-09-09T18:44:52Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* brew update&lt;br /&gt;
* brew install mariadb&lt;br /&gt;
* mysql.server start&lt;br /&gt;
* brew services start mariadb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=145</id>
		<title>Maria DB</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=145"/>
		<updated>2023-09-09T18:42:58Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* brew update&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
{{Hauptseite}}&lt;br /&gt;
[[Kategorie:MAC]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=144</id>
		<title>Maria DB</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Maria_DB&amp;diff=144"/>
		<updated>2023-09-09T18:41:07Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: first things&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* brew update&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=143</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=143"/>
		<updated>2023-09-09T18:39:31Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Maria DB|MariaDB-Installation auf dem MAC]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
	<entry>
		<id>https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=142</id>
		<title>Hauptseite</title>
		<link rel="alternate" type="text/html" href="https://www.astroneth.de/mediawiki/index.php?title=Hauptseite&amp;diff=142"/>
		<updated>2023-09-09T18:37:23Z</updated>

		<summary type="html">&lt;p&gt;Holger Neth: /* Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;MediaWiki wurde installiert.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].&lt;br /&gt;
&lt;br /&gt;
Hier geht es zum [[PlayGround|Playground]]&lt;br /&gt;
&lt;br /&gt;
== Starthilfen ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsparameter]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Häufige Fragen zu MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/postorius/lists/mediawiki-announce.lists.wikimedia.org/ Mailingliste zu neuen Versionen von MediaWiki]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]&lt;br /&gt;
&lt;br /&gt;
== Projekte ==&lt;br /&gt;
&lt;br /&gt;
* [[Projekte|Homepage]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
&lt;br /&gt;
* [[Linksammlung|Linksammlung]]&lt;br /&gt;
&lt;br /&gt;
== Server ==&lt;br /&gt;
&lt;br /&gt;
* [[Aktivitätenbuch|Aktivitätenbuch]]&lt;br /&gt;
* [[Backup des Servers|Backup des Servers]]&lt;br /&gt;
* [[OpenVPN 3 client|OpenVPN 3 client für Ubuntu installieren]]&lt;br /&gt;
* [[Maria DB|Installation auf dem MAC]]&lt;br /&gt;
* [[Putty|SSH-Keys fehlerhafter Import in Putty]]&lt;br /&gt;
* [[Servereinrichtung| Servereinrichtung (mit Ubuntu und Apache)]]&lt;br /&gt;
* [[SSH-Verbindung einrichten|SSH-Verbindung einrichten]]&lt;br /&gt;
&lt;br /&gt;
== Django ==&lt;br /&gt;
&lt;br /&gt;
* [[Django|Umgebung und Projekt anlegen]]&lt;/div&gt;</summary>
		<author><name>Holger Neth</name></author>
	</entry>
</feed>