This commit is contained in:
Daniel Schubert 2019-02-28 12:50:27 +01:00
parent 403f297269
commit 7c4ccfa514
7 changed files with 1342 additions and 848 deletions

291
15.html
View File

@ -49,7 +49,7 @@
</aside>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex"> <h3>lampp stack</h3> </section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex"> <h3>lampp stack</h3> Linux & Apache & mysql & php</section>
<section>
@ -75,20 +75,23 @@ MariaDB [(none)]> \q
<section>
mysql ist eine „relationale Datenbank”
<p><cite> Relationale Datenbanken versuchen die Realität in einem Datenmodell abzubilden.</cite>
<p><blockquote> Relationale Datenbanken versuchen, die Realität in einem Datenmodell abzubilden.</blockquote>
<ul>
<li>Jede Zeile einer Tabelle ist ein Datensatz</li>
<li>Jede Zeile ( Tupel ) besteht aus Attributen ( die Spalten )</li>
<li>Über Primärschlüssel werden Beziehungen hergestellt</li>
<li>Jede Zeile ( Tupel ) besteht aus <strong>Attributen</strong> ( die Spalten )</li>
<li>Über <strong>Primärschlüssel</strong> werden Beziehungen hergestellt</li>
<li>Eine Datenbank kann viele Tabellen beinhalten</li>
<li>Die Tabellen stehen in Beziehung ( Relation )</li>
</ul>
</section>
<section>
<img src="img/relationales_datenbankmodell_beispiel.jpg">
<p><small style="font-size:.4em">Quelle: http://www.datenbanken-verstehen.de/datenbank-grundlagen/datenbankmodell/relationales-datenbankmodell/</small>
</section>
<section>
<h4>Normalisierung</h4>
Aufteilung der Attribute (Spalten) in mehrere Relationen ( Tabellen ), so dass eine Form ohne Redundanzen entsteht.
</section>
@ -96,20 +99,214 @@ MariaDB [(none)]> \q
<img src="img/Aufspaltung_einer_Tabelle_in_zwei_(Beispiel).svg">
</section>
<section>
<table style="font-size: .5em">
<tr>
<td>Rg Nr</td>
<td>Datum</td>
<td>Name</td>
<td>Straße</td>
<td>Ort</td>
<td>Artikel</td>
<td>Anzahl</td>
<td>Preis</td>
</tr>
<tr>
<td>143</td>
<td>01.04.2018</td>
<td>Max Müller</td>
<td>Trumstrasse 4</td>
<td>75179 Pforzheim</td>
<td>Bleistift</td>
<td>1001</td>
<td>1,00€</td>
</tr>
</table>
</section>
<section>
1. Normalform
<table style="font-size: .5em">
<tr>
<td>Rg Nr</td>
<td>Datum</td>
<td>Vor Name</td>
<td>Nach Name</td>
<td>Straße</td>
<td>Hausnr</td>
<td>PLZ</td>
<td>Ort</td>
<td>Artikel</td>
<td>Anzahl</td>
<td>Preis</td>
</tr>
<tr>
<td>143</td>
<td>01.04.2018</td>
<td>Max</td>
<td>Müller</td>
<td>Trumstrasse</td>
<td> 4</td>
<td>75179</td>
<td> Pforzheim</td>
<td>Bleistift</td>
<td>1001</td>
<td>1,00€</td>
</tr>
</table>
</section>
<section>
<table style="font-size: .5em">
<tr>
<td>Rg Nr</td>
<td>Datum</td>
<td>Vor Name</td>
<td>Nach Name</td>
<td>Straße</td>
<td>Hausnr</td>
<td>PLZ</td>
<td>Ort</td>
<td>Artikel</td>
<td>Anzahl</td>
<td>Preis</td>
</tr>
<tr>
<td>144</td>
<td>01.04.2018</td>
<td>Max</td>
<td>Müller</td>
<td>Trumstrasse</td>
<td> 4</td>
<td>75179</td>
<td> Pforzheim</td>
<td>Bleistift</td>
<td>1001</td>
<td>1,00€</td>
</tr>
<tr>
<td>145</td>
<td>01.04.2018</td>
<td>Max</td>
<td>Müller</td>
<td>Trumstrasse</td>
<td> 4</td>
<td>75179</td>
<td> Pforzheim</td>
<td>Tüte</td>
<td>1001</td>
<td>0,10€</td>
</tr>
<tr>
<td>146</td>
<td>01.04.2018</td>
<td>Max</td>
<td>Müller</td>
<td>Trumstrasse</td>
<td> 4</td>
<td>75179</td>
<td> Pforzheim</td>
<td>Ratzefummel</td>
<td>1001</td>
<td>1,50€</td>
</tr>
</table>
</section>
<section>
Kunden
<table style="font-size: .5em">
<tr>
<td>ID</td>
<td>Vor Name</td>
<td>Nach Name</td>
<td>Straße</td>
<td>Hausnr</td>
<td>PLZ</td>
<td>Ort</td>
</tr>
<tr>
<td>1234</td>
<td>Max</td>
<td>Müller</td>
<td>Trumstrasse</td>
<td> 4</td>
<td>75179</td>
<td> Pforzheim</td>
</tr>
</table>
<hr>
<div>
Rechnungen:
<table style="font-size: .5em">
<tr>
<td>Rg Nr</td>
<td>Datum</td>
<td>KundenID</td>
<td>Artikel</td>
<td>Anzahl</td>
<td>Preis</td>
</tr>
<tr>
<td>144</td>
<td>01.04.2018</td>
<td>1234</td>
<td>Bleistift</td>
<td>1001</td>
<td>1,00</td>
</tr>
<tr>
<td>145</td>
<td>01.04.2018</td>
<td>1234</td>
<td>Tüte</td>
<td>12</td>
<td>0,10</td>
</tr>
<tr>
<td>146</td>
<td>01.04.2018</td>
<td>1234</td>
<td>Ratzefummel</td>
<td>32</td>
<td>1,50</td>
</tr>
</table>
</div>
</section>
<section>
<img src="img/Wp_Normal_1_301208_165800.JPG">
</section>
<section>
Verbindung aufnehmen:
<pre><code class="bash">~$ sudo mysql
# oder:
~$ mysql -u BENUTZERNAME -p -h localhost
</code></pre>
</code></pre>
<ul>
<li class="fragment ">-u : Username</li>
<li class="fragment ">-p : Passwort abfragen</li>
<li class="fragment ">-h : Host</li>
</ul>
</section>
<section>Datenbank erstellen
<pre><code class="sql">CREATE DATABASE IF NOT EXISTS test;
<pre style="font-size:.4em"><code class="sql">CREATE DATABASE IF NOT EXISTS test;
USE test;
@ -195,6 +392,86 @@ Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0</code></pre>
</section>
<section>
Speicherort: <pre><code>/var/lib/mysql</code></pre>
Konfiguration <pre><code>/etc/mysql/my.cnf</code></pre>
</section>
<section>
Andere Datenbanken:
<p><ul>
<li class="fragment ">PostgreSql</li>
<li class="fragment ">SQLite</li>
<li class="fragment ">Redis</li>
<li class="fragment ">MongoDB</li>
</ul>
</section>
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex"> <h3>Apache Webserver</h3></section>
<section>
<ul>
<li>Apache ist der meistgenutzte (?) Webserver</li>
<li class="fragment ">Apache beantwortet http Requests. </li>
<li class="fragment ">Punkt.</li>
<li class="fragment ">kennt Module -> Funtionserweiterung</li>
<li class="fragment ">interpretiert versch. Script-Sprachen über Module</li>
<li class="fragment "><a href="https://de.wikipedia.org/wiki/Apache_HTTP_Server#Module">Liste der Module</a></li>
<li class="fragment ">php, ruby, perl, lua, JavaScript, .net .....</li>
</ul>
</section>
<section>
<ul>
<li>aktuelle Version 2.3 ( deswegen apache2 )</li>
<li class="fragment ">Standard Speicherort f. Webseiten: /var/www/html</li>
<li class="fragment ">Aufruf per Browser : <br>http://localhost/ <br>http://SERVER-IP_ODER_NAME/</li>
<li class="fragment ">Standardmässig wird <code>index.html</code> ausgeliefert</li>
<li class="fragment ">wenn nicht vorhanden Liste des Verz. Inhalt</li>
<li class="fragment ">Steuerung über <br><code>systemctl start | stop | restart | reload | force-reload apache2</code> </li>
</ul>
</section>
<section>
<h4>Konfiguration</h4>
<ul>
<li class="fragment "><code>/etc/apache2/apache2.conf</code></li>
<li class="fragment ">Zusätzliche conf Files: <br><code>/etc/apache2/conf-available/</code></li>
<li class="fragment ">Einzelne Webseiten ( vhosts ) <br><code>/etc/apache2/sites-available/</code></li>
<li class="fragment ">per Verzeichnis: <code>.htaccess</code></li>
</ul>
</section>
<section>
De-/ Aktivieren einer Zusätzlichen Konfigurationsdatei <pre><code class="bash">~$ sudo a2enconf NAME_DER_DATEI.conf
~$ sudo a2disconf NAME_DER_DATEI.conf </code></pre>
De-/ Aktivieren einer Zusätzlichen Webseite <pre><code class="bash">~$ sudo a2ensite MEINE_WEBSEITE.conf
~$ sudo a2dissite MEINE_WEBSEITE.conf </code></pre>
<small>Diese beiden Befehle machen Symlinks in die Ordner <br><code>/etc/apache/[ conf | site ]-enabled</code></small>
<hr>
<p>Nach Änderungen in diesen Dateien: <pre><code class="bash">~$ sudo systemctl reload apache2</code></pre>
</section>
<section>
<h4>Virtual Hosts</h4>
<div>Es ist möglich, von einem Server verschiedene Domains auszuliefern mit sog. Virtual Hosts.</div>
<p>Beispiel:: <a href="beispiele/15/schubertdaniel.conf">beispiele/15/schubertdaniel.conf</a>
</section>
<section>
<span style="color: orange">Aufgabe:</span> <p>Erstellt eine Webseite namens omikron, die per <p><code>http://localhost/omikron</code> <br>aus dem Ordner <p><code>/var/www/html/omikron</code> <br>ausgeliefert wird.
</section>
<section><span style="color: orange">Aufgabe:</span> <p>Verlegt die Wordpress Installation nach <code>/home/NUTZERNAME/www/wordpress</code></section>
<!--
<section>

View File

@ -0,0 +1,21 @@
<VirtualHost 144.76.58.9:80 [2a01:4f8:191:6204:0:0:0:2]:80 >
ServerName www.schubertdaniel.de
ServerAlias schubertdaniel.de
DocumentRoot /home/dany/www/schubertdaniel
DirectoryIndex index.php index.html
CustomLog /home/dany/www/log/schubertdaniel.log common
Header set Content-Language: de
<Directory /home/dany/www/schubertdaniel>
AllowOverride All # ermöglicht .htaccess
Require all granted # öffentlich zugänglich
Options -Indexes # kein Inhaltslisting
</Directory>
</VirtualHost>

34
beispiele/15/wp-backup.sh Normal file
View File

@ -0,0 +1,34 @@
#!/bin/bash
function db_backup {
# Vars
host=localhost
user=XXXXXXX
pass=XXXXXXX
db=wordpress
echo 'DB Export ------> '
mysqldump --opt --add-drop-table -h$host -u$user -p$pass $db | gzip > wp-db.sql.gz
}
function file_backup {
backupfile="wordpress-backup.tar"
echo 'File Backup --- building tar File...'
tar -cf $backupfile ~/wp*
echo '+DONE'
}
echo '-------------------------------------------'
echo 'Tolles Backup Script'
echo '-------------------------------------------'
backupdir=backup
cd ~ ; mkdir $backupdir && cd $backupdir || { echo "FEHLER!!!!"; exit 1 }
# Funktionsaufrufe
db_backup
file_backup

View File

@ -0,0 +1,91 @@
#!/usr/bin/env ruby
require "date"
require "fileutils"
$NOW = Date.today.strftime("%d-%m-%Y_%H:%M:%S")
# borg repository
$REPO = "/home/dany/backups/borg"
# websites folder
$WEBSITESDIR = "/home/dany/www"
# local backup folder for db files
$BACKUPDIR = "/home/dany/backups"
unless File.exist?( $BACKUPDIR )
FileUtils.mkdir_p( $BACKUPDIR )
end
# Unterverzeichnisse von www die gebackuppt werden sollen
liste = [
"conf",
"danletard.de",
"papier-restaurierung",
"schubertdaniel",
"x2ero",
"conworx",
"rvv/wp-content",
"rvv/shop"
]
# websites
def websites( liste )
Dir.chdir( $WEBSITESDIR )
liste.each do |elem|
if File.exist?( elem )
`borg create -C zlib,8 #{$REPO}::#{elem}-{now:%d-%m-%Y_%H:%M:%S} #{elem} --exclude '*mpeg'`
else
puts "File or Directory \"#{elem}\" not found!\n"
end
end
end
# davical db backup
def calendar_db_backup
Dir.chdir( $BACKUPDIR )
`pg_dump -U davical_app davical | gzip > kalender-#{$NOW}.psql.gz`
end
# wordpress db backup
def wp_db_backup
host= "localhost"
user= "rvv"
pass= "owUy9JTWLHQ0"
#db= "rvv0rettung"
db= "rvv_dev"
do_sql_backup(host,user,pass,db)
end
# oxid db backup
def oxid_db_backup
host= "localhost"
user= "rvv"
pass= "owUy9JTWLHQ0"
db= "rvv_shop"
do_sql_backup(host,user,pass,db)
end
#
# Helper function
#
def do_sql_backup(host,user,pass,db)
Dir.chdir( $BACKUPDIR )
`mysqldump --opt --add-drop-table -h#{host} -u#{user} -p#{pass} #{db} | gzip > #{db}-#{$NOW}.sql.gz`
end
websites( liste )
wp_db_backup
oxid_db_backup
calendar_db_backup
FileUtils.chown_R( 1000, 1000, $BACKUPDIR)

34
beispiele/17/wp-backup.sh Normal file
View File

@ -0,0 +1,34 @@
#!/bin/bash
function db_backup {
# Vars
host=localhost
user=XXXXXXX
pass=XXXXXXX
db=wordpress
echo 'DB Export ------> '
mysqldump --opt --add-drop-table -h$host -u$user -p$pass $db | gzip > wp-db.sql.gz
}
function file_backup {
backupfile="wordpress-backup.tar"
echo 'File Backup --- building tar File...'
tar -cf $backupfile ~/wp*
echo '+DONE'
}
echo '-------------------------------------------'
echo 'Tolles Backup Script'
echo '-------------------------------------------'
backupdir=backup
cd ~ ; mkdir $backupdir && cd $backupdir || { echo "FEHLER!!!!"; exit 1 }
# Funktionsaufrufe
db_backup
file_backup

View File

@ -35,6 +35,8 @@
<li><a href="12.html">Netzwerk Programme</a></li>
<li><a href="13.html">Samba</a></li>
<li><a href="14.html">Compiler, Kernelmodule, grub</a></li>
<li><a href="15.html">LAMP Stack, MySql / Apache</a></li>
<li><a href="#">Linux und Multimedia</a></li>
</ol>
</div>
</div>
@ -72,6 +74,9 @@
<h2><i class="icon linkify"></i>Links</h2>
<div class="ui three column very relaxed grid">
<!-- 1te Spalte -->
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">Allgemein</div> </div>
@ -125,6 +130,8 @@
</div>
</div>
<!-- 2te Spalte -->
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">vim</div> </div>
@ -157,15 +164,27 @@
</UL>
</div>
</div>
<div class="ui segment">
<div class="content"> <div class="header">relationale Datenbanken / MySql</div> </div>
<div class="content">
<UL>
<li><a href="https://de.wikipedia.org/wiki/Normalisierung_(Datenbank)" target="_blank">Wikipedia: Normalisierung</a></li>
<li><a href="https://mariadb.com/kb/en/library/mariadb-basics/" target="_blank">MariaDB Basics</a></li>
</UL>
</div>
</div>
</div>
<!-- 3te Spalte -->
<div class="column">
<div class="ui segment">
<div class="content"> <div class="header">Netzwerk Einstellungen</div> </div>
<div class="content">
<ul>
<li><a href="https://wiki.debian.org/NetworkConfiguration#Setting_up_an_Ethernet_Interface">https://wiki.debian.org/</a></li>
<li><a href="https://wiki.ubuntuusers.de/interfaces/">wikiw.ubuntuusers.de</a></li>
<li><a href="https://wiki.debian.org/NetworkConfiguration#Setting_up_an_Ethernet_Interface target="_blank"">https://wiki.debian.org/</a></li>
<li><a href="https://wiki.ubuntuusers.de/interfaces/ target="_blank"">wikiw.ubuntuusers.de</a></li>
</ul>
</div>
</div>
@ -174,10 +193,10 @@
<div class="content"> <div class="header">diverse</div> </div>
<div class="content">
<ul>
<li><a href="ftp://ftp.gwdg.de/pub/linux/knoppix/dvd/">Knoppix</a></li>
<li><a href="https://wiki.archlinux.de/title/Image-Erstellung_mit_dd">Nutzung von <code>dd</code> </a></li>
<li><a href="https://wiki.ubuntuusers.de/Screen/">Screen bei wiki.ubunutuusers.de</a></li>
<li><a href="https://www.gnu.org/software/screen/manual/screen.html">Screen bei gnu.org</a></li>
<li><a href="ftp://ftp.gwdg.de/pub/linux/knoppix/dvd/" target="_blank">Knoppix</a></li>
<li><a href="https://wiki.archlinux.de/title/Image-Erstellung_mit_dd" target="_blank">Nutzung von <code>dd</code> </a></li>
<li><a href="https://wiki.ubuntuusers.de/Screen/" target="_blank">Screen bei wiki.ubunutuusers.de</a></li>
<li><a href="https://www.gnu.org/software/screen/manual/screen.html" target="_blank">Screen bei gnu.org</a></li>
</ul>
</div>
</div>
@ -186,10 +205,28 @@
<div class="content"><div class="header">ssh</div></div>
<div class="content">
<ul>
<li><a href="https://man.openbsd.org/sshd_config.5">sshd config manual</a></li>
<li><a href="https://man.openbsd.org/sshd_config.5" target="_blank">sshd config manual</a></li>
</ul>
</div>
</div>
<div class="ui segment">
<div class="content"><div class="header">LAMPP</div></div>
<div class="content">
<ul>
<li><a href="https://de.wikipedia.org/wiki/XAMPP" target="_blank">Wikipedia XAMPP</a></li>
<li><a href="https://www.apachefriends.org/de/index.html" target="_blank">XAMPP Homepage</a></li>
<li><a href="https://wiki.ubuntuusers.de/Apache_2.4/" target="_blank">wiki.ubuntuusers.de/Apache_2.4/</a></li>
<li><a href="https://httpd.apache.org/docs/2.4/" target="_blank">Apache2 Doku</a></li>
</ul>
</div>
</div>
</div>
</div>

1666
package-lock.json generated

File diff suppressed because it is too large Load Diff