Dernière fois a construit un environnement d'application Web en compilant PHP7.4 sur Apache2.4, mais ** malheureusement, Raspberry Pi par défaut Linux pour Linux ne prend pas en charge MySQL et n'existe pas dans les référentiels RPM ou APT. ** Mais il est possible de connecter un serveur MySQL externe.
Même si vous voulez construire MySQL pour la base de données avec le serveur Web pour plus de simplicité, ce n'est pas le cas avec Raspberry Pi, et même si vous pouvez l'installer, il est très inapproprié pour écrire de la microSD, donc Rasppie sera utilisé à l'avenir. Si vous développez une gamme qui prend en charge un stockage équivalent au SSD M.2, il peut être possible de prendre en charge MySQL ... (✿ ・ ω ・) D'ici là, introduisez de force MySQL dans Raspeye et stockez-le. Même si une erreur survient, elle sera à nouveau annulée ...
--Programme serveur Web: Apache 2.4.46 + PHP 7.4.10. --Client: Windows10 Pro --Architecture serveur: Raspberry Pi 3B + (avec armv8) Distribution Linux: openSUSE 15.1 Leap (64bit) / Raspberry Pi OS 2020.08 version (32bit)
--Utilisateur installé en tant que root (dans ma vérification, il s'agit d'un compte administrateur appelé admin, et il est traité par sudo à partir de là) --Dans openSUSE, le pare-feu utilise firewalld (n'utilise pas les commandes de pare-feu spécifiques à la distribution). Dans le système d'exploitation Raspberry Pi de Rasppie, pour firewalld, le lien autour d'IPv6 était un gaspillage, j'ai donc décidé d'utiliser le standard Debian ufw.
Les autres packages requis sont installés à l'aide des commandes de package standard de la distribution (dnf, apt, etc.) et n'ont pas besoin d'être téléchargés individuellement.
Pour le téléchargement, vous pouvez accéder au site officiel, le télécharger à partir de là et le transférer par FTP, ou vous pouvez l'obtenir avec wget si vous connaissez l'URL du fichier à télécharger, mais la méthode d'acquisition est omise.
J'ai installé le client MariaDB car le client qui gère les commandes MySQL n'inclut pas de package qui dit clairement "MySQL" dans Linux pour Raspeye.
openSUSE15.1(RaspberryPi)
# zypper -n install mariadb-client
RaspberryPiOS(2020.08)
# apt-get -y install mariadb-client
Vous pouvez maintenant utiliser les commandes MySQL de Raspeye.
Cette fois, j'utiliserai une machine virtuelle avec un serveur MySQL construit sur CentOS 8.1, donc [J'utiliserai la base de données intégrée dans cet article](https://qiita.com/kazumi75kitty/items/76807c637c096618a0e1#mysql%E3%82 % 92% E8% A9% A6% E3% 81% 99).
--Nom de la base de données: manutest
Le mot de passe a été changé de "test0" à "test1" pour des raisons personnelles.
Tout d'abord, préparez diverses choses sur le serveur MySQL afin que MySQL soit accessible à partir d'autres terminaux.
Connectez-vous en tant que racine MySQL.
Serveur MySQL(CentOS8.1)
[Seule cette commande est exécutée sur le serveur MySQL]
# mysql -u root -p
Enter password:← Entrez le mot de passe root MySQL
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| manutest |← La base de données créée s'affiche
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> CREATE USER 'test'@'192.168.1.22' IDENTIFIED BY 'test1';
↑ Adresse IP Raspeye "192.168.1.Créez un nom d'utilisateur "test" pour "22"
mysql> GRANT ALL ON manutest.* TO 'test'@'192.168.1.22';
↑ "test" vaut "192" pour la base de données "manutest".168.1.Toutes les fonctions peuvent être utilisées à partir de "22"
S'il n'y a pas d'erreur et que "Requête OK, 0 ligne affectée" s'affiche, la base de données et l'utilisateur ont été créés.
En d'autres termes, si MySQL et Apache sont sur la même machine serveur, vous pouvez utiliser "localhost", mais cette fois vous accéderez à un autre serveur depuis Raspeye → serveur MySQL, donc nom d'utilisateur + @ mark + host comme indiqué ci-dessous , Etc
CREATE USER '
' @ ' ' IDENTIFIED BY ' '; GRANT ALL ON <nom de la base de données>. * TO '<nom d'utilisateur>' @ '<hôte de Raspeye>';
Cela signifie qu'il est nécessaire de spécifier quelque chose comme (˶ ・ ᴗ ・) ੭
Sur le serveur MySQL, il était également nécessaire d'ouvrir firewalld sur CentOS (˶ ・ ᴗ ・) ੭ \ * \ *
Serveur MySQL(CentOS8.1)
[Seule cette commande est exécutée sur le serveur MySQL]
# 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
** Le port MySQL est 3306 / TCP **, donc en ouvrant ce port, PHP peut accéder au serveur MySQL ...
C'est tout pour travailler sur le serveur MySQL. Revenons maintenant au Raspberry Pi et voyons si nous pouvons utiliser MySQL. Vous pouvez spécifier l'hôte avec l'option "-h" avec la commande mysql
RaspberryPi(Système d'exploitation Raspberry ・ openSUSE15.1)
# mysql -h 192.168.1.18 -u test -p
Enter password:← Entrez le mot de passe "test1"
(Omission)
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| manutest |← Succès si la base de données créée est affichée
+--------------------+
2 rows in set (0.00 sec)
Vous pouvez maintenant voir correctement le contenu du tableau! !! (˶˙ᵕ˙˶)
Pour le serveur MySQL, essayez d'utiliser une table de test comme vous l'avez fait la dernière fois avec la machine virtuelle CentOS.
Nom de la table: ** testtb **
id | name | memo | |
---|---|---|---|
Moule | INT | VARCHAR(64) | VARCHAR(256) |
Attributs requis | PRIMARY KEY | NOT NULL | Valeur initiale NULL |
Autres attributs | AUTO_INCREMENT | - | - |
Tout d'abord, avant d'utiliser la table, vous devez vous assurer que vous pouvez vous connecter à MySQL avec PHP (\ * ˘ᗜ˘ \ *;)
Créer une page de confirmation de connexion
# 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());
}
?>
Déplacez-le vers l'emplacement de stockage / usr / local / apache2 / htdocs / de la page Web de destination où vous l'avez installé dans Lors de l'installation d'Apache.
# mv connect.php /usr/local/apache2/htdocs/
Puisque la page PHP est placée, il n'est pas nécessaire de redémarrer Apache, entrez donc https: // [adresse IP du serveur Linux] /connect.php pour vérifier. Puisque 192.168.1.18 est utilisé par le serveur MySQL et que l'adresse IP du serveur Raspai Linux est 192.168.1.22, accédez à 192.168.1.22 / connect.php en entrant l'URL après https: ~ dans le navigateur.
Enfin réussi! !! ⑅︎◡̈︎ *
Ensuite, vérifiez si les données peuvent être enregistrées. Créez à nouveau une page Web.
Tout d'abord, à partir du formulaire d'inscription.
# vi test_form.html
test_form.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Page de test- 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>
Créez ensuite PHP pour ajouter les données reçues du formulaire à la base de données MySQL
# vi test_form.php
test_form.php
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Entrée de test- 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>
Déplacez les deux fichiers ci-dessus vers l'emplacement des données de la page Web d'Apache.
# mv test_form.* /usr/local/apache2/htdocs/
Ensuite, lorsque vous accédez à https: // [adresse IP] /test_form.html avec un navigateur et enregistrez les données ...
Cela a également été enregistré avec succès! (˶ ・ ᴗ ・) ੭⚐⚑ Parce qu'il est moins puissant qu'un PC et que son stockage est microSD, ce qui n'est pas adapté à la lecture et à l'écriture de DB, c'est le moment où j'ai réalisé que Raspai peut également gérer DB en y accédant de manière externe avec un serveur DB externe.
Raspberry Pi est moins puissant que le PC et dispose d'un stockage microSD, donc si vous construisez un serveur exactement comme un PC, la route est relativement raide en raison du manque de mémoire et de l'incompatibilité de la base de données, mais il y a aussi des avantages uniques à l'économie d'énergie. J'ai été impressionné par le fait qu'il y en a un autre ... (♥ ´꒳` \ *)
En plus de créer un serveur d'applications Web à l'aide de PHP, j'aimerais aborder la création d'un serveur d'applications Web à l'aide de Java (OpenJDK).
Recommended Posts