Molte applicazioni WEB distribuite con licenza libera (GNU GPL, BSD e simil) necessitano come prerequisito di trovare un AMP installato e funzionante sulla macchina, dove per AMP di intende Apache, MySQL (o MariaDB) e PHP. In questo paper, vedremo come soddisfare tale prerequisito su OpenBSD 7.6.
Nel mio caso necessitavo di avere un AMP sul mio server per poter installare wordpress.
Apache HTTPd
Apache HTTPd è un il webserver per eccellenza, e dal mio punto di vista il migliore in assoluto, per la sua incredibile stabilità, configurabilità ed estendibilità. Distribuito da Apache Software Foundation sotto licenza omonima, simil licenza BSD/MIT.
alfree2$ doas pkg_add -i apache-httpd
quirks-7.50:updatedb-0p0: ok
quirks-7.50 signed on 2024-12-29T14:34:30Z
quirks-7.50: ok
apache-httpd-2.4.62:nghttp3-1.5.0: ok
apache-httpd-2.4.62:ngtcp2-1.7.0: ok
apache-httpd-2.4.62:nghttp2-1.63.0: ok
apache-httpd-2.4.62:curl-8.11.1: ok
apache-httpd-2.4.62:libiconv-1.17: ok
apache-httpd-2.4.62:xz-5.6.2: ok
apache-httpd-2.4.62:libxml-2.13.3p0: ok
apache-httpd-2.4.62:brotli-1.0.9p0: ok
apache-httpd-2.4.62:apr-1.7.5: ok
apache-httpd-2.4.62:db-4.6.21p7v0: ok
apache-httpd-2.4.62:apr-util-1.6.3: ok
apache-httpd-2.4.62:jansson-2.14: ok
apache-httpd-2.4.62:bzip2-1.0.8p0: ok
apache-httpd-2.4.62:pcre2-10.37p2: ok
apache-httpd-2.4.62: ok
Running tags: ok
The following new rcscripts were installed: /etc/rc.d/apache2
See rcctl(8) for details.
Per abilitare Apache HTTPd come servizio è necessario eseguire il comando
alfree2$ doas rcctl enable apache2
alfree2$
Dododiche per avviarlo o fermre il servizio sarà necessario eseguire il bedesimo comando con la direttiva start, stop, restart o check
alfree2$ doas rcctl check apache2
apache2(ok)
alfree2$ doas rcctl restart apache2
apache2(ok)
apache2(ok)
alfree2$ doas rcctl check apache2
apache2(ok)
alfree2$
Per accertarci di avere Apache WebServer attivo, possiamo usare curl (http-client), per un test locale.
alfree2$ curl http://127.0.0.1
<html><body><h1>It works!</h1></body></html>
PHP
PHP è un linguaggio di scripting, molto utilizzato per scrivere applicazioni web server-side. Anch’esso è coperto da una licenza libera, simil BSD. Il suo sviluppo è coordinato dalla PHP Foundation e va avanti da moltissimi anni, non rimanendo mai indietro ad ogni nuovo protocollo o formato. Vi è una folta comunità di programmatori che utilizza PHP, quindi è facile ricevere aiuto in caso di problemi. E’ facile inoltre trovare librerie di terzi per ogni qualsiasi esigenza voi possiate avere. In passato ha sofferto di qualche problema di sicurezza, risolto però in tempi rapidissimi. Attenti quindi a recepire agglioramenti e patch pubblicate. Di seguito il comando per installarlo.
alfree2$ doas pkg_add php
quirks-7.50 signed on 2024-12-29T14:34:30Z
Ambiguous: choose package for php
0: <None>
1: php-8.1.31
2: php-8.2.27
3: php-8.3.15
Your choice: 3
php-8.3.15:femail-1.0p1: ok
php-8.3.15:femail-chroot-1.0p3: ok
php-8.3.15:argon2-20190702p0: ok
php-8.3.15:gettext-runtime-0.22.5: ok
php-8.3.15:libsodium-1.0.20: ok
php-8.3.15:oniguruma-6.9.9: ok
php-8.3.15:capstone-5.0: ok
php-8.3.15: ok
The following new rcscripts were installed: /etc/rc.d/php83_fpm
See rcctl(8) for details.
New and changed readme(s):
/usr/local/share/doc/pkg-readmes/femail-chroot
/usr/local/share/doc/pkg-readmes/php-8.3
PHP si integra perfettamente con Apache HTTPd tramite il modulo mod_php.
Siete dei Nerd e ne volete sapere di più dell’integrazione Apache HTTPd / PHP ? Ok.
….
MariaDB
MariaDB è un fork (non fork) del più conosciuto Database Server MySQL. Uno dei tanti fork avvenuti nel momento in cui la multinazionale Oracle acquisto SUN Microsystem nel 2009, che a sua volta aveva acquisito tutti i diritti su MySQL nel 2008 per un miliardo di dollari da MySQL AG che ne coordinava la progettazione e lo sviluppo. A quel punto alcuni sviluppatori indipendenti di MySQL forkarono l’ultima versione disponibile prima dell’acquisizione da parte di Oracle (5.1.38), ed uno di questi fork decretò la nascita di MariaDB. La licenza con cui viene distribuito MariaDB è la GNU GPL vesione 2. Progettazione e sviluppi son coordinati da MariaDB Foundation. Di seguito qualche annozione per poterlo installare su OpenBSD.
alfree2$ doas pkg_add mariadb-server
quirks-7.50 signed on 2024-12-29T14:34:30Z
mariadb-server-10.9.8p1v1:p5-Net-Daemon-0.49: ok
mariadb-server-10.9.8p1v1:p5-PlRPC-0.2020p0: ok
mariadb-server-10.9.8p1v1:p5-FreezeThaw-0.5001p0: ok
mariadb-server-10.9.8p1v1:p5-MLDBM-2.05p0: ok
mariadb-server-10.9.8p1v1:p5-Clone-0.46: ok
mariadb-server-10.9.8p1v1:p5-Math-Base-Convert-0.11p0: ok
mariadb-server-10.9.8p1v1:p5-Module-Runtime-0.016p0: ok
mariadb-server-10.9.8p1v1:p5-Params-Util-1.102: ok
mariadb-server-10.9.8p1v1:p5-SQL-Statement-1.414: ok
mariadb-server-10.9.8p1v1:p5-DBI-1.644: ok
mariadb-server-10.9.8p1v1:mariadb-client-10.9.8v1: ok
mariadb-server-10.9.8p1v1:p5-DBD-MariaDB-1.23: ok
mariadb-server-10.9.8p1v1:snappy-1.1.10p1: ok
mariadb-server-10.9.8p1v1:lzo2-2.10p2: ok
mariadb-server-10.9.8p1v1: ok
The following new rcscripts were installed: /etc/rc.d/mysqld
See rcctl(8) for details.
New and changed readme(s):
/usr/local/share/doc/pkg-readmes/mariadb-server
Come già fatto in precedenza per Apache HTTPd, è necessario abilitare anche MySQL come servizio.
alfree2$ doas rcctl enable mysqld
Prima di avviarlo però è necessario eseguire un comando che si occuperà di creare il suo primo database, di catalogo, necessario per poter il server MySQL/MariaDB funzionare correttamente
alfree2$ doas mysql_install_db
WARNING: The host 'alfree2.openbsd.amsterdam' could not be looked up with /usr/local/bin/resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MariaDB version. The MariaDB daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MariaDB privileges !
Installing MariaDB/MySQL system tables in '/var/mysql' ...
OK
Two all-privilege accounts were created.
One is root@localhost, it has no password, but you need to
be system 'root' user to connect. Use, for example, sudo mysql
The second is _mysql@localhost, it has no password either, but
you need to be the system '_mysql' user to connect.
After connecting you can set the password, if you would need to be
able to connect as any of these users with a password and without sudo
See the MariaDB Knowledgebase at https://mariadb.com/kb
You can start the MariaDB daemon with:
/etc/rc.d/mysqld start
Please report any problems at https://mariadb.org/jira
The latest information about MariaDB is available at https://mariadb.org/.
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
Dopodichè è possibile anche avviarlo, come abbiamo già visto. Al primo start (appena dopo l’installazione), ho ricevuto un messaggio che considererei di warning “/etcrc.d/mysqld: kill: 44311: No such process”, per poi avviare il server correttamente. Non ho ritenuto importante indagare troppo, visto che ho ricevuto il messaggio solo al primo avvio. In futuro magari approfondisco meglio.
alfree2$ doas rcctl start mysqld
mysqld/etc/rc.d/mysqld: kill: 44311: No such process
(ok)
alfree2$ doas rcctl stop mysqld
mysqld(ok)
alfree2$ doas rcctl start mysqld
mysqld(ok)
alfree2$ rcctl check mysqld
mysqld(ok)