Zum Hauptinhalt springen

Wie installiert man Apache, MySQL, PHP und PHPMyAdmin auf FreeBSD?

Veröffentlicht am:
.
24 Minuten Lesezeit
.
Für die Englische Version

FreeBSD (Betriebssystem), Apache (Webserver), MySQL (Datenbankserver) und PHP (zur Verarbeitung dynamischer PHP-Inhalte) bilden das Akronym FAMP. Ein FAMP-Stack, vergleichbar mit einem LAMP-Stack auf Linux, ist eine Sammlung von Open-Source-Software, die, wenn sie gemeinsam installiert wird, es einem FreeBSD-Server ermöglicht, dynamische Webseiten und Webanwendungen zu hosten.

In diesem Tutorial werden wir Ihnen zeigen, wie Sie einen FAMP-Stack auf einem FreeBSD 13.1-Server mit pkg, dem FreeBSD-Paketmanager, installieren. Wir werden auch die Installation von phpMyAdmin auf dem FreeBSD-Server behandeln.

Installation des FAMP-Stacks auf FreeBSD?

Sie können den FAMP-Stack ganz einfach auf Ihrem FreeBSD-Server installieren, indem Sie die folgenden 6 Hauptschritte befolgen:

  1. Installieren Sie den Apache-Webserver

  2. Installieren Sie den MySQL-Datenbankserver

  3. PHP installieren

  4. PHP-Module installieren (optional)

  5. Konfigurieren Sie Apache

  6. Überprüfen Sie PHP

Was sind die Voraussetzungen?

Bevor Sie mit diesem Tutorial beginnen, müssen Sie Folgendes haben:

  • FreeBSD 13.1-Server

  • Zugriff auf einen Benutzer mit Root-Rechten (oder die Fähigkeit, sudo zu verwenden), um Konfigurationsänderungen vorzunehmen

  • Stellen Sie sicher, dass die Ports 80 und 443 als Teil Ihrer Konfiguration zugänglich sind.

Außerdem ist es ratsam, sicherzustellen, dass unser System auf dem neuesten Stand ist, indem Sie den nächsten Befehl ausführen:

pkg update && pkg upgrade -y

Dies wird Ihr System aktualisieren und Sie könnten eine Ausgabe sehen, die der folgenden ähnlich ist:

Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking for upgrades (46 candidates): 100%
Processing candidates (46 candidates): 100%
The following 18 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
ca_root_nss: 3.83 -> 3.86
curl: 7.85.0 -> 7.87.0
expat: 2.4.9 -> 2.5.0
.........
readline: 8.1.2 -> 8.2.0
ruby30-gems: 3.3.23 -> 3.3.26
Number of packages to be upgraded: 18


28 MiB to be downloaded.
[1/18] Fetching p5-IO-Socket-SSL-2.077.pkg: 100% 180 KiB 183.8kB/s 00:01
.........
[18/18] Fetching ca_root_nss-3.86.pkg: 100% 266 KiB 272.8kB/s 00:01
Checking integrity... done (0 conflicting)
[1/18] Upgrading p5-URI from 5.12 to 5.17...
[1/18] Extracting p5-URI-5.17: 100%
.........
[17/18] Upgrading git from 2.38.1_1 to 2.39.0...
===> Creating groups.
Using existing group 'git_daemon'.
===> Creating users
Using existing user 'git_daemon'.
[17/18] Extracting git-2.39.0: 100%
[18/18] Upgrading nano from 6.4 to 7.1...
[18/18] Extracting nano-7.1: 100%
Starten Sie noch heute kostenlos mit Zenarmor

1. Wie installiert man den Apache-Webserver?

Apache ist jetzt der am weitesten verbreitete Webserver der Welt, was ihn zu einer ausgezeichneten Option für das Hosting einer Website macht. Apache kann mit pkg, dem Paketmanager von FreeBSD, installiert werden. Um den Apache-Webserver auf Ihrem FreeBSD-Knoten zu installieren und zu starten, können Sie die folgenden Schritte ausführen:

  1. Um das Apache 2.4-Paket zu installieren, führen Sie den folgenden Befehl aus:

    pkg install apache24
    tipp

    Sie können den folgenden Befehl verwenden, um das aktuelle Apache-Paket im Repository zu finden:

    pkg search apache
  2. Geben Sie y ein, um die Installation von Apache und seinen Abhängigkeiten zu bestätigen.

    Updating FreeBSD repository catalogue...
    FreeBSD repository is up to date.
    All repositories are up to date.
    The following 5 package(s) will be affected (of 0 checked):
    New packages to be INSTALLED:
    apache24: 2.4.54
    apr: 1.7.0.1.6.1_2
    gdbm: 1.23
    jansson: 2.14
    libxml2: 2.10.3_1

    Number of packages to be installed: 5
    The process will require 38 MiB more space.
    7 MiB to be downloaded.

    Proceed with this action? [y/N]:
    [1/5] Fetching jansson-2.14.pkg: 100% 46 KiB 47.5kB/s 00:01
    [2/5] Fetching libxml2-2.10.3_1.pkg: 100% 1 MiB 1.2MB/s 00:01
    [3/5] Fetching apr-1.7.0.1.6.1_2.pkg: 100% 467 KiB 478.1kB/s 00:01
    [4/5] Fetching apache24-2.4.54.pkg: 100% 5 MiB 1.8MB/s 00:03
    [5/5] Fetching gdbm-1.23.pkg: 100% 209 KiB 213.8kB/s 00:01
    Checking integrity... done (0 conflicting)
    [1/5] Installing gdbm-1.23...
    [1/5] Extracting gdbm-1.23: 100%
    [2/5] Installing jansson-2.14...
    [2/5] Extracting jansson-2.14: 100%
    [3/5] Installing libxml2-2.10.3_1...
    [3/5] Extracting libxml2-2.10.3_1: 100%
    [4/5] Installing apr-1.7.0.1.6.1_2...
    [4/5] Extracting apr-1.7.0.1.6.1_2: 100%
    [5/5] Installing apache24-2.4.54...
    ===> Creating groups.
    Using existing group 'www'.
    ===> Creating users
    Using existing user 'www'.
    [5/5] Extracting apache24-2.4.54: 100%
    =====
    Message from apr-1.7.0.1.6.1_2:
    --
    The Apache Portable Runtime project removed support for FreeTDS with version 1.6. Users requiring MS-SQL connectivity must migrate
    configurations to use the added ODBC driver and FreeTDS' ODBC features.
    =====
    Message from apache24-2.4.54:
    --
    To run apache www server from startup, add apache24_enable="yes"
    in your /etc/rc.conf. Extra options can be found in startup script.
    Your hostname must be resolvable using at least 1 mechanism in
    /etc/nsswitch.conf typically DNS or /etc/hosts or apache might
    have issues starting depending on the modules you are using.

    - apache24 default build changed from static MPM to modular MPM
    - more modules are now enabled per default in the port
    - icons and error pages moved from WWWDIR to DATADIR

    If build with modular MPM and no MPM is activated in
    httpd.conf, then mpm_prefork will be activated as default
    MPM in etc/apache24/modules.d to keep compatibility with
    existing php/perl/python modules!

    Please compare the existing httpd.conf with httpd.conf.sample
    and merge missing modules/instructions into httpd.conf!
  3. Um Apache beim Booten als Dienst auszuführen, müssen Sie die Zeile apache24_enable="YES" zur Datei /etc/rc.conf hinzufügen, indem Sie den folgenden Befehl ausführen:

    sysrc apache24_enable="YES"
  4. Um zu überprüfen, ob der Apache-Server läuft, führen Sie den folgenden Befehl aus:

    service apache24 status

Sie sollten die Ausgabe ähnlich wie unten sehen:

apache24 is running as pid 4128.

Sie können den Webserver verbinden, indem Sie http://your_server_IP_address/ in Ihren Webbrowser eingeben. Sie sollten die Standard-Apache-Webseite für FreeBSD sehen. Es funktioniert! wird angezeigt, was darauf hinweist, dass Ihr Webserver erfolgreich bereitgestellt wurde.

2. Wie installiert man MySQL?

Jetzt, da Ihr Webserver betriebsbereit ist. Sie können MySQL installieren, das ein Open-Source- und kostenloses relationales Datenbankmanagementsystem ist, auf Ihrem FreeBSD-Server. Es verwaltet die tabellarische Datenspeicherung. Der MySQL-Server wird Datenbanken einrichten und den Zugriff auf diese Datenbanken anbieten, die Ihr Server zur Speicherung von Daten verwenden kann. Es ist die gängigste Methode, um Daten in einer Datenbank zu speichern.

  1. Um das MySQL 8.0-Paket zu installieren, führen Sie den folgenden Befehl aus:

    pkg install mysql80-server
    tipp

    Sie können den folgenden Befehl verwenden, um das aktuelle mysql-Paket im Repository zu finden:

    pkg search mysql
  2. Geben Sie y ein, um die Installation von MySQL und seinen Abhängigkeiten zu bestätigen.

    Updating FreeBSD repository catalogue...
    FreeBSD repository is up to date.
    All repositories are up to date.
    The following 17 package(s) will be affected (of 0 checked):

    New packages to be INSTALLED:
    cyrus-sasl: 2.1.28
    groff: 1.22.4_4
    hidapi: 0.12.0
    icu: 72.1,1
    libcbor: 0.9.0
    libcjson: 1.7.15
    libevent: 2.1.12
    libfido2: 1.12.0
    liblz4: 1.9.4,1
    libpaper: 1.1.28
    mysql80-client: 8.0.31
    mysql80-server: 8.0.31
    openldap26-client: 2.6.3
    protobuf: 3.21.9,1
    psutils: 1.17_5
    uchardet: 0.0.8
    zstd: 1.5.2_1

    Number of packages to be installed: 17

    The process will require 412 MiB more space.
    42 MiB to be downloaded.

    Proceed with this action? [y/N]:
    [1/17] Fetching libcjson-1.7.15.pkg: 100% 35 KiB 35.7kB/s 00:01
    [2/17] Fetching liblz4-1.9.4,1.pkg: 100% 144 KiB 147.9kB/s 00:01
    [3/17] Fetching groff-1.22.4_4.pkg: 100% 3 MiB 2.9MB/s 00:01
    [4/17] Fetching hidapi-0.12.0.pkg: 100% 32 KiB 33.1kB/s 00:01
    [5/17] Fetching mysql80-server-8.0.31.pkg: 100% 18 MiB 2.8MB/s 00:07
    [6/17] Fetching zstd-1.5.2_1.pkg: 100% 589 KiB 603.5kB/s 00:01
    [7/17] Fetching mysql80-client-8.0.31.pkg: 100% 3 MiB 3.6MB/s 00:01
    [8/17] Fetching libcbor-0.9.0.pkg: 100% 30 KiB 30.4kB/s 00:01
    [9/17] Fetching uchardet-0.0.8.pkg: 100% 112 KiB 114.3kB/s 00:01
    [10/17] Fetching cyrus-sasl-2.1.28.pkg: 100% 967 KiB 989.9kB/s 00:01
    [11/17] Fetching icu-72.1,1.pkg: 100% 11 MiB 2.9MB/s 00:04
    [12/17] Fetching psutils-1.17_5.pkg: 100% 59 KiB 59.9kB/s 00:01
    [13/17] Fetching libpaper-1.1.28.pkg: 100% 24 KiB 24.4kB/s 00:01
    [14/17] Fetching openldap26-client-2.6.3.pkg: 100% 1 MiB 1.1MB/s 00:01
    [15/17] Fetching protobuf-3.21.9,1.pkg: 100% 3 MiB 1.6MB/s 00:02
    [16/17] Fetching libfido2-1.12.0.pkg: 100% 234 KiB 239.3kB/s 00:01
    [17/17] Fetching libevent-2.1.12.pkg: 100% 322 KiB 330.0kB/s 00:01

    Checking integrity... done (0 conflicting)
    [1/17] Installing libcjson-1.7.15...
    [1/17] Extracting libcjson-1.7.15: 100%
    [2/17] Installing libpaper-1.1.28...
    [2/17] Extracting libpaper-1.1.28: 100%
    [3/17] Installing liblz4-1.9.4,1...
    [3/17] Extracting liblz4-1.9.4,1: 100%
    [4/17] Installing libcbor-0.9.0...
    [4/17] Extracting libcbor-0.9.0: 100%
    [5/17] Installing uchardet-0.0.8...
    [5/17] Extracting uchardet-0.0.8: 100%
    [6/17] Installing cyrus-sasl-2.1.28...
    *** Added group `cyrus' (id 60)
    *** Added user `cyrus' (id 60)
    [6/17] Extracting cyrus-sasl-2.1.28: 100%
    [7/17] Installing psutils-1.17_5...
    [7/17] Extracting psutils-1.17_5: 100%
    [8/17] Installing groff-1.22.4_4...
    [8/17] Extracting groff-1.22.4_4: 100%
    [9/17] Installing hidapi-0.12.0...
    [9/17] Extracting hidapi-0.12.0: 100%
    [10/17] Installing zstd-1.5.2_1...
    [10/17] Extracting zstd-1.5.2_1: 100%
    [11/17] Installing icu-72.1,1...
    [11/17] Extracting icu-72.1,1: 100%
    [12/17] Installing openldap26-client-2.6.3...
    [12/17] Extracting openldap26-client-2.6.3: 100%
    [13/17] Installing protobuf-3.21.9,1...
    [13/17] Extracting protobuf-3.21.9,1: 100%
    [14/17] Installing libfido2-1.12.0...
    [14/17] Extracting libfido2-1.12.0: 100%
    [15/17] Installing libevent-2.1.12...
    [15/17] Extracting libevent-2.1.12: 100%
    [16/17] Installing mysql80-client-8.0.31...
    [16/17] Extracting mysql80-client-8.0.31: 100%
    [17/17] Installing mysql80-server-8.0.31...
    ===> Creating groups.
    Creating group 'mysql' with gid '88'.
    ===> Creating users
    Creating user 'mysql' with uid '88'.
    ===> Creating homedir(s)
    [17/17] Extracting mysql80-server-8.0.31: 100%
    =====
    Message from cyrus-sasl-2.1.28:
    --
    You can use sasldb2 for authentication, to add users use:
    saslpasswd2 -c username

    If you want to enable SMTP AUTH with the system Sendmail, read
    Sendmail.README
    NOTE: This port has been compiled with a default pwcheck_method of
    auxprop. If you want to authenticate your user by /etc/passwd,
    PAM or LDAP, install ports/security/cyrus-sasl2-saslauthd and
    set sasl_pwcheck_method to saslauthd after installing the
    Cyrus-IMAPd 2.X port. You should also check the
    `/usr/local/lib/sasl2/*.conf` files for the correct
    pwcheck_method.
    If you want to use GSSAPI mechanism, install
    ports/security/cyrus-sasl2-gssapi.
    If you want to use SRP mechanism, install
    ports/security/cyrus-sasl2-srp.
    If you want to use LDAP auxprop plugin, install
    ports/security/cyrus-sasl2-ldapdb.
    =====
    Message from groff-1.22.4_4:
    --
    In order to be able to use the html driver, you need to install the following packages:
    - ghostscript
    - netpbm
    =====
    Message from openldap26-client-2.6.3:
    --
    The OpenLDAP client package has been successfully installed.

    Edit /usr/local/etc/openldap/ldap.conf
    to change the system-wide client defaults.

    Try `man ldap.conf` and visit the OpenLDAP FAQ-O-Matic at
    http://www.OpenLDAP.org/faq/index.cgi?file=3
    for more information.
    =====
    Message from mysql80-client-8.0.31:
    -
    This is the mysql CLIENT without the server.
    for complete server and client, please install databases/mysql80-server
    =====
    Message from mysql80-server-8.0.31:
    --
    There is no initial password for first time use of MySQL.
    Keep in mind to reset it to a secure password.
    MySQL80 has a default /usr/local/etc/mysql/my.cnf,
    remember to replace it with your own
    or set `mysql_optfile="$YOUR_CNF_FILE` in rc.conf.
  3. Um MySQL beim Booten als Dienst auszuführen, müssen Sie die Zeile mysql_enable="YES" zur Datei /etc/rc.conf hinzufügen, indem Sie den folgenden Befehl ausführen:

    sysrc mysql_enable="YES"
  4. Um den MySQL-Dienst zu starten, führen Sie den folgenden Befehl aus:

    service  mysql-server start
  5. Um zu überprüfen, ob der MySQL-Server läuft, führen Sie den folgenden Befehl aus:

    service  mysql-server status

    You should see the output similar to the below:

    mysql is running as pid 6816.
  6. Jetzt, da Ihre MySQL-Datenbank läuft, müssen Sie ein einfaches Sicherheitsskript ausführen, um bestimmte potenziell schädliche Standardeinstellungen zu entfernen und den Zugriff auf Ihr Datenbanksystem moderat zu beschränken.

Sie können den folgenden Befehl ausführen, um die Sicherheit Ihrer Datenbank zu verbessern, indem Sie das interaktive MySQL-Sicherheitsskript starten:

mysql_secure_installation

Das Skript wird Sie auffordern, ein Passwort festzulegen. Da Sie gerade MySQL installiert haben, ist es wahrscheinlich, dass Sie noch kein Passwort haben; geben Sie daher Y ein und fahren Sie mit den Schritten fort. Sie können 2 drücken, um ein starkes Passwort festzulegen.

Bei jeder Eingabeaufforderung für die verbleibenden Fragen müssen Sie die y-Taste drücken, um die vorgeschlagenen sicheren Werte zu akzeptieren. Dies wird einige Beispielbenutzer und Datenbanken löschen, entfernte Root-Logins deaktivieren und diese neuen Regeln laden, damit MySQL Ihre Änderungen sofort respektiert.

Ihr Datenbanksystem ist jetzt konfiguriert, und Sie können mit der Installation von PHP fortfahren.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.

New password:
Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.


Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Wie konfiguriere ich eine MySQL-Datenbank?

Sie können Ihre MySQL-Datenbankkonfiguration anpassen, indem Sie den unten angegebenen Beispielen folgen.

  • Um Ihre MySQL-Datenbank-CLI-Schnittstelle als root zu verbinden, können Sie den folgenden Befehl ausführen:

    mysql -u root -p

    After entering the MySQL root password you may run queries as you wish.

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 8
    Server version: 8.0.31 Source distribution

    Copyright (c) 2000, 2022, Oracle and/or its affiliates.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

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

    root@localhost [(none)]>
  • Ändern Sie den Benutzernamen des Root-Benutzers in etwas Zufälligeres und leeren Sie die derzeit geladenen Berechtigungen, damit die Änderung wirksam wird. Führen Sie den nächsten Befehl aus:

    UPDATE mysql.user set user = '[username]' where user = 'root';
    flush privileges;

Do not forget to exit the MySQL CLI (exit) and log in with the new username (reentering the password when requested) to check the change was successful:

mysql -u [username] -p
  • MySQL erstellt standardmäßig keine benutzerdefinierte Konfigurationsdatei (.cnf), enthält jedoch eine Standardkonfigurationsdatei, die nicht direkt geändert werden sollte. Um eine konfigurierbare MySQL-Konfigurationsdatei zu erstellen, übertragen Sie my-default.cnf nach /var/db/mysql/my.cnf, führen Sie den nächsten Befehl aus:

    sudo cp /usr/local/share/mysql/my-default.cnf /var/db/mysql/my.cnf
  • Sie können den folgenden MySQL-Befehl verwenden, um die derzeit geladenen MySQL-Variablen anzuzeigen (müssen im Terminal mit dem obigen Befehl in den Modus wechseln oder vielleicht ein MySQL-Tool wie Sequel Pro verwenden) (verwenden Sie SHOW VARIABLES LIKE '%variablenname%', um eine bestimmte geladene Variable anzuzeigen):

    SHOW VARIABLES
  • Verwenden Sie den folgenden Befehl, um die MySQL-Konfigurationsdatei zu aktualisieren, und löschen Sie dann die Warnung am Anfang der Datei, die vor Änderungen an dieser Datei warnt:

    sudo ee /var/db/mysql/my.cnf
  • Kommentieren Sie die innodb_buffer_pool_size aus und aktualisieren Sie sie auf die gewünschte Größe (beachten Sie den MySQL-Kommentar, der empfiehlt, sie auf 70% des gesamten Server-RAMs zu setzen, wenn die Maschine als dedizierter Server genutzt wird). d.h. 512mb / 100 * 70 = ~358mb)

    innodb_buffer_pool_size = 358M
  • Fügen Sie die max connections-Direktive mit einem erforderlichen Wert hinzu, um die maximale Anzahl gleichzeitiger MySQL-Anfragen festzulegen (beachten Sie, dass max_connections = max_connections + 1 für administrative Zwecke ist). Beachten Sie, dass es keine einfache Methode zur Berechnung gibt; MySQL gibt an, dass es "von der Qualität der Thread-Bibliothek auf einer bestimmten Plattform, der verfügbaren Menge an RAM, der von jeder Verbindung verbrauchten Menge an RAM, der Arbeitslast jeder Verbindung und der erforderlichen Antwortzeit abhängt":

    max_connections = 501
  • Fügen Sie die Direktive query_cache_size hinzu und setzen Sie sie auf 0, um die Einschränkung der Abfrage-Cache-Größe zu deaktivieren, oder auf eine sehr kleine Zahl (Vorsicht: Wenn Sie diesen Wert zu hoch setzen, könnte das System langsamer werden). Vergleichende Analysen und Untersuchungen sind erforderlich):

    query cache size = 0

3. Wie installiert man PHP?

PHP ist die Komponente Ihres Systems, die Code für dynamische Inhalte verarbeitet und anzeigt. Ohne PHP werden die dynamischen Websites, die Sie auf Ihrem Server bereitstellen möchten, nicht richtig funktionieren. Es ist in der Lage, Skripte auszuführen, sich mit MySQL-Datenbanken zu verbinden, um Daten abzurufen, und die Ausgabe an den Webserver zur Anzeige weiterzuleiten.

Sie können Ihre Komponenten erneut über das pkg-System installieren. Zusätzlich werden Sie mod_php, php-mysql und php-mysqli einfügen.

  1. Um PHP 8.2 mit pkg zu installieren, verwenden Sie den folgenden Befehl:

    pkg install php82 php82-mysqli mod_php82
    tipp

    Sie können den folgenden Befehl verwenden, um das aktuelle PHP-Paket im Repository zu finden:

    pkg search php
  2. Geben Sie y ein, um die Installation von PHP und seinen Abhängigkeiten zu bestätigen.Dies installiert die Pakete php82, php82-mysqli und mod_php82.

    Updating FreeBSD repository catalogue...
    FreeBSD repository is up to date.
    All repositories are up to date.
    The following 4 package(s) will be affected (of 0 checked):

    New packages to be INSTALLED:
    libargon2: 20190702
    mod_php82: 8.2.0
    php82: 8.2.0
    php82-mysqli: 8.2.0

    Number of packages to be installed: 4
    The process will require 35 MiB more space.
    6 MiB to be downloaded.
    Proceed with this action? [y/N]: y
    [1/4] Fetching php82-mysqli-8.2.0.pkg: 100% 49 KiB 50.2kB/s 00:01
    [2/4] Fetching php82-8.2.0.pkg: 100% 5 MiB 2.4MB/s 00:02
    [3/4] Fetching mod_php82-8.2.0.pkg: 100% 2 MiB 1.8MB/s 00:01
    [4/4] Fetching libargon2-20190702.pkg: 100% 63 KiB 64.3kB/s 00:01
    Checking integrity... done (0 conflicting)
    [1/4] Installing libargon2-20190702...
    [1/4] Extracting libargon2-20190702: 100%
    [2/4] Installing php82-8.2.0...
    [2/4] Extracting php82-8.2.0: 100%
    [3/4] Installing php82-mysqli-8.2.0...
    [3/4] Extracting php82-mysqli-8.2.0: 100%
    [4/4] Installing mod_php82-8.2.0...
    [4/4] Extracting mod_php82-8.2.0: 100%
    [activating module `php' in /usr/local/etc/apache24/httpd.conf]
    =====
    Message from php82-mysqli-8.2.0:
    --
    This file has been added to automatically load the installed extension:
    /usr/local/etc/php/ext-20-mysqli.ini
    =====
    Message from mod_php82-8.2.0:
    --
    ******************************************************************************
    Make sure index.php is part of your DirectoryIndex.

    You should add the following to your Apache configuration file:
    <FilesMatch "\.php$">
    SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
    </FilesMatch>
    ******************************************************************************

    If you are building PHP-based ports in poudriere(8) or Synth with ZTS enabled,
    add WITH_MPM=event to /etc/make.conf to prevent build failures.

    ******************************************************************************
  3. Kopieren Sie die Beispiel-PHP-Konfigurationsdatei an den angegebenen Ort, indem Sie den folgenden Befehl ausführen:

    cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini
  4. Um die zwischengespeicherten Informationen über installierte ausführbare Dateien wiederherzustellen, führen Sie den folgenden Befehl aus:

    rehash
  5. Um php zu aktivieren und auszuführen, können Sie die folgenden Befehle ausführen:

    sysrc php_fpm_enable=yes
    service php-fpm start
  6. Um zu überprüfen, ob PHP läuft, führen Sie den nächsten Befehl aus:

    service php-fpm status

    You should see the output similar to the following one:

    php_fpm is running as pid 6357.

Sie müssen PHP so konfigurieren, dass es mit Apache funktioniert, bevor Sie es verwenden.

4. Wie installiert man PHP-Module?

Dieser Schritt ist optional und Sie können die Funktionalität von PHP verbessern, indem Sie einige PHP-Module auf Ihrem FreeBSD-System installieren. Sie können die nächsten Schritte befolgen, um PHP-Module zu installieren:

  1. Um die verfügbaren PHP-Module anzuzeigen, führen Sie den folgenden Befehl aus:

    pkg search php82

    You should see the output similar to the given below:

    ZendFramework-php82-2.4.13 Framework for developing PHP web applications
    adodb5-php82-5.22.4 Database library for PHP
    ampache-php82-5.0.0 Web-based Audio file manager
    arcanist-lib-php82-20220518_2 Libraries for the command line interface for Phabricator
    arcanist-php82-20220518_2 Command line interface for Phabricator
    aws-sdk-php82-3.232.3 PHP interface for Amazon Web Services (AWS)
    bacula-web-php82-8.6.3_2 Bacula-web provides a summarized output of Bacula jobs
    davical-php82-1.1.10 Simple CalDAV server using a postgres backend
    dokuwiki-php82-20220731a_1 Simple and easy to use wiki, no database required
    drush-php82-8.4.11 Drupal command line and scripting interface
    hiawatha-monitor-php82-1.6 Monitoring tool for the Hiawatha webserver
    icinga-ipl-i18n-php82-0.2.0 Icinga PHP library
    icinga-php-library-php82-0.10.0 Icinga PHP library
    icinga-php-thirdparty-php82-0.11.0 Icinga PHP thirdparty
    php82-8.2.0 PHP Scripting Language (8.2.X branch)
    php82-Ice37-3.7.6 Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
    php82-aphpbreakdown-2.2.2 Code-Analyzer for PHP for Compatibility check-UP
    php82-aphpunit-2.1 Testing framework for unit tests
    php82-bcmath-8.2.0 The bcmath shared extension for php
    php82-brotli-0.13.1 Brotli extension for PHP
    php82-bsdconv-11.6.0 PHP wrapper for bsdconv
    ...........
    phpMyAdmin-php82-4.9.10 Set of PHP-scripts to manage MySQL over the web
    phpMyAdmin5-php82-5.2.0 Set of PHP-scripts to manage MySQL over the web
    ...........
    suphp-php82-0.7.2_2 Securely execute PHP scripts under Apache
    tcexam-php82-15.0.1 Open Source system for electronic exams
    typo3-11-php82-11.5.21 Typo3 content management system
    unit-php82-1.29.0_1 PHP module for NGINX Unit
    vexim-php82-2.3_3 Web interface for managing virtual domains for exim
    websvn-php82-2.8.1 Online Subversion repository browser
    zenphoto-php82-1.5.9 Simpler web photo gallery
  2. Um mehr darüber zu erfahren, was jedes Modul leistet, können Sie die detaillierte Beschreibung des Pakets mit der -f-Option lesen. Zum Beispiel, um die Funktionalität von phpMyAdmin5-php82-5.2.0 herauszufinden, können Sie den folgenden Befehl ausführen:

    pkg search -f phpMyAdmin5-php82-5.2.0

    In addition to a vast number of additional material, you will discover the following:

    phpMyAdmin5-php82-5.2.0
    Name : phpMyAdmin5-php82
    Version : 5.2.0
    Origin : databases/phpmyadmin5
    Architecture : FreeBSD:13:*
    Prefix : /usr/local
    Repository : FreeBSD [pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly]
    Categories : www databases
    Licenses : GPLv2
    Maintainer : joneum@FreeBSD.org
    WWW : https://www.phpmyadmin.net/
    Comment : Set of PHP-scripts to manage MySQL over the web
    Options :
    ------------------------------------
    Description :
    Currently phpMyAdmin can:
    * browse and drop databases, tables, views, columns and indexes
    * display multiple results sets through stored procedures or queries
    * create, copy, drop, rename and alter databases, tables, columns
    and indexes
    * maintain server, databases and tables, with proposals on server
    configuration
    * execute, edit and bookmark any SQL-statement, even batch-queries
    * load text files into tables
    * create and read dumps of tables
    * export data to various formats: CSV, XML, PDF, ISO/IEC 26300 -
    OpenDocument Text and Spreadsheet, Microsoft Word 2000, and
    LATEX formats
    * import data and MySQL structures from OpenDocument spreadsheets,
    as well as XML, CSV, and SQL files
    * administer multiple servers
    * manage MySQL users and privileges
    * check referential integrity in MyISAM tables
    * using Query-by-example (QBE), create complex queries
    automatically connecting required tables
    * create PDF graphics of your database layout
    * search globally in a database or a subset of it
    * transform stored data into any format using a set of predefined
    functions, like displaying BLOB-data as image or download-link
    * track changes on databases, tables and views
    * support InnoDB tables and foreign keys
    * support mysqli, the improved MySQL extension
    * create, edit, call, export and drop stored procedures and
    functions
    * create, edit, export and drop events and triggers
    * communicate in 62 different languages
    WWW: https://www.phpmyadmin.net/
  3. Um eines der PHP-Module zu installieren, können Sie den Befehl pkg install <package name> verwenden, wobei <package name> der Name des Pakets ist, das Sie installieren möchten. Zum Beispiel, um phpMyAdmin5-php82-5.2.0 zu installieren, können Sie den folgenden Befehl ausführen und y drücken, um die Installation zu bestätigen:

    pkg install phpMyAdmin5-php82-5.2.0

    You should see the following output:

    Updating FreeBSD repository catalogue...
    FreeBSD repository is up to date.
    All repositories are up to date.
    The following 25 package(s) will be affected (of 0 checked):

    New packages to be INSTALLED:
    brotli: 1.0.9,1
    fontconfig: 2.14.0,1
    freetype2: 2.12.1_2
    ........
    [23/25] Fetching php82-iconv-8.2.0.pkg: 100% 19 KiB 19.0kB/s 00:01
    [24/25] Fetching tiff-4.4.0_1.pkg: 100% 864 KiB 885.1kB/s 00:01
    [25/25] Fetching php82-filter-8.2.0.pkg: 100% 22 KiB 22.7kB/s 00:01
    Checking integrity... done (0 conflicting)
    [1/25] Installing png-1.6.39...
    [1/25] Extracting png-1.6.39: 100%
    [2/25] Installing jpeg-turbo-2.1.4...
    [2/25] Extracting jpeg-turbo-2.1.4: 100%
    .....
    [23/25] Extracting php82-iconv-8.2.0: 100%
    [24/25] Installing php82-filter-8.2.0...
    [24/25] Extracting php82-filter-8.2.0: 100%
    [25/25] Installing phpMyAdmin5-php82-5.2.0...
    ..........
    =====

    Message from phpMyAdmin5-php82-5.2.0:
    --
    phpMyAdmin5-php82-5.2.0 has been installed into:

    /usr/local/www/phpMyAdmin
    Please edit config.inc.php to suit your needs.
    To make phpMyAdmin available through your web site, I suggest
    that you add something like the following to httpd.conf:
    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
    <Directory "/usr/local/www/phpMyAdmin/">
    Options None
    AllowOverride Limit
    Require local
    Require host .example.com
    </Directory>

    SECURITY NOTE: phpMyAdmin is an administrative tool that has had several remote vulnerabilities discovered in the past, some allowing remote attackers to execute arbitrary code with the web server's user credential.

    All known problems have been fixed, but the FreeBSD Security Team strongly advises that any instance be protected with an additional protection layer,

    e.g. a different access control mechanism implemented by the web server
    as shown in the example. Do consider enabling phpMyAdmin only when it is in use.

5. Wie konfiguriert man Apache, um das PHP-Modul zu verwenden?

Der Apache HTTP-Server enthält ein separates Konfigurationsverzeichnis für einzelne Module. Sie müssen eine dieser Konfigurationsdateien erstellen, um Apache HTTP mit PHP zu integrieren, indem Sie die folgenden Schritte befolgen:

  1. Bearbeiten Sie die Datei /usr/local/etc/apache24/modules.d/001_mod-php.conf mit Ihrem bevorzugten Editor wie vi:

  2. Fügen Sie die folgenden Zeilen in die Konfigurationsdatei ein und beenden Sie.

    <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>
  3. Bearbeiten Sie die /usr/local/etc/apache24/httpd.conf mit Ihrem bevorzugten Editor wie vi:

  4. Fügen Sie die folgenden Zeilen in die Konfigurationsdatei ein und beenden Sie.

    <Directory "/usr/local/www/phpMyAdmin/">
    Options None
    AllowOverride Limit
    Require all granted
    </Directory>
  5. Ändern Sie die Zeile DirectoryIndex index.html, indem Sie sie wie unten angegeben ändern:

    DirectoryIndex index.php index.html
  6. Um die Konfiguration des Apache-Webservers zu überprüfen, führen Sie den folgenden Befehl aus:

    apachectl configtest

    You should see the output similar to the following:

    Performing sanity check on apache24 configuration:
    Syntax OK
  7. Sie müssen den Dienst neu starten, damit sie wirksam werden, da Änderungen an der Konfiguration von Apache vorgenommen wurden. Andernfalls wird Apache weiterhin mit den vorherigen Einstellungen funktionieren. Um den Apache-Webserver neu zu starten, führen Sie den folgenden Befehl aus:

    apachectl restart

6. Wie überprüft man PHP?

Bevor Sie mit der Arbeit am FAMP-Stack beginnen, ist es ratsam sicherzustellen, dass PHP ordnungsgemäß funktioniert. Um sicherzustellen, dass Ihr System korrekt für PHP eingerichtet ist, können Sie ein einfaches PHP-Skript erstellen.In unserem Beispiel werden wir ein Skript namens info.php erstellen. Damit Apache die Datei finden und korrekt bereitstellen kann, muss sie im DocumentRoot-Verzeichnis gespeichert werden, wo Apache nach Dateien sucht, wenn ein Benutzer den Webserver aufruft. Der Speicherort von DocumentRoot ist in der Apache-Konfigurationsdatei /usr/local/etc/apache24/httpd.conf definiert. DocumentRoot ist standardmäßig auf /usr/local/www/apache24/data gesetzt. Sie können die folgenden Schritte ausführen, um Ihre PHP-Installation zu überprüfen:

  1. Sie können die Datei /usr/local/www/apache24/data/info.php mit Ihrem bevorzugten Editor erstellen:

  2. Fügen Sie die folgende Zeile in die PHP-Datei ein und beenden Sie:

    <?php phpinfo(); ?>
  3. Um zu überprüfen, ob Ihr Webserver PHP-generierte Inhalte erfolgreich anzeigen kann, besuchen Sie diese Website, indem Sie [http://your_server_IP/info.php](http://your_server_ip/info.php) in Ihren Webbrowser eingeben. Sie sollten die folgende Seite sehen:

    PHP info page

    Abbildung 1. PHP-Info-Seite

Diese Seite bietet Informationen zu Ihrem Server aus der Sicht von PHP. Es ist hilfreich für die Fehlersuche und zur Überprüfung, ob Ihre Einstellungen erfolgreich umgesetzt werden. Wenn dies erfolgreich war, funktioniert PHP wie beabsichtigt.

tipp

Diese Datei sollte nach diesem Test gelöscht werden, da sie möglicherweise Informationen über Ihren Server an unbefugte Benutzer weitergeben könnte. Um dies zu tun, können Sie eingeben:

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

You may rebuild this page at any time if you need to view the information again in the future.

Nach der Installation eines FAMP-Stacks haben Sie mehrere Optionen, was Sie als Nächstes tun können. Sie haben eine Plattform installiert, die es Ihnen ermöglicht, die überwiegende Mehrheit der Websites und Webanwendungen auf Ihrem Server zu installieren.

Wie installiert man phpMyAdmin?

phpMyAdmin ist ein kostenloses und Open-Source-Tool, das zur Verwaltung einer MySQL-Serverinstanz über eine grafische Benutzeroberfläche verwendet wird. PHP wird zur Entwicklung von phpMyAdmin verwendet. Dieser Schritt ist optional, und um das phpMyAdmin-Tool zu installieren, können Sie diese Schritte befolgen:

  1. Um das wget-Tool zu installieren, können Sie den folgenden Befehl ausführen:

    pkg install wget
  2. Laden Sie phpMyAdmin von ihrer Download-Seite, https://www.phpmyadmin.net/downloads/, herunter, indem Sie den folgenden Befehl ausführen. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version 5.2.0.

    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
  3. Entpacken Sie die heruntergeladene Datei, indem Sie den folgenden Befehl ausführen:

    tar -xvf phpMyAdmin-5.2.0-all-languages.tar.gz
  4. Kopieren Sie das extrahierte Verzeichnis nach /usr/local/www/apache24/data/phpmyadmin indem Sie den folgenden Befehl ausführen:

    cp -r phpMyAdmin-5.2.0-all-languages /usr/local/www/apache24/data/phpmyadmin
  5. Kopieren Sie die Beispielkonfigurationsdatei für phpMyAdmin, indem Sie den folgenden Befehl ausführen:

    cd /usr/local/www/apache24/data/phpmyadmin/
    cp config.sample.inc.php config.inc.php
  6. Kommentieren Sie die folgende Zeile in der /usr/local/etc/php.ini-Datei für die installierte Erweiterung aus.

    extension=mysqli.so
  7. Erstellen Sie ein tmp-Verzeichnis für das Template-Caching und setzen Sie die Berechtigungen, indem Sie die folgenden Befehle ausführen:

    mkdir /usr/local/www/apache24/data/phpmyadmin/tmp
    chmod 777 /usr/local/www/apache24/data/phpmyadmin/tmp
  8. Um die neuen Einstellungen zu aktivieren, starten Sie Apache neu, indem Sie den folgenden Befehl ausführen:

    service apache24 restart
  9. Sie können jetzt auf die phpMyAdmin-Benutzeroberfläche über http://your_server_IP/phpmyadmin zugreifen.

    phpMyAdmin Login Page

    Abbildung 2. phpMyAdmin-Anmeldeseite

  10. Sie können sich mit Ihren MySQL DB-Root-Anmeldeinformationen anmelden.

    tipp

    Wenn Sie auf ein Anmeldeproblem stoßen und die folgende Fehlermeldung erhalten mysqli::real_connect(): Der Server hat eine Authentifizierungsmethode angefordert, die dem Client unbekannt ist [caching_sha2_password], was darauf hinweist, dass Ihr MySQL-Server die Authentifizierungstechnik caching_sha2_passwordverwendet. Um das Problem zu lösen, müssen Sie die Authentifizierungsmethode aufmysql_native_passwordumstellen, wie unten angegeben, nachdem Sie die MySQL-Terminalschnittstelle mit dem Befehlmysql -u root -p` gestartet haben.

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Strong-Password';

    phpMyAdmin Settings Page

    Abbildung 3. phpMyAdmin-Einstellungsseite