[LINUX] Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL

Annahmen und Vorbereitungen

Artikel zum Aufbau eines Linux-Servers

Letztes Mal hat eine Webanwendungsumgebung erstellt, indem PHP7.4 auf Apache2.4 kompiliert wurde, ** aber leider standardmäßig Raspberry Pi Linux für Linux unterstützt MySQL nicht und ist in RPM- oder APT-Repositorys nicht vorhanden. ** Es ist jedoch möglich, einen externen MySQL-Server anzuschließen.

Selbst wenn Sie der Einfachheit halber MySQL für die Datenbank zusammen mit dem Webserver erstellen möchten, ist dies bei Raspberry Pi nicht der Fall, und selbst wenn Sie es installieren können, ist es für das Schreiben von microSD sehr ungeeignet, sodass Rasppie in Zukunft verwendet wird. Wenn Sie eine Aufstellung entwickeln, die Speicher unterstützt, der M.2 SSD entspricht, ist es möglicherweise möglich, MySQL zu unterstützen ... (✿ ・ ω ・) Führen Sie MySQL bis dahin zwangsweise in Raspeye ein und speichern Sie es. Selbst wenn ein Fehler auftritt, bin ich immer noch umgestürzt ...

Umgebung

--Webserverprogramm: Apache 2.4.46 + PHP 7.4.10. --Client: Windows10 Pro

Annahme

--Benutzer als root installiert (bei meiner Überprüfung handelt es sich um ein Administratorkonto namens admin, das von sudo von dort aus verarbeitet wird)

Serverbedingungen

IP Adresse

Funktionen und Versionen zum individuellen Herunterladen und Installieren von Paketen (Stand Juni 2020)

Andere erforderliche Pakete werden mit den Standardpaketbefehlen der Distribution (dnf, apt usw.) installiert und müssen nicht einzeln heruntergeladen werden.

Zum Herunterladen können Sie auf die offizielle Website zugreifen, von dort herunterladen und per FTP übertragen oder mit wget abrufen, wenn Sie die URL der Download-Datei kennen, die Erfassungsmethode jedoch weggelassen wurde.

Arbeitsablauf

Einführung in den MySQL-Client

Installieren der MariaDB-Client-Tools

Ich habe den MariaDB-Client installiert, da der Client, der die MySQL-Befehle verwaltet, kein Paket enthält, in dem unter Linux for Raspeye eindeutig "MySQL" steht.

openSUSE15.1(RaspberryPi)


# zypper -n install mariadb-client

RaspberryPiOS(2020.08)


# apt-get -y install mariadb-client

Sie können jetzt MySQL-Befehle von Raspeye verwenden.

Vorbereitung auf dem MySQL Server

Benutzer und Datenbanken auf dem Server

Dieses Mal werde ich eine virtuelle Maschine mit einem MySQL-Server verwenden, der auf CentOS 8.1 basiert. [Ich werde die in diesem Artikel erstellte Datenbank verwenden](https://qiita.com/kazumi75kitty/items/76807c637c096618a0e1#mysql%E3%82 % 92% E8% A9% A6% E3% 81% 99).

Das Passwort wurde aus persönlichen Gründen von "test0" in "test1" geändert.

Vorbereitung auf dem MySQL Server

Bereiten Sie zunächst verschiedene Dinge auf dem MySQL-Server vor, damit auf MySQL von anderen Terminals aus zugegriffen werden kann.

Melden Sie sich als MySQL-Root an.

MySQL Server(CentOS8.1)


[Nur dieser Befehl wird auf dem MySQL-Server ausgeführt]
# mysql -u root -p
Enter password:← Geben Sie das MySQL-Root-Passwort ein

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| manutest           |← Die erstellte Datenbank wird angezeigt
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> CREATE USER 'test'@'192.168.1.22' IDENTIFIED BY 'test1';
↑ Raspeye IP-Adresse "192.168.1.Erstellen Sie einen Benutzernamen "test" für "22"

mysql> GRANT ALL ON manutest.* TO 'test'@'192.168.1.22';
↑ "test" ist "192" für die Datenbank "manutest".168.1.Alle Funktionen können ab "22" verwendet werden.

Wenn keine Fehler vorliegen und "Abfrage OK, 0 Zeilen betroffen" angezeigt wird, wurden die Datenbank und der Benutzer erstellt.

Mit anderen Worten, wenn sich MySQL und Apache auf demselben Server befinden, können Sie "localhost" verwenden. Diesmal greifen Sie jedoch über Raspeye → MySQL-Server auf einen anderen Server zu. Verwenden Sie daher den Benutzernamen + @ mark + host wie unten gezeigt , Und so weiter

CREATE USER '' @ '' IDENTIFIED BY ''; GRANT ALL ON . * TO '' @ '';

Dies bedeutet, dass etwas wie (˶ ・ ᴗ ・) ੭ angegeben werden muss

Auf dem MySQL-Server musste auch die Firewall unter CentOS (˶ ・ ᴗ ・) ੭ \ * \ * geöffnet werden

MySQL Server(CentOS8.1)


[Nur dieser Befehl wird auf dem MySQL-Server ausgeführt]
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
# firewall-cmd --reload

** Der MySQL-Port ist 3306 / TCP **. Durch Öffnen dieses Ports kann PHP auf den MySQL-Server zugreifen ...

Raspberry Pi → Überprüfen Sie, ob Sie eine Verbindung zum MySQL-Server herstellen können

Das ist alles für die Arbeit am MySQL-Server. Gehen wir jetzt zurück zum Raspberry Pi und sehen, ob wir MySQL verwenden können. Sie können den Host mit der Option "-h" mit dem Befehl mysql angeben

RaspberryPi(Himbeer-Betriebssystem ・ openSUSE15.1)


# mysql -h 192.168.1.18 -u test -p
Enter password:← Geben Sie das Passwort "test1" ein
(Unterlassung)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| manutest           |← Erfolgreich, wenn die erstellte Datenbank angezeigt wird
+--------------------+
2 rows in set (0.00 sec)

ラズパイ→DBサーバー接続成功!!

Sie können jetzt den Inhalt der Tabelle richtig sehen! !! (˶˙ᵕ˙˶)

Verwenden Sie den MySQL-Server von PHP

Überprüfen Sie die MySQL-Verbindung von PHP

Verwenden Sie für den MySQL-Server eine Testtabelle wie beim letzten Mal mit der virtuellen Maschine CentOS.

Tabellenname: ** testtb **

id name memo
Schimmel INT VARCHAR(64) VARCHAR(256)
Erforderliche Attribute PRIMARY KEY NOT NULL Anfangswert NULL
Andere Attribute AUTO_INCREMENT - -

Bevor Sie die Tabelle verwenden, müssen Sie zunächst sicherstellen, dass Sie mit PHP eine Verbindung zu MySQL herstellen können (\ * ˘ᗜ˘ \ *;)

Erstellen Sie eine Verbindungsbestätigungsseite

# cd ~
# vi connect.php

connect.php


<?php
    $dsn = 'mysql:dbname=manutest; host=192.168.1.18';
    $usr = 'test';
    $pass = 'test1';
    
    try {
        $db = new PDO($dsn, $usr, $pass);
        print 'Connection successful.';
        $db = NULL;
    }
    catch(PDOException $e){
        die('Connect error : '.$e->getMessage());
    }
?>

Verschieben Sie dies in den Speicherort / usr / local / apache2 / htdocs / der Zielwebseite, auf der Sie es unter [Bei der Installation von Apache] installiert haben (https://qiita.com/kazumi75kitty/items/67686eccaaec73251458).

# mv connect.php /usr/local/apache2/htdocs/

Da die PHP-Seite angeordnet ist, muss Apache nicht neu gestartet werden. Geben Sie daher zur Bestätigung https: // [IP-Adresse des Linux-Servers] /connect.php ein. Da 192.168.1.18 vom MySQL-Server verwendet wird und die IP-Adresse des Raspai Linux-Servers 192.168.1.22 lautet, greifen Sie auf 192.168.1.22 / connect.php zu, indem Sie die URL nach https: ~ im Browser eingeben.

ラズパイ上のPHP→DBサーバー接続 Endlich gelungen! !! ⑅︎◡̈︎ *

Überprüfen Sie, ob Daten von PHP nach MySQL registriert werden können

Überprüfen Sie anschließend, ob die Daten registriert werden können. Erstellen Sie erneut eine Webseite.

Zunächst aus dem Anmeldeformular.

# vi test_form.html

test_form.html


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testseite- Test page</title>
</head>
<body>
<form method="POST" action="test_form.php">
    <input type="text" name="name" />
    <input type="text" name="memo" />
    <input type="submit" value="Submit" />
</form>
</body>
</html>

Erstellen Sie als Nächstes PHP, das die vom Formular empfangenen Daten zur MySQL-Datenbank hinzufügt.

# vi test_form.php

test_form.php


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Testeingabe- Test insert</title>
</head>
<body>
<?php
    function getDb(){
        $dsn = 'mysql:dbname=manutest; host=192.168.1.18';
        $usr = 'test';
        $pass = 'test1';
        
        try {
            $db = new PDO($dsn, $usr, $pass);
            $db->exec('SET NAMES utf8');
        }
        catch(PDOException $e){
            die('Connect error : '.$e->getMessage());
        }
        
        return $db;
    }
    
    try {
        $db = getDb();
        
        $stt = $db->prepare('INSERT INTO testtb (name, memo) VALUES (:one, :two)');
        
        $stt->bindValue(':one', $_POST['name']);
        $stt->bindValue(':two', $_POST['memo']);
        $stt->execute();
        
        print $_POST['name'].' - '.$_POST['memo'].' : Insert OK.';
        
        $stt = $db->query("SELECT * FROM testtb");
?>
    <table border="1">
<?php
        while($row = $stt->fetch(PDO::FETCH_ASSOC)){
?>
        <tr>
            <td><?php print $row['name']; ?></td>
            <td><?php print $row['memo']; ?></td>
        </tr>
<?php
        }
?>
   </table>
<?php
         $db = NULL;
   }
    catch(PDOException $e){
        die('Process error : '.$e->getMesssage());
    }
?>
</body>
</html>

Verschieben Sie die beiden oben genannten Dateien an den Speicherort der Apache-Webseitendaten.

# mv test_form.* /usr/local/apache2/htdocs/

Wenn Sie dann mit einem Browser auf https: // [IP-Adresse] /test_form.html zugreifen und die Daten registrieren ...

ラズパイPHP→DBサーバー操作

Dies wurde auch erfolgreich registriert! (˶ ・ ᴗ ・) ੭⚐⚑ Da es weniger leistungsfähig als ein PC ist und sein Speicher microSD ist, das zum Lesen und Schreiben von DBs nicht geeignet ist, wurde mir gerade klar, dass Raspai DB auch verarbeiten kann, indem es zusammen mit einem externen DB-Server extern darauf zugreift.

Nachwort

Raspberry Pi ist weniger leistungsstark als ein PC und verfügt über einen microSD-Speicher. Wenn Sie also einen Server genau wie einen PC erstellen, ist der Weg aufgrund von Speichermangel und Inkompatibilität mit der Datenbank relativ steil, aber es gibt auch Vorteile, die nur für die Energieeinsparung von Vorteil sind Ich war beeindruckt von der Tatsache, dass es noch eine gibt ... (♥ ´꒳` \ *)

Zukunft und nächstes Mal

Zusätzlich zum Erstellen eines Web-App-Servers mit PHP möchte ich auf das Erstellen eines Web-App-Servers mit Java (OpenJDK) eingehen.

Recommended Posts

Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers ―― 1. Einführung in Apache
Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers --2 PHP-Einführung
Quellkompilierung Apache2.4 (httpd 2.4.43) + PHP7.4 unter Linux zum Erstellen eines Webservers --3 MySQL 8.0 Einführung
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Erstellen Sie eine LAMP-Umgebung mit Vagrant (Linux + Apache + MySQL + PHP)
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
Starten Sie einen Webserver mit Python und Flask
Webserverkonstruktion mit Apache 2.4 (httpd 2.4.43) + PHP 7.4 unter Linux ―― 4. Sicherheit (chown und firewalld)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Erstellen Sie eine Webanwendung mit Django
Aufbau eines VPN-Servers mit Raspberry Pie
Verwenden einer Webkamera mit Raspberry Pi
Ein Memo zur einfachen Verwendung des Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi 2
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
[Python + PHP] Erstellen Sie mit Raspberry Pi einen Temperatur-, Feuchtigkeits- und Druckmonitor
Starten Sie einen Webserver mit Bottle and Flask (ich habe auch versucht, Apache zu verwenden)
Haustierüberwachung mit Rekognition und Raspberry pi
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Erstellen Sie mit Docker auf RaspberryPi3 eine Python + Flasche + MySQL-Umgebung! [Versuch und Irrtum]
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Starten Sie mit Docker einen einfachen Python-Webserver
MQTT Radicon Car mit Arduino und Himbeere
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Kompilieren Sie Rust und führen Sie es mit einem einzigen Befehl aus
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Erstellen Sie eine Python-Entwicklungsumgebung auf Raspberry Pi
[Hinweis] Verwenden Sie auf dem Raspberry Pi 4B ein kabelgebundenes LAN-Verbindungsgerät mit WiFi-Eth-Bridge
Steuern Sie die Musikwiedergabe auf einem Smartphone, das mit Raspberry Pi 3 und Bluetooth mit AVRCP verbunden ist
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Client-Betriebssystems)
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper