de FAMP Stack (Apache / MySQL / PHP) installeren op FreeBSD 12

De FAMP stack, die verwant is aan een LAMP stack op Linux, is een verzameling open-source software die gewoonlijk samen geïnstalleerd wordt om een FreeBSD server in staat te stellen dynamische websites en webapplicaties te hosten. FAMP is een acroniem dat staat voor FreeBSD(besturingssysteem), Apache(HTTP server), MySQL/MariaDB(databaseserver), en PHP(programmeertaal om dynamische PHP inhoud te verwerken).

In deze handleiding zetten we componenten van een FAMP stack op een FreeBSD 12.1 server met behulp van pkg, de FreeBSD pakketbeheerder.

Vereisten

Voor je aan deze gids begint, heb je het volgende nodig:

  • Een FreeBSD 12.1.
  • Een gebruiker met root privileges of sudo gebruiker om configuratiewijzigingen te maken.
  • Basiskennis van het FreeBSD systeem en de commandoregel interface wordt aanbevolen.

Voordat je begint

Controleer de versie van FreeBSD:

freebsd-version
# 12.1-RELEASE

Verzeker je ervan dat je FreeBSD systeem up-to-date is:

freebsd-update fetch install
pkg update && pkg upgrade -y

Installeer de benodigde pakketten:

pkg install -y sudo vim bash curl

Maak een nieuwe gebruikersaccount aan met je gewenste gebruikersnaam. We gebruiken johndoe:

adduser

# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!

Voer het visudo commando uit en maak het commentaar op de regel %wheel ALL=(ALL) ALL ongedaan, om leden van de groep wheel toe te staan elk commando uit te voeren:

visudo

# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL

Schakel nu over naar je nieuw aangemaakte gebruiker met su:

su - johndoe

OPMERKING: Vervang johndoe door je gebruikersnaam.

Stel de tijdzone in:

sudo tzsetup

Stap 1 – Apache 2.4 installeren

De Apache webserver is momenteel een van de populairste webservers ter wereld. Het is een uitstekende keuze voor het hosten van een website.

Je kunt Apache installeren met FreeBSD’s pakketbeheerder, pkg. Met een pakketbeheerder kun je de meeste software moeiteloos installeren vanuit een repository die door FreeBSD wordt onderhouden.

Om Apache te installeren, geef je het volgende commando:

sudo pkg install -y apache24

Controleer de versie:

httpd -v
# Server version: Apache/2.4.41 (FreeBSD)

Schakel nu Apache in en start het:

sudo sysrc apache24_enable=yes
sudo service apache24 start

Om te controleren of Apache gestart is kun je het volgende commando uitvoeren:

sudo service apache24 status

Als resultaat zie je iets dat lijkt op:

# Output
apache24 is running as pid 17775.

Je kunt controleren of Apache geïnstalleerd is en zonder fouten werkt door in je webbrowser het publieke IP adres van je server te bezoeken. Navigeer naar http://your_server_IP. Je ziet nu de standaard“Het werkt!” Apache pagina.

Stap 2 – MySQL 8.0 installeren

Nu je je webserver aan de praat hebt, is het tijd om MySQL te installeren, het relationele databasemanagement systeem. De MySQL server organiseert en geeft toegang tot databases waarin je server informatie kan opslaan.

Ook hier kun je pkg gebruiken om je software te verkrijgen en te installeren.

Om MySQL 8.0 te installeren met pkg, gebruik je dit commando:

sudo pkg install -y mysql80-client mysql80-server

Dit commando installeert de nieuwste versie van de MySQL client en server, die momenteel 8.x.x is.

Controleer de versie:

mysql --version
# mysql  Ver 8.0.17 for FreeBSD12.0 on amd64 (Source distribution)

Schakel nu MySQL in en start het:

sudo sysrc mysql_enable=yes
sudo service mysql-server start

Om te controleren of MySQL gestart is kun je het volgende commando uitvoeren:

sudo service mysql-server status

Je krijgt iets te zien dat lijkt op het volgende:

# Output
mysql is running as pid 19171.

Als goed gebruik kun je het mysql_secure_installation beveiligingsscript uitvoeren dat enkele onveilige standaardinstellingen verwijdert en de toegang tot je databasesysteem enigszins beperkt:

sudo mysql_secure_installation

Je wordt gevraagd een wachtwoord in te stellen, gevolgd door enkele andere vragen. Voer een sterk wachtwoord in en druk dan voor de rest van de vragen op :key_enter: om de standaardwaarden te kiezen.

Stap 3 – PHP 7.4 installeren

PHP is een server-side scripting taal die ontworpen is voor webontwikkeling. PHP is een onmisbaar onderdeel van de FAMP stack. Ook worden gewoonlijk Python of Perl gebruikt in plaats van PHP. Toch wordt PHP als de meest populaire optie het meest gebruikt. Samen met de database geeft het je web sites of apps dynamisch gedrag.

Maak weer gebruik van het pkg systeem om PHP componenten te installeren.

Om PHP 7.4 met pkg te installeren, voer je dit commando uit:

sudo pkg install -y php74 php74-mysqli mod_php74

Dit installeert de pakketten php74, mod_php74, en php74-mysqli.

Controleer de PHP versie:

php --version

# PHP 7.4.1 (cli) (built: Jan  2 2020 01:32:38) ( NTS )
# Copyright (c) The PHP Group
# Zend Engine v3.4.0, Copyright (c) Zend Technologies

Kopieer het voorbeeld PHP configuratiebestand op zijn plaats met dit commando:

sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Schakel nu PHP-FPM in en start het:

sudo sysrc php_fpm_enable=yes
sudo service php-fpm start

Om te controleren of PHP-FPM gestart is kun je het volgende commando uitvoeren:

sudo service php-fpm status

Als resultaat zie je iets dat lijkt op:

# Output
php_fpm is running as pid 23005.

Installeren van PHP Modules (Optioneel)

Om de functionaliteit van PHP te vergroten, kun je optioneel enkele extra modules installeren.

Om de momenteel gecompileerde PHP modules te zien, kun je dit uitvoeren:

php -m
# [PHP Modules]
# Core
# date
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard
# [Zend Modules]

Om naar beschikbare PHP modules te zoeken, kun je dit commando gebruiken:

pkg search ^php74-*

De resultaten zullen meestal PHP 7.4 modules zijn die je kunt installeren:

# Output
# php74-7.4.0                    PHP Scripting Language
# php74-Ice37-3.7.2_1            Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
# php74-aphpbreakdown-2.2.2      Code-Analyzer for PHP for Compatibility Check-UP
# php74-aphpunit-1.9             Testing framework for unit tests
# php74-bcmath-7.4.0             The bcmath shared extension for php
# php74-brotli-0.7.0             Brotli extension for PHP
# php74-bsdconv-11.5.0           PHP wrapper for bsdconv
# php74-bz2-7.4.0                The bz2 shared extension for php
# php74-calendar-7.4.0           The calendar shared extension for php
# php74-composer-1.8.6           Dependency Manager for PHP
# php74-ctype-7.4.0              The ctype shared extension for php
# php74-curl-7.4.0               The curl shared extension for php
# . . .

Als je na onderzoek besluit dat je een pakket moet installeren, kun je dat doen met het pkg install commando. De meeste PHP webapplicaties zullen aanvullende modules nodig hebben, dus het is goed om te weten hoe je ze kunt zoeken.

Stap 4 - Apache configureren om PHP module te gebruiken

Voordat je PHP gebruikt, moet je het configureren om met Apache te werken.

Start sudo vim /usr/local/etc/apache24/modules.d/001_mod-php.conf en vul het bestand met de onderstaande inhoud:

<IfModule dir_module>
  DirectoryIndex index.php index.html
  <FilesMatch "\.php$">
    SetHandler application/x-httpd-php
  </FilesMatch>
  <FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
  </FilesMatch>
</IfModule>

Sla het bestand op en verlaat vim.

Controleer de configuratie van Apache:

sudo apachectl configtest

Omdat je configuratiewijzigingen in Apache hebt aangebracht, moet je de dienst opnieuw laden om ze te laten toepassen. Anders werkt Apache nog met de eerdere configuratie:

sudo apachectl restart

Stap 5 - PHP verwerking testen

Om te testen of je systeem correct voor PHP geconfigureerd is, kun je een heel eenvoudig PHP script maken. Je noemt dit script info.php. Standaard staat het DocumentRoot op /usr/local/www/apache24/data. Onder die plaats kun je het bestand info.php maken door te typen:

sudo vim /usr/local/www/apache24/data/info.php

En voeg deze code aan dat bestand toe:

<?php phpinfo(); ?>

Navigeer naar http://your_server_IP/info.php en je ziet de volgende pagina:

PHP info op FreeBSD 12

Na de installatie en instelling van de FAMP stack moet je het info.php bestand verwijderen om te voorkomen dat de informatie over de server aan het publiek onthuld wordt:

sudo rm /usr/local/www/apache24/data/info.php

Conclusie

Gefeliciteerd, je hebt met succes een FAMP stack op je FreeBSD 12.1 server geïnstalleerd. Nu heb je meerdere keuzes voor wat je nu gaat doen. Je hebt een platform geïnstalleerd waarmee je de meeste soorten websites en web software erop kunt installeren.