MichiPedia

Vorbemerkung

Werden sowohl der LAMP Stack als Einzelprogramme (Apache, MySQL/MariaDB, PHP) als auch das LAMPP/XAMPP Package installiert, beeinflussen sich u.U. die beiden Apache Installationen. Daher muss ein Webserver deaktiviert werden.

Option 1: XAMPP Package
- Linux (XAMPP for Linux), Apache, MariaDB, PHP, Perl
- XAMPP ist nicht für den Produktiveinsatz, sondern nur als Testumgebung gedacht,
da es sehr offen vorkonfiguriert ist

Option 2: LAMP Stack als Einzelprogramme
- Da das alles noch nicht 100% verstanden ist wird im Augenblick NICHTS gelöscht.

Option 1: XAMPP/LAMPP Stack

Der LAMPP Stack arbeitet nur korrekt, wenn alle LAMPP Services bei Start von LAMPP aktiviert werden. Wurde Apache separat installiert, wird er i.d.R. beim Boot von Linux automatisch mitgestartet. Das führt zu einem Fehler (anderer Web Server läuft bereits o.ä.). In diesem Fall muss Apache manuell gestoppt werden. Empfohlen wird, Apache generell nicht beim Boot mitstarten zulassen (disable apache)

# Linux Apache Kommandos

$ sudo systemctl start apache2

$ sudo systemctl stop apache2

$ sudo systemctl restart apache2

$ sudo systemctl status apache2

# Verhindern, dass Apache bei jedem Boot automatisch startet

$ sudo systemctl disable apache2

LAMPP Stack installieren

Möglichkeit 1: Apache Friends

#
# https://www.apachefriends.org/index.html
#
# gute Internetseiten:
#     - https://de.wikihow.com/XAMPP-unter-Linux-installieren
#     - https://wiki.ubuntuusers.de/XAMPP/
#
# Download von Seite
#       https://www.apachefriends.org/index.html
# starten

$ cd Downloads
$ chmod +x xampp-linux-x64-8.2.4-0-installer.run
$ sudo ./xampp-linux-x64-8.2.4-0-installer.run

#
# Nach Installation: Häkchen bei „Launch XAMPP“ rausnehmen
#

Möglichkeit 2: Tasksel

$ sudo apt update
$ sudo apt install tasksel
$ sudo tasksel install lamp-server

LAMPP Stack starten / stoppen

# Der LAMPP Stack wird im Directory
#
#     /opt/lampp
#
# installiert. Die dortige Datei xampp ist ein Shell Skript

$ cd /opt/lampp
$ sudo ./xampp start
$ sudo ./xampp stop
$ sudo ./xampp <weitere>

#
# oder mit graphischer Oberfläche
#

$ cd /opt/lampp
$ sudo ./manager-linux-x64.run

#
# Im Tab „Manage Servers“ „Start All“ drücken
#

LAMPP Stack vorbereiten

Möglichkeit 1: Projektdaten in meinem Verzeichnis

# Neues Projekt im Projektverzeichnis (Beispiel Grassau):

$ cd /home/michael/Schreibtisch/Michael-Projekte
$ mkdir Grassau

# Wordpress muss wp-config.php und .htaccess anlegen können
#
# Todo: überprüfen. Beim Test (23.11.25) hat nicht WP die wp-config angelegt
#       sondern wurde von mir als Kopie der wp-config-sample modifiziert.
#       Gilt evtl. nur für die .htaccess ?

$ chmod 777 Grassau

# Im Verzeichnis
#
#     /opt/lampp/htdocs
#
# einen symbolischen Link zu dem neuen Projekt erzeugen. Der Name des Links
# entspricht dann der URL /localhost/grassau

$ sudo ln -s /home/michael/Schreibtisch/Michael-Projekte/Grassau grassau

Möglichkeit 2: Projektdaten in /opt/lampp/htdocs

# alle Dateien unter /opt/lampp gehören root
#
# Daher

$ cd /opt/lampp/htdocs
$ find . -exec chown michael:michael {} +
$ chmod michael:michael htdocs

Datenbank vorbereiten

Bei Initialisierung von Wordpress wird u.a. der Name der Datenbank abgefragt. Existiert die DB nicht, legt Wordpress die Datenbank nicht automatisch an und bricht mit "Fehler beim Aufbau einer Datenbankverbindung" ab.

# Eingabe im Browser (nach Start von XAMPP)
#
#      localhost/phpmyadmin
#
# danach Anlegen der Datenbank in MySQL mit DB neu (Beispiel grassau)

#
# oder über die graphische Oberfläche
#
# bei mir startet der DB Prozess nicht, da er offensichtlich bereits läuft:
# localost/grassau und localhost/phpmyadmin funktionieren aber.
#
# Wenn das mal funktionieren sollte, Beschreibung aktualisieren:
#
# Startbildschirm von XAMPP: im Browser localhost oder 127.0.0.1 eintippen
# Tab phpMyAdmin
# Menü links (neu)
# Neue Datenbank (z.B. wordpress)
# Reiter „Rechte“
# Nutzername „root“ -> kein Passwort

Wordpress vorbereiten

Installation

#
# - Existierende (blanke) Kopie verwenden oder als ZIP File von 
#   wordpress.org runterladen (deutsche Version ?)
# - Im Ordner 
#         /home/michael/Schreibtisch/Michael-Projekte/Grassau
#   entpacken oder im Terminal ins Zieldirectory kopieren
#

$ cd $HOME/Downloads
$ sudo cp -r wordpress/* /opt/lampp/htdocs/wordpress

# Dateistruktur:
#
#        wp-admin
#        wp-content
#        wp-includes
#           index.php
#           ...

# Falls es Probleme mit den Zugriffsrechten geben sollte, kann man
# die Werte auf Wordpress-Standard zurücksetzen.
#
# Ist in MichiPedia
#
#        Development - Wordpress -Setup & Analyse
#
# beschrieben

Modifikation

# - Kopieren der Datei wp-config-sample.php nach wp-config.php
# - Setzen der Werte
#          define( 'DB_NAME', 'grassau' );

#          /** Database username */
#          define( 'DB_USER', 'root' );

#          /** Database password */
#          define( 'DB_PASSWORD', '' );

#          /** Database hostname */
#          define( 'DB_HOST', '127.0.0.1' );

Projekt starten

# Eingabe im Browser (Beispiel: Projekt Grassau)
#
#     localhost/grassau

Option 2: Apache, etc einzeln installieren

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-on-debian-10#step-4-creating-a-virtual-host-for-your-website

oder

https://www.digitalocean.com/community/tutorials/how-to-install-lamp-stack-on-ubuntu

oder

https://cloudspinx.com/how-to-install-lamp-stack-on-linux-mint/

apache2

in 
/etc/apache2/sites-available/000-default.conf

DocumentRoot /var/www/html abwandeln zu
DocumentRoot /var/www

apache aktualisieren mit

sudo systemctl restart apache2

dann wird bei Aufruf von localhost NICHT die Apache Site gezeigt sondern eine Index-Seite mit z.B.

html/
test/



/****************
Apache absichern, damit man nicht von aussen zugreifen kann

In Datei  /etc/apache2/ports.conf ersetze "Listen 80" durch "Listen 127.0.0.1:80".
**********/

We want Apache to run as our own user account to avoid any permission problems or conflicts when running drush or editing config files. Edit /etc/apache2/envvars and change the user to your account name. Example:

export APACHE_RUN_USER=michael
export APACHE_RUN_GROUP=michael

PEnable the Rewrite mod and restart Apache.

sudo a2enmod rewrite ??? wieso ???
sudo service apache2 restart

SHell Skript von https://klau.si/sites/default/files/deploy-site.sh_.txt

#!/bin/bash

if [[ $# -lt 1 || $1 == "--help" || $1 == "-h" ]]
then
  echo "Usage:"
  echo "  sudo `basename $0` SITENAME"
  echo "Examples:"
  echo "  sudo `basename $0` drupal-8"
  exit
fi

WORKDIR="/home/klausi/workspace"
APACHEDIR="/etc/apache2/sites-available"
HOSTSFILE="/etc/hosts"

echo "<VirtualHost *:80>
	ServerAlias $1.localhost
	DocumentRoot $WORKDIR/$1
	<Directory \"$WORKDIR/$1\">
		Options FollowSymLinks
		AllowOverride All
		Require all granted
        </Directory>
</VirtualHost>" > $APACHEDIR/$1.conf
a2ensite $1
service apache2 restart
grep -q "127.0.0.1  $1.localhost" $HOSTSFILE
if [ $? -ne 0 ]; then
  echo "127.0.0.1  $1.localhost" >> $HOSTSFILE
fi

Sollte zu etwas führen wie z.B.

<VirtualHost *:80>
        ServerAlias drupal-8.localhost
        DocumentRoot /home/klausi/workspace/drupal-8
        <Directory "/home/klausi/workspace/drupal-8">
                Options FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

mariadb

sudo apt-get install mariadb-server (phpmyadmin)

??? Installation mariadb fragt Nutzer -> root Passwort keines ??? (oder root)

In Terminal einloggen mit 

$ sudo mariadb -u root

Passwort kann geändert werden

> ALTER USER 'root'@'localhost' IDENTIFIED BY 'ROOTPASSWORD';

> exit;

Ab sofort ist die passwortlose Anmeldung im Terminal nicht mehr möglich und erfolgt daher mit dem Befehl mariadb -u root -p -h localhost.

WICHTIG:

Anmeldung hat nicht funktioniert. Änderungen in /opt/lamp/phpmyadmin/config.inc.php"

1)
$cfg['Servers'][$i]['host'] = 'localhost'; wird zu
$cfg['Servers'][$i]['host'] = '127.0.0.1';

2)
$cfg['Servers'][$i]['controluser'] = 'pma'; wird zu
$cfg['Servers'][$i]['controluser'] = 'phpmyadmin';

3)
$cfg['Servers'][$i]['controlpass'] = ''; wird zu
$cfg['Servers'][$i]['controlpass'] = 'root';


mysql CLI-Befehle:
(https://stackoverflow.com/questions/36864206/sqlstatehy000-1698-access-denied-for-user-rootlocalhost)

> select user [, host, password]  from mysql.user;
> show databases;

DROP USER root@pediatest.munichsustain.de;
CREATE USER root@pediatest.munichsustain.de IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

4)
$cfg['Servers'][$i]['user'] = 'root'; bleibt

5)
$cfg['Servers'][$i]['password'] = ''; bleibt


<?php
##
## database access settings in php format
## automatically generated from /etc/dbconfig-common/phpmyadmin.conf
## by /usr/sbin/dbconfig-generate-include
##
## by default this file is managed via ucf, so you shouldn't have to
## worry about manual changes being silently discarded.  *however*,
## you'll probably also want to edit the configuration file mentioned
## above too.
##
$dbuser='phpmyadmin';
$dbpass='root';
$basepath='';
$dbname='phpmyadmin';
$dbserver='pediatest.munichsustain.de';
$dbport='3306';
$dbtype='mysql';

phpmyadmin

Wir zunehmend mit mariadb genutzt


sudo apt-get install phpmyadmin

fragt nach Passwort (-> root)

Wenn phpmyadmin nicht mit "localhost/phpmyadmin" gestartet werden kann muss phpmyadmin in apache bekannt gemacht werden:

1) so habe ich es gemacht

sudo ln -s /etc/phpmyadmin/apache.conf
           /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin.conf
sudo systemctl restart apache2

"localhost/phpmyadmin" sollte jetzt funktionieren. Wenn nur die <PHP Datei angezeigt wird muss noch PHP installiert werden

2) Alternativvorschlag (nicht getestet)

Include /etc/phpmyadmin/apache.conf

in Datei /etc/apache2/apache2.conf einfügen und apache neu starten


<?php
##
## database access settings in php format
## automatically generated from /etc/dbconfig-common/phpmyadmin.conf
## by /usr/sbin/dbconfig-generate-include
##
## by default this file is managed via ucf, so you shouldn't have to
## worry about manual changes being silently discarded.  *however*,
## you'll probably also want to edit the configuration file mentioned
## above too.
##
$dbuser='phpmyadmin';
$dbpass='root';
$basepath='';
$dbname='phpmyadmin';
$dbserver='pediatest.munichsustain.de';
$dbport='3306';
$dbtype='mysql';

PHP