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) 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 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/ 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(); ?> Nu zou je iets moeten zien als: 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! |
|