Home   Howto's   Contact  

Installatie van Apache, MySQL, php en phpmyadmin in Arch Linux

1. Installatie van de Apache webserver.

sudo pacman -S apache

Nadat de Apache server geïnstalleerd is, gaan we de apache server opstarten en de status ervan bekijken.

sudo systemctl enable --now httpd en sudo systemctl status httpd
● httpd.service - Apache Web Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2022-04-15 12:45:23 CEST; 2h 41min ago
   Main PID: 6704 (httpd)
      Tasks: 11 (limit: 38430)
     Memory: 46.8M
        CPU: 4.328s
     CGroup: /system.slice/httpd.service
             ├─6704 /usr/bin/httpd -k start -DFOREGROUND
             ├─6709 /usr/bin/httpd -k start -DFOREGROUND
             ├─6710 /usr/bin/httpd -k start -DFOREGROUND
             ├─6720 /usr/bin/httpd -k start -DFOREGROUND
             ├─6721 /usr/bin/httpd -k start -DFOREGROUND
             ├─6758 /usr/bin/httpd -k start -DFOREGROUND
             ├─6760 /usr/bin/httpd -k start -DFOREGROUND
             ├─6799 /usr/bin/httpd -k start -DFOREGROUND
             ├─6859 /usr/bin/httpd -k start -DFOREGROUND
             ├─6892 /usr/bin/httpd -k start -DFOREGROUND
             └─7112 /usr/bin/httpd -k start -DFOREGROUND

apr 15 12:45:23 Archie systemd[1]: Started Apache Web Server.

2. Installatie van php, php module, mysql-server(mariadb).

sudo pacman -S php php-apache mariadb

a. MySQL server configuratie

Vooraleer we nu onze database kunnen gebruiken, moeten we eerst de database structuur installeren, daar pacman, in tegenstelling tot apt, dat niet auto doet voor ons.

sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Met de structuur op zijn plaats kunnen we nu onze mysql server starten.

sudo systemctl enable --now mysql

Vervolgens gaan we het root paswoord aanpassen voor de mysql server. Het root paswoord voor de mysql server heeft niets te maken met het wachtwoord van ons linux systeem. Root heeft enkel alle rechten op de mysql-server, niet er buiten.

sudo mysql_secure_installation

Nu moet je het root wachtwoord aanmaken en neem voor de rest de default antwoorden.

Nadat we de root gebruiker hebben afgewerkt, gaan we nu een gebruiker aanmaken en een database voor die gebruiker waarop hij alle rechten heeft.

sudo -i
mysql
create database YOUR_DATABASE_NAME;
create user 'YOUR_USER_NAME'@'%' identified by 'YOUR_PASSWORD';
grant all privileges on YOUR_DATABASE_NAME.* to 'YOUR_USER_NAME'@'%' with grant option;
flush privileges;
quit

Tik nu exit en cd om terug te keren naar de gewone gebruiker in je home directory. In je home directory maak je nu een file aan .my.cnf met de volgende info:

nano .my.cnf

[client]
user=YOUR_USER_NAME
password=YOUR_PASSWORD

Sla de file op en vervolgens doe je:

chmod 0600 .my.cnf

Als alles goed gaat, kan je nu gewoon het commando mysql ingeven en zou je auto de mysql shell moeten zien, waarna je kan afsluiten met het quit; commando.

[serge@Archie ~]$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 211
Server version: 10.7.3-MariaDB Arch Linux

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> quit;
Bye

b. Configuratie van de apache server.

We openen het configuraties bestand /etc/httpd/conf/httpd.conf en helemaal onderaan voegen we toe:

sudo nano /etc/httpd/conf/httpd.conf

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Sla de file op.

Vervolgens gaan we configuratie folders aanmaken.

sudo mkdir -p /etc/httpd/conf/sites-available
sudo mkdir -p /etc/httpd/conf/sites-enabled
sudo mkdir -p /etc/httpd/conf/mods-enabled

Vervolgens maken we een file aan met de naam a2ensite (nano a2ensite) met de volgende inhoud:

#!/bin/sh
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled ; then
echo "-------------------------------"
else
mkdir -p /etc/httpd/conf/sites-available
mkdir -p /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
echo "Use script: n2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Vervolgens maken we nog een file aan: nano a2dissite met volgende inhoud:

#!/bin/sh
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

We maken nu beide files uitvoerbaar en verplaatsen die naar /usr/local/bin

chmod +x a2ensite a2dissite
sudo mv a2ensite /usr/local/bin/
sudo mv a2dissite /usr/local/bin/

Nu maken we de httpd conf files aan.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin you@example.com
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Met ons gemaakt script gaan we nu de conf file activeren en de webserver herstarten.

sudo a2ensite localhost
sudo systemctl restart httpd

Nu maken we ook nog een https conf aan met volgende inhoud:

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

Om gebruik te kunnen maken van https, moet het pakket openssl geïnstalleerd zijn.

sudo pacman -S openssl

We maken nu een script aan dat voor het bouwen van de certificaten dient.

nano apache_gen_ssl


#!/bin/sh
mkdir -p /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "\n\nThis will generate the default name for Apache  SSL certificate!\n"
echo -e "Enter your virtual host FQDN:"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!" ls -all /etc/httpd/conf/ssl exit 0

We maken het script uitvoerbaar en verplaatsen het naar /usr/local/bin.

sudo chmod +x apache_gen_ssl
sudo mv apache_gen_ssl  /usr/local/bin/

We voeren het script nu uit.

sudo apache_gen_ssl

We voegen nu onze ssl site toe en herstarten onze webserver.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Nu kan je surfen naar http://localhost of https://localhost of naar het ip adres: http://UW_IP_ADRES of https://UW_IP_ADRES. Mocht je nu fouten krijgen dat hij iets niet vindt, geen paniek. Ga naar de folder /etc/httpd/conf/ssl/ en kopieer de bestaande files naar de naam die hij niet vond. Ik kreeg bijvoorbeeld de fout dat hij de localhost.* niet vond. Ik had in die folder enkel de Archie files staan. Dus heb ik die files gekopieerd. sudo cp Archie.crt localhost.crt

Vervolgens heb ik de files die het script aangemaakt heeft, gekopieerd naar *.orig. Dan weet ik dat dit de originele files zijn aangemaakt door ons script.

-rw-r--r-- 1 root root 1334 15 apr 11:56 Archie.crt
-rw-r--r-- 1 root root 1334 16 apr 15:24 Archie.crt.orig
-rw-r--r-- 1 root root 1135 15 apr 11:56 Archie.csr
-rw-r--r-- 1 root root 1135 16 apr 15:24 Archie.csr.orig
-rw------- 1 root root 1704 15 apr 11:55 Archie.key
-rw------- 1 root root 1704 16 apr 15:25 Archie.key.orig
-rw-r--r-- 1 root root 1334 15 apr 12:17 localhost.crt
-rw-r--r-- 1 root root 1135 15 apr 12:18 localhost.csr
-rw------- 1 root root 1704 15 apr 12:18 localhost.key

c. PHP configureren.

sudo sed -i 's/LoadModule mpm_event_module/#LoadModule mpm_event_module/g' /etc/httpd/conf/httpd.conf

En als laatste openen we de file /etc/httpd/conf/mods-enabled/php.conf en voegen onderaan toe:

sudo nano /etc/httpd/conf/mods-enabled/php.conf

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php_module modules/libphp.so

Include conf/extra/php_module.conf

De webserver herstarten.

sudo systemctl restart httpd

De server eens uittesten.

sudo nano /srv/http/info.php

<?php
phpinfo();
?>

https://localhost/info.php

Nu zou je iets moeten zien als:

phpinfo

d. Installatie van phpMyAdmin (optioneel, maar handig)

sudo pacman -S phpmyadmin

phpMyAdmin configureren.

Voer de onderstaande commands 1 voor 1 in.

sudo sed -i 's/;open_basedir/open_basedir = \/etc\/webapps:\/usr\/share\/webapps:\/srv\/http:\/home:\/tmp:\/usr\/share\/webapps\/phpMyAdmin\/tmp/g' /etc/php/php.ini
sudo sed -i 's/;extension=curl/extension=curl/g' /etc/php/php.ini
sudo sed -i 's/;extension=mysqli/extension=mysqli/g' /etc/php/php.ini
sudo sed -i 's/;extension=sqlite3/extension=sqlite3/g' /etc/php/php.ini
sudo sed -i 's/;extension=zip/extension=zip/g' /etc/php/php.ini
sudo mkdir /usr/share/webapps/phpMyAdmin/tmp
sudo chmod -R 777 /usr/share/webapps/phpMyAdmin/tmp

De laatste file die we nog moeten aanpassen. Open /etc/webapps/phpmyadmin/config.inc.php. Eenmaal open, zoek naar de regel:

$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Vul daar nu als secret een dertigtal willekeurige tekens in. Iets in de aard van gg8lkwY1!k86&HVT&Ye$bm#LQwxW&pGPK. Sla de file op en we zijn helemaal klaar.

$cfg['blowfish_secret'] = 'gg8lkwY1!k86&HVT&Ye$bm#LQwxW&pGPK'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Surf nu naar https://localhost/phpmyadmin en dan heb je een grafisch hulpmiddel om je database te beheren.

Cheers!





Account

Inloggen
of account aanmaken