LAMP stack Tutorial

Das slackware LAMP stack Tutorial installiert, konfiguriert, und verifiziert Linux, Apache, MariaDB, und PHP.

Die Genehmigung zur Nutzung, Vervielfältigung, Änderung, und Verbreitung dieses Tutorials wird hiermit erteilt, vorausgesetzt, dass dieser Genehmigungsvermerk in allen Kopien erscheint. Für das Tutorial gilt der Haftungsausschluss im Quelltext.

Vorbereiten

benutzer

$ cd ~/Downloads

$ wget http://mirror.paketspiegel.de/slackware64-15.0-install-dvd.iso

$ wget https://mirrors.slackware.com/slackware/slackware-iso/slackware64-15.0-iso/slackware64-15.0-install-dvd.iso

$ su root -c "dd if=slackware64-15.0-install-dvd.iso of=/dev/sda bs=4M status=progress; sync"

Linux

http://www.slackware.com

Installieren, Konfigurieren, Verifizieren

Installieren

Slackware 15.0 x86_64

@server

# fdisk /dev/nvme0n1

g

n
Enter
Enter
+64M
Y

n
Enter
Enter
+32G
Y

n
Enter
Enter
Enter
Y

p

t
1
1

t
2
19

p

w

@server

# setup

Hostname: www
Domainname: example.com

IPv4-Adresse: 192.168.3.13
Netzmaske: 255.255.255.0
Torweg: 192.168.3.1
Namenserver: 192.168.3.1

Konfigurieren

root@server

# useradd --create-home <Benutzer>

# passwd <Benutzer>

root@server

# echo $http_proxy

# http_proxy=http://192.168.3.1:3128

# export http_proxy

root@Mageia 10 alpha1 Live GNOME x86_64

# urpmi --force task-c-devel
urpmi expat-devel

# urpmi --force cmake

# urpmi --force libxml2-devel
urpmi --force sqlite3-devel

root@debian 13.4.0 amd64 netinst

# apt install build-essential

# apt install libpcre2-dev
apt install libexpat1-dev
apt install lynx

# apt install cmake
apt install libncurses-dev
apt install libgnutls28-dev

# apt install pkg-config
apt install libxml2-dev
apt install libssl-dev
apt install libsqlite3-dev
apt install zlib1g-dev

root

# id <Benutzer>

# chown <Benutzer>:<Gruppe> /srv

# hostname -I

# top

1 T M

Verifizieren

benutzer@desktop

$ rm ~/.ssh/known_hosts

$ ssh -l <Benutzer> 192.168.3.13

Apache

https://httpd.apache.org

Installieren, Konfigurieren, Verifizieren

Installieren

benutzer@server

$ cd /srv/1

$ su root -c "usr/bin/apachectl stop"

$ cd ~; rm -f -r /srv/1

benutzer

$ mkdir /srv/1

$ cd /srv/1

benutzer

$ echo $http_proxy

$ http_proxy=http://192.168.3.1:3128

$ export http_proxy

benutzer@server /srv/1

$ wget http://paketspiegel.de/httpd-2.4.66.tar.gz

$ wget http://paketspiegel.de/apr-1.7.6.tar.gz

$ wget http://paketspiegel.de/apr-util-1.6.3.tar.gz

$ gunzip -k httpd-2.4.66.tar.gz

$ gunzip -k apr-1.7.6.tar.gz

$ gunzip -k apr-util-1.6.3.tar.gz

$ tar -x -f httpd-2.4.66.tar

$ tar -x -f apr-1.7.6.tar

$ tar -x -f apr-util-1.6.3.tar

benutzer

$ cp -r apr-1.7.6 httpd-2.4.66/srclib/apr

$ cp -r apr-util-1.6.3 httpd-2.4.66/srclib/apr-util

$ mkdir httpd

$ cd httpd

$ ../httpd-2.4.66/configure --help

$ ../httpd-2.4.66/configure --prefix=/srv/1/usr --with-included-apr --with-sqlite3=/usr --with-ssl=/usr

$ ../httpd-2.4.66/configure --prefix=/srv/1/usr --with-included-apr --with-sqlite3=/usr --with-ssl=/usr --with-mpm=prefork

$ make --help

$ make -j 3

$ make install

$ cd ..

Konfigurieren

benutzer

$ manpath

$ which httpd

$ echo $PATH

$ PATH=/srv/1/usr/bin:$PATH

$ man -M usr/man apachectl

benutzer

$ vi usr/conf/httpd.conf

− User daemon
− Group daemon

+ User <Benutzer>
+ Group <Gruppe>

+ ServerName www.example.com:80

Schift+7 User daemon Enter
W C W <Benutzer> Esc
W W .

Schift+7 #ServerName Enter
Y Y P X
Schift+. W Q

$ which apachectl

$ apachectl configtest

$ su root -c "usr/bin/apachectl start"

Verifizieren

benutzer

$ echo $http_proxy

$ http_proxy= lynx http://localhost

Q Y

$ httpd -h

$ httpd -M

$ httpd -S

MariaDB

https://mariadb.org

Installieren, Konfigurieren, Verifizieren

Installieren

benutzer /srv/1

$ wget http://paketspiegel.de/mariadb-11.8.6.tar.gz

$ gunzip -k mariadb-11.8.6.tar.gz

$ tar -x -f mariadb-11.8.6.tar

benutzer

$ mkdir mariadb

$ cd mariadb

$ cmake --help

$ cmake -L ../mariadb-11.8.6

$ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/srv/1/usr ../mariadb-11.8.6

$ cmake --build . --parallel 3

$ cmake --install .

$ cd ..

Konfigurieren

benutzer

$ usr/scripts/mariadb-install-db --help

$ usr/scripts/mariadb-install-db --datadir=/srv/1/usr/data

$ vi usr/my.cnf

[client-server] socket=/tmp/mysql.sock1 [server] skip-networking datadir=/srv/1/usr/data

I Esc
Schift+. W Q

$ which mariadbd

$ mariadbd --help

$ MARIADB_HOME=/srv/1/usr mariadbd&

Verifizieren

benutzer

$ which mariadb

$ MARIADB_HOME=/srv/1/usr mariadb

MariaDB [(none)]

> help;

> status;

> help RENAME USER;

MariaDB [(none)]

> SHOW DATABASES;

> use test;

MariaDB [test]

> SHOW TABLES;

> help SHOW COLUMNS;

> SHUTDOWN;

> quit;

PHP

https://www.php.net

Installieren, Konfigurieren, Verifizieren

Installieren

benutzer /srv/1

$ wget http://paketspiegel.de/php-8.5.4.tar.gz

$ gunzip -k php-8.5.4.tar.gz

$ tar -x -f php-8.5.4.tar

benutzer

$ mkdir php

$ cd php

$ ../php-8.5.4/configure --help

$ ../php-8.5.4/configure --prefix=/srv/1/usr --with-pdo-mysql --with-openssl

$ ../php-8.5.4/configure --prefix=/srv/1/usr --with-apxs2=/srv/1/usr/bin/apxs --with-pdo-mysql --with-openssl

$ make -j 3

$ make install

$ cd ..

Konfigurieren

benutzer

$ which php

$ php --help

$ php --modules

$ php --ini

$ cp php-8.5.4/php.ini-development usr/lib/php.ini

$ cp php-8.5.4/php.ini-production usr/lib
cp php-8.5.4/php.ini-development usr/lib

benutzer

$ vi usr/conf/httpd.conf

+ LoadModule cgid_module modules/mod_cgid.so ‥ + LoadModule actions_module modules/mod_actions.so ‥ DocumentRoot "/srv/1/usr/htdocs" <Directory "/srv/1/usr/htdocs"> ‥ + + AddHandler PHP-Skript .php + Action PHP-Skript /cgi-bin/php </Directory>

Schift+7 mod_cgid Enter
Y Y P X

et cetera

Vi Reference Card

$ vi usr/conf/httpd.conf

LoadModule php_module modules/libphp.so + + <FilesMatch \.php$> + SetHandler application/x-httpd-php + </FilesMatch>

$ cp usr/bin/php-cgi usr/cgi-bin/php

$ apachectl configtest

$ su

root

# usr/bin/apachectl stop

# usr/bin/apachectl start

# exit

Verifizieren

benutzer

$ vi usr/htdocs/info.php

<?php phpinfo (); ?>

I Esc
Schift+. W Q

$ echo $http_proxy

$ http_proxy= lynx http://localhost/info.php

Nachbereiten

benutzer

$ mkdir /srv/1/usr/htdocs/com.example.www

$ ln -s /srv/1/usr/htdocs/com.example.www ~/com.example.www

benutzer

$ vi usr/conf/httpd.conf

+ Include conf/extra/httpd-vhosts.conf

Schift+7 vhosts Enter
Y Y P X
Schift+. W Q

$ vi usr/conf/extra/httpd-vhosts.conf

+ <VirtualHost *:80> + + ServerAdmin webmaster@example.com + + ServerName www.example.com + + DocumentRoot /srv/1/usr/htdocs/com.example.www + + </VirtualHost>

Schift+7 VirtualHost \* Enter
D Schift+G
O Enter
Esc
Schift+. W Q

$ apachectl configtest

$ httpd -t -D DUMP_VHOSTS

$ su root -c "usr/bin/apachectl restart"

benutzer

$ cd ~

$ vi com.example.www/index.html

<!DOCTYPE html> <!-- Kopierecht 2026 Gesellschaft mbh --> <html lang=de> <head> <meta name=viewport content="width=device-width"> <meta charset=utf-8> <title> Gesellschaft mbH </title> <meta name=keywords content="Eins, Zwei, Drei"> <meta name=description content="Gesellschaft mbH für …"> <style> html { color-scheme: dark; } header { font-size: 24px; } @media screen and (min-width: 426px) { html { color-scheme: light; } } </style> <script> window. onload = function () { console. log ("Hallo"); }; </script> </head> <body> <header> Gesellschaft mbH </header> <p> Herzlich Willkommen! </p> </body>

benutzer

$ http_proxy= lynx http://localhost

root@desktop

# vi /etc/hosts

+ 192.168.3.13 www.example.com

# exit

benutzer@desktop

$ firefox http://www.example.com

Kontakt

Daniel Schildt

LAMP-Tutorial.de

mail@daniel-schildt.de

Kastanienweg 4 a
41540 Dormagen
Deutschland