LAMPP

Dieses Handbuch enthält eine schrittweise Installationsprozedur für den bekannten LAMP-Stack (Linux, Apache, MySQL und PHP / PhpMyAdmin) unter Verwendung einer Gentoo-Installationsumgebung.

Auszug Wikipedia:

LAMP ist ein Akronym für den kombinierten Einsatz von Programmen auf Basis von Linux, um dynamische Webseiten zur Verfügung zu stellen. Dabei stehen die einzelnen Buchstaben des Akronyms für die verwendeten Komponenten:

Betriebssystem Linux
Webserver Apache
Datenbank MySQL
Programmiersprache PHP

Diese Programmkombination definiert im Sinne einer Software-Distribution eine Infrastruktur, in deren Rahmen dynamische Webseiten und -anwendungen entwickelt und bereitgestellt werden können.

Schritt 1: Konfigurieren Sie die statische IP-Adresse

1. Bevor wir mit der Installation des LAMP-Stacks fortfahren, muss das System mit einer statischen IP-Adresse konfiguriert werden, was im Falle eines Servers ein „Muss“ ist. Bevor Sie jedoch mit der Konfiguration der statischen Netzwerkeinstellungen beginnen, verwenden Sie den Befehl ifconfig, um die Namen der Netzwerkschnittstellenkarten anzuzeigen.

#ifconfig -a

Wie Sie sehen, kann sich der Name der Netzwerkkarte von anderen unter Linux gebräuchlichen Namen wie ethX, ensXX oder anderen unterscheiden. Notieren Sie sich diesen Namen für weitere Einstellungen.

2. Wenn Sie zuvor einen DHCP-Server für Ihr Netzwerk verwendet haben, stellen Sie sicher, dass Sie den DHCP-Client auf Ihrem System mit den folgenden Befehlen herunterfahren und deaktivieren (ersetzen Sie IPs und Geräte durch Ihre Einstellungen).

# rc-update del dhcpcd default
# /etc/init.d/dhcpcd stop
# ifconfig enp3s0 down
# ifconfig enp3s0 del 192.168.178.40 netmask 255.255.255.0

3. Erstellen Sie dann eine symbolische Verbindung vom Netzwerk-Loopback-Gerät mit dem Namen der verbundenen Schnittstelle Ihrer Netzwerkkarte und erstellen Sie eine statische Konfigurationsdatei für dieses Gerät im Pfad /etc/conf.d/.

# ln -s /etc/init.d/net.lo  /etc/init.d/net.enp3s0
# nano -w  /etc/conf.d/net.enp3s0

/etc/init.d/net.enp3s0:

config_enp3s0="192.168.1.25 netmask 255.255.255.0 brd 192.168.1.255"
routes_enp3s0="default via 192.168.1.1"
dns_servers_enp3s0="192.168.1.1 8.8.8.8"

4. Nachdem Sie die statischen Konfigurationen der Netzwerkkarte bearbeitet haben, starten Sie die Netzwerkschnittstelle und überprüfen Sie die Netzwerkeinstellungen und die Verbindung mit den Befehlen ifconfig und ping. Wenn alles erfolgreich konfiguriert wurde, fügen Sie sie zum Starten hinzu.

# /etc/init.d/net.enp3s0 start
# ifconfig
# ping -c2 domain.tld
# rc-update add net.enp3s0 default

Wenn Sie möchten, dass DNS-Nameserver systemweit konfiguriert sind, bearbeiten Sie die Datei /etc/resolv.conf und fügen Sie für jede DNS-IP-Adresse eine Nameserver-Zeichenfolge hinzu.

Bitte beachten! Die Befehle unterscheiden sich bei Anwendung von systemd – Stichpunkt systemctl

Schritt 2: Installieren Sie LAMP

Jetzt ist es Zeit, mit der Installation von LAMP fortzufahren. Bearbeiten Sie die Datei make.conf und fügen Sie das USE-Flag apache2 hinzu, bevor Sie versuchen, zu installieren. Beispieldatei /etc/portage/make.conf :

# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

# NOTE: This stage was built with the bindist Use flag enabled
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C
L10N="de"
LC_CTYPE="en_US.UTF-8"
USE="X, alsa, jpg, jpeg, jpeg2k, png, gif, tk, apache2 php mysql"

# emerge -av www-servers/apache2

Führen Sie vor dem Starten des Apache-Dienstes den folgenden Befehl aus, um einen Servernamenfehler zu vermeiden, und starten Sie dann den httpd-Dämon.

# echo “ServerName localhost” >> /etc/apache2/httpd.conf
sysvorOrt /home/michi # nano -w /etc/hosts 
# IPv4 and IPv6 localhost aliases
127.0.0.1       sysvorOrt  sysvorOrt
::1             sysvorOrt

Nun den Apache starten:

# /etc/init.d/apache2 start
bzw.
# systemctl apache2 start

Der User, der den Apache nutzen will muss in der Gruppe apache vorhanden sein.

michis-kiste /home/michi # usermod -aG apache michi

Über die folgenden Befehle wird unter systemd der Apache gestartet und geprüft:

sysvorOrt /home/michi # systemctl start apache2
sysvorOrt /home/michi # systemctl status apache2

Bearbeiten Sie anschließend die Datei /etc/portage/make.conf und verwenden Sie die folgenden USE-Flags für PHP (USE-Flags müssen sich in einer einzelnen Zeile befinden). Beispieldatei:

USE="apache2 php pam berkdb bzip2 cli crypt ctype exif fileinfo filter gdbm hash iconv ipv6 json -ldap nls opcache phar posix readline session simplexml spell ssl tokenizer truetype unicode xml zlib -bcmath calendar -cdb cgi -cjk curl -debug -embed -enchant -firebird -flatfile -fpm (-frontbase) ftp gd -gmp imap -inifile -intl -iodbc -kerberos -ldap-sasl -libedit libmysqlclient -mhash -mssql mysql mysqli -oci8-instant-client -odbc -pcntl pdo -postgres -qdbm -recode (-selinux) -sharedmem -snmp -soap -sockets -sqlite (-sybase-ct) -systemd -sysvipc -threads -tidy -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xslt zip jpeg png pcre session unicode"

PHP_TARGETS="php7.4"

PHP installieren

Installieren Sie im nächsten Schritt die dynamische PHP-Skriptsprache.

# emerge -av php

ACHTUNG! Hier wurde kein USE für apache2 angegeben. Daher kann er dann über #eselect php list apache2 kein PHP finden.

/etc/portage/make.conf

Der aufkommende PHP-Prozess kann abhängig von Ihren Systemressourcen eine Weile dauern. Weisen Sie Apache nach Abschluss des Vorgangs an, PHP-Module zu verwenden, indem Sie die Datei /etc/conf.d/apache2 bearbeiten und PHP5 in der Anweisung APACHE2_OPTS hinzufügen.

# nano -w /etc/conf.d/apache2

Die selbst erstellten Dateien, die vom Apache verarbeitet werden sollen müssen im Verzeichnis /var/www/localhost/htdocs/ gespeichert werden.

Schauen ob PHP korrekt installiert ist

michi@michis-kiste ~ $ php -a
Interactive shell
php >

PHP Shell

php> phpinfo();

phpinfo();


MySQL installieren

Überprüfen Sie vor der Installation der MySQL-Datenbank die USE-Flags des Pakets und bearbeiten Sie bei Bedarf die Portage make.conf.

Verwenden Sie die folgenden Befehle, um die MySQL-Server-Datenbank zu überprüfen und zu installieren.

emerge --config =dev-db/mysql-version
Wenn der obige Befehl abbricht, weil der Hostname auf localhost lautet, kann man diesen auf einen anderen Wert z.B. gentoo ändern. Dazu ist /etc/conf.d/hostname zu ändern und /etc/init.d/hostname neu zu starten.

Hier wird die Authentifizierungsmethode festgelegt, danach das Passwort für die Datenbank.

MySQL starten:

systemctl start mysqld

Bevor Sie den MySQL-Server starten, stellen Sie mit dem folgenden Befehl sicher, dass die MySQL-Datenbank auf Ihrem System installiert ist.

# /usr/bin/mysql_install_db

Wenn kein Fehler kommt sondern der nächste Prompt ist alles ok.

Starte nun die MySQL-Datenbank und sichere sie mit mysql_secure_installation, indem du das Root-Passwort änderst, die Root-Anmeldung außerhalb von localhost deaktivierst, anonyme Benutzer entfernst und die Datenbank testest

Wenn Sie OpenRC verwenden, geben Sie diesen Befehl ein:

root #/etc/init.d/mysql start
* Re-caching dependency info (mtimes differ)…
* Starting mysqld (/etc/mysql/my.cnf) … [ ok ]

Bei der Benutzung von systemd kommt das folgende Kommando zur Anwendung:

root #systemctl restart mysqld.service

Danach ist das root Passwort zu setzen: root #/usr/bin/mysqladmin -u root -h localhost password 'new-password'

Die Infos zur Datenbank können nach erfolgreichem Login über Status abgerufen

Um eine Datenbank zu erstellen wird

mysql> create database test;

eingeben. Jeder SQL Befehl wird mit einem Semikolon beendet. Tipp: Auch in der SQL-History kann mit den Tasten Pfeil-Auf und Pfeil-Ab gearbeitet werden
sysvorOrt /home/michi # mysql -h localhost -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.32 Gentoo Linux mysql-8.0.32-r2

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database typeitin;
Query OK, 1 row affected (0,01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| typeitin           |
+--------------------+
5 rows in set (0,02 sec)

mysql> USE typeitin;
Database changed
mysql> create table buttons (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, abkuerzung VARCHAR(120), texteingabe VARCHAR(120));
Query OK, 0 rows affected (0,02 sec)

mysql> show TABLES;
+--------------------+
| Tables_in_typeitin |
+--------------------+
| buttons            |
+--------------------+
1 row in set (0,01 sec)

mysql> 

Datenbank wird mit use ausgewählt

mysql> use test;
Database changed

Tabelle anlegen:

Syntax:

CREATE TABLE tabellenname (feldname datentyp [NOTNULL] PRIMARY KEY], [feldname2 datentyp2 [NOT NULL] ...]


    tabellenname = Name der Tabelle; tabellenname kann auch als zu einer bestimmten DB gehörig spezifiziert werden: CREATE TABLE 'datenbankname'.'tabellenname'
    feldname = “Spalte” einer Tabelle, soll aussagekräftig sein
    datentyp = siehe
    NOT NULL = Wert des Feldes darf nicht 0 sein
    AUTO_INCREMENT = Zahl wird bei jedem neuen Datensatz automatisch um eins erhöht
    PRIMARY KEY = Feld wird zum Primärschlüssel und referenziert damit jeden Datensatz eindeutig
    UNIQUE KEY = Feldinhalt darf nicht doppelt vorkommen (z.B. “Artikelnummer”).
CREATE TABLE kunden (
kunde_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, kunde_name VARCHAR(50)
);

Mit der Funktion DROP kann eine MySQL Tabelle gelöscht werden. Dabei werden auch alle darin befindenden Datensätze gelöscht.

mysql> DROP table kunden;
Query OK, 0 rows affected (0,02 sec)

Informationen zur Tabelle ruft describe ab:

Mit exit verlässt man SQL

PHPmyAdmin

phpMyAdmin st eine freie Webanwendung zur Administration von MySQL-Datenbanken und deren ForkMariaDB. Die Software ist in PHP implementiert; daher kommt der Name phpMyAdmin. Die meisten Funktionen können ausgeführt werden, ohne selbst SQL-Anweisungen zu schreiben, wie z. B. Datensätze auflisten, Tabellen anlegen/löschen, Spalten hinzufügen, Datenbanken anlegen/löschen und Benutzer verwalten.

Die Installation unter Gentoo erfolgt über #emerge -av phpmyAdmin
Die meisten Provider mit Datenbank SQL haben auch PHPmyAdmin aktiv.

Über SQL Vorschau kann man schauen wie die SQL Befehle lauten:

CREATE TABLE `dbs4932437`.`Maschenzaehler` ( `name` TEXT NOT NULL , `projekt` TEXT NOT NULL , `reihe-runde` INT(100) NOT NULL ) ENGINE = InnoDB; 

So setzen Sie das Root-Passwort zurück

Wenn Sie für MySQL noch nie ein Root-Passwort vergeben haben, benötigt der Server für die Verbindung als Root überhaupt kein Passwort. Dies ist jedoch unsicher.
Verwenden Sie unter Unix das folgende Verfahren, um das Kennwort für das MySQL-Konto „root“@„localhost“ zurückzusetzen. Um das Passwort für ein Root-Konto mit einem anderen Hostnamensteil zu ändern, ändern Sie die Anweisungen, um diesen Hostnamen zu verwenden.

Bei den Anweisungen wird davon ausgegangen, dass Sie den MySQL-Server mit dem Unix-Anmeldekonto starten, das Sie normalerweise zum Ausführen verwenden. Wenn Sie den Server beispielsweise mit dem MySQL-Anmeldekonto betreiben, sollten Sie sich als MySQL anmelden, bevor Sie die Anweisungen verwenden. Alternativ können Sie sich als Root anmelden. In diesem Fall müssen Sie mysqld jedoch mit der Option –user=mysql starten. Wenn Sie den Server als Root starten, ohne –user=mysql zu verwenden, erstellt der Server möglicherweise Root-eigene Dateien im Datenverzeichnis, z. B. Protokolldateien, und diese können bei zukünftigen Serverstarts zu berechtigungsbezogenen Problemen führen. In diesem Fall müssen Sie entweder den Eigentümer der Dateien auf MySQL ändern oder sie entfernen.

Melden Sie sich bei Ihrem System als der Unix-Benutzer an, unter dem der MySQL-Server ausgeführt wird (z. B. mysql).

Stoppen Sie den MySQL-Server, falls er ausgeführt wird. Suchen Sie die .pid-Datei, die die Prozess-ID des Servers enthält. Der genaue Speicherort und Name dieser Datei hängt von Ihrer Distribution, Ihrem Hostnamen und Ihrer Konfiguration ab. Häufige Speicherorte sind /var/lib/mysql/, /var/run/mysqld/ und /usr/local/mysql/data/. Im Allgemeinen hat der Dateiname die Erweiterung .pid und beginnt entweder mit mysqld oder dem Hostnamen Ihres Systems.

Stoppen Sie den MySQL-Server, indem Sie einen normalen Kill (nicht kill -9) an den mysqld-Prozess senden. Verwenden Sie im folgenden Befehl den tatsächlichen Pfadnamen der .pid-Datei:

$> kill `cat /mysql-data-directory/host_name.pid`

Verwenden Sie Backticks (keine Anführungszeichen) mit dem Befehl cat. Dadurch wird die Ausgabe von cat in den Kill-Befehl eingefügt.

Erstellen Sie eine Textdatei, die die Erklärung zur Passwortzuweisung in einer einzigen Zeile enthält. Ersetzen Sie das Passwort durch das Passwort, das Sie verwenden möchten.

ALTER USER ‚root’@’localhost‘ IDENTIFIED BY ‚MyNewPass‘;

Speicher die Datei. In diesem Beispiel wird davon ausgegangen, dass Sie die Datei /home/me/mysql-init nennen. Die Datei enthält das Passwort. Speichern Sie es daher nicht an einem Ort, an dem es von anderen Benutzern gelesen werden kann. Wenn Sie nicht als MySQL angemeldet sind (der Benutzer, unter dem der Server ausgeführt wird), stellen Sie sicher, dass die Datei über Berechtigungen verfügt, die es MySQL ermöglichen, sie zu lesen.

Starten Sie den MySQL-Server mit der Systemvariablen „init_file“, die der Datei einen Namen gibt:

$> mysqld –init-file=/home/me/mysql-init &

Der Server führt beim Start den Inhalt der durch die Systemvariable init_file benannten Datei aus und ändert dabei das Kontokennwort „root“@„localhost“.

Abhängig davon, wie Sie Ihren Server normalerweise starten, können auch andere Optionen erforderlich sein. Beispielsweise kann –defaults-file vor dem Argument init_file erforderlich sein.

Nachdem der Server erfolgreich gestartet wurde, löschen Sie /home/me/mysql-init.

Sie sollten sich nun mit dem neuen Passwort als Root mit dem MySQL-Server verbinden können. Stoppen Sie den Server und starten Sie ihn normal neu.