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 ...
--Webserverprogramm: Apache 2.4.46 + PHP 7.4.10. --Client: Windows10 Pro
--Benutzer als root installiert (bei meiner Überprüfung handelt es sich um ein Administratorkonto namens admin, das von sudo von dort aus verarbeitet wird)
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.
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.
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.
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 ...
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)
Sie können jetzt den Inhalt der Tabelle richtig sehen! !! (˶˙ᵕ˙˶)
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.
Endlich gelungen! !! ⑅︎◡̈︎ *
Ü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 ...
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.
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 ... (♥ ´꒳` \ *)
Zusätzlich zum Erstellen eines Web-App-Servers mit PHP möchte ich auf das Erstellen eines Web-App-Servers mit Java (OpenJDK) eingehen.