La dernière fois a construit un environnement d'application Web en compilant la source PHP7.4 sur Apache2.4, mais cette fois, nous continuerons à créer un serveur de base de données. (⑅ • ᴗ • ⑅)
Le serveur de base de données peut être séparé du serveur Web lui-même, mais cette fois c'est facile, nous allons donc créer la base de données MySQL avec le serveur Web
--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à)
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.
MySQL dans les commandes de package standard de la distribution est souvent une MariaDB plus ancienne ou compatible, donc si vous souhaitez introduire une version explicite de MySQL, vous devrez télécharger le référentiel à partir du MySQL officiel.
Appliquez le référentiel téléchargé et installez MySQL.
CentOS8.1
# dnf -y install mysql80-community-release-el8-1.noarch.rpm
# dnf -y install mysql-server
Dans le cas de MySQL 8.0 ** L'infrastructure d'authentification peut prendre en charge les valeurs de hachage, et l'infrastructure d'authentification basée sur les valeurs de hachage peut être activée par défaut **. Cependant, il semble que cela ne soit pas pris en charge même dans PHP7 (je n'ai pas entendu dire qu'il est toujours pris en charge dans 7.4), et si vous y accédez avec un mot de passe simple en PHP, l'authentification ne fonctionnera pas. Par conséquent, il est nécessaire de modifier /etc/my.cnf (pour CentOS 8.1, il est inclus dans /etc/my.cnf /etc/my.cnf.d/mysql-default-authentication-plugin.cnf Éditer)
openSUSE15.1. Ubuntu20.04
# vi /etc/my.cnf
CentOS8.1
# vi /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
my.cnf ou mysql-default-authentication-plugin.cnf
default-authentication-plugin = mysql_native_mot de passe ← "#Retirer
# systemctl start mysqld
# systemctl enable mysqld
# systemctl status mysqld
Vérifiez le journal MySQL après le démarrage de MySQL
# less -r /var/log/mysqld.log
À ce moment-là, si ** "[Note] Un mot de passe temporaire est généré pour root @ localhost: ~" existe, le mot de passe initial est défini **. Sinon, il n'est pas défini (MySQL 8.0 de CentOS 8.1 n'est pas défini). Exécutez la ligne de commande MySQL avec ce mot de passe
python
[Pas de mot de passe initial MySQL]
# mysql -u root
[Mot de passe initial MySQL disponible]
# mysql -u root -p ← Entrez le mot de passe initial pour vous connecter
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '<Mot de passe root MySQL(Pas un mot de passe root Linux)>';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Ici, définissez le mot de passe pour le fonctionnement réel de MySQL. Notez donc que root n'est pas ** Linux root, mais ** root dans MySQL **.
Si "Requête OK, 0 lignes affectées (0,00 sec)" est affiché, le réglage du mot de passe racine MySQL est terminé, alors quittez avec exit.
Maintenant, essayez de vous connecter avec le mot de passe root MySQL après avoir défini
# mysql -u root -p
Enter password:← Entrez le mot de passe root MySQL
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.17 Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
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.
mysql>
Si cela se produit, la connexion racine MySQL réussira. Ou vous pouvez le vérifier ci-dessous
# mysqladmin ping -u root -p
Enter Password:← Entrez le mot de passe root MySQL
mysqld is alive
OK s'il dit "mysqld est vivant"
Puisque MySQL a fonctionné, créons en fait une base de données avec les utilisateurs.
--Nom de la base de données: manutest
Connectez-vous d'abord en tant que racine MySQL.
# mysql -u root -p
Enter password:← Entrez le mot de passe root MySQL
mysql> CREATE DATABASE manutest CHARACTER SET utf8;
↑ Code de caractère UTF pour la base de données "manutest"-Créer en 8
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'@'localhost' IDENTIFIED BY 'test0';
↑ Créer le nom d'utilisateur "test" avec le mot de passe "test0"
mysql> GRANT ALL ON manutest.* TO 'test'@'localhost';
↑ Permettre à l'utilisateur "test" d'utiliser toutes les fonctions de la base de données "manutest"
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.
** Si une erreur de politique de mot de passe se produit **
Si vous obtenez une erreur si vous enfreignez la politique de mot de passe, il semble que vous puissiez vérifier l'état de la politique et le modifier.
mysql> SHOW VARIABLES LIKE 'validate_password%';
↑ S'il s'agit d'un ensemble vide, il n'y a pas de politique, mais si c'est le cas, il sera
validate_password_la longueur est de 8, valider_password.la politique est "MOYENNE"
mysql> SET GLOBAL validate_password.length=4;
mysql> SET GLOBAL validate_password.policy=LOW;
↑ Vous pouvez désormais définir un mot de passe de 4 caractères maximum ou un mot de passe simple à des fins de test.
mysql> SET GLOBAL validate_password.length=8;
mysql> SET GLOBAL validate_password.policy=MEDIUM;
↑ Au retour
Maintenant, essayons si MySQL peut être utilisé avec l'utilisateur de test et la base de données créés.
mysql> exit
Bye
# mysql -u test -p
Enter password:← Entrez le mot de passe "test0"
(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)
Maintenant, créons une table dans la base de données créée et y mettons des données!
Cette fois, nous allons créer cette table pour les tests. 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 | - | - |
mysql> USE manutest;
mysql> CREATE TABLE testtb (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(64) NOT NULL, memo VARCHAR(256) DEFAULT NULL);
Query OK, 0 rows affected (0.11 sec)
mysql> SHOW TABLES;
+--------------------+
| Tables_in_manutest |
+--------------------+
| testtb |
+--------------------+
1 row in set (0.00 sec)
Après avoir créé la table avec succès, insérons les données. Dans la table de test testtb, id est automatiquement numéroté et le nom est requis, insérez donc les valeurs suivantes à titre d'exemple.
--id: (omis en raison de la numérotation automatique) --name: test
mysql> INSERT INTO testtb (name, memo) VALUES ('tester', 'Only for test.');
mysql> SELECT * FROM testtb;
+----+-----------+----------------+
| id | name | memo |
+----+-----------+----------------+
| 1 |tester| Only for test. |
+----+-----------+----------------+
1 row in set (0.00 sec)
Les données ainsi enregistrées ont été enregistrées dans la base de données sans être déformées ♪ C'est un succès!
Maintenant que j'ai confirmé l'installation et le fonctionnement de MySQL sans aucun problème, j'aimerais enfin gérer MySQL depuis PHP.
MySQL va se fermer et créer une page PHP.
Tout d'abord, créez un PHP récepteur qui enregistre les données reçues par POST avec PHP dans la base de données MySQL! Avant cela, 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=127.0.0.1';
$usr = 'test';
$pass = 'test0';
try {
$db = new PDO($dsn, $usr, $pass);
print 'Connection successful.';
$db = NULL;
}
catch(PDOException $e){
die('Connect error : '.$e->getMessage());
}
?>
Déplaçons-le vers l'emplacement de stockage / usr / local / apache2 / htdocs / de la page Web de destination installée dans installation Apache!
# mv connect.php /usr/local/apache2/htdocs/
La page PHP étant organisée, il n'est pas nécessaire de redémarrer Apache en particulier, alors entrez https: // [adresse IP du serveur Linux] /connect.php pour confirmer. Cette fois, l'adresse IP du serveur Linux est 192.168.1.18, alors accédez à 192.168.1.18 / connect.php en entrant l'URL après https: ~ dans le navigateur.
Si connect.php réussit à se connecter, le message ci-dessus sera affiché, donc l'image ci-dessus montre que la connexion a 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=127.0.0.1';
$usr = 'test';
$pass = 'test0';
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/
Maintenant, essayez d'accéder à https: // [adresse IP] /test_form.html avec votre navigateur.
Mettez quelques chaînes dans les formes gauche et droite ... (de préférence en japonais) et appuyez sur Soumettre
Réussi! Les données saisies ont été POSTÉES sur PHP et enregistrées dans la base de données MySQL. Vérifions-le également depuis la ligne de commande.
En PHP, le test utilisateur se connecte à une base de données appelée manutest, vous pouvez donc également vous connecter à MySQL avec test à partir d'une commande.
# mysql -u test -p
Enter password:← Entrez le mot de passe "test0"
mysql> USE manutest;
mysql> SELECT * FROM testtb;
+----+-----------------+----------------+
| id | name | memo |
+----+-----------------+----------------+
| 1 |tester| Only for test. |
| 2 |crêpe|envie de manger|
+----+-----------------+----------------+
2 rows in set (0.00 sec)
Il a été ajouté correctement! !! (\ * ˘ᗜ˘ \ *) ...: \ * ♡
Apache et PHP + MySQL ont été fréquemment utilisés dans ce modèle, à la fois dans mon expérience professionnelle antérieure et dans les grandes entreprises. Au contraire, j'estime que Java était rare.
PHP est moins cher et plus ouvert que la licence commerciale de Java, donc je pense qu'il est plus facile pour les grandes entreprises et, bien sûr, pour les petites et moyennes entreprises de l'introduire.
En ce qui concerne le coût d'introduction d'Apache + PHP + MySQL sous Linux, je n'ai pas besoin de licence, donc je pense que le coût de la main-d'œuvre pour le salaire et le coût de l'équipement indépendamment du PC utilisé ou de la tarte aux râpes.
Si le coût d'installation est de 2500 yens par heure, il faudra 2 heures pour construire un nouveau serveur Web et serveur de fichiers, et le total sera de 5000 yens. De plus, si la combinaison d'un PC ou d'un Raspeye d'occasion et d'un nouveau disque dur ou SSD coûte 30000 à 40000 yens, le nouveau coût d'installation est inférieur à 50000 yens, cela prend donc 6 minutes plutôt que d'acheter une machine Windows Server coûteuse pour 300000 yens. Je pense que les solutions informatiques seront enrichies même pour les petites et moyennes entreprises et la gestion individuelle.
En particulier, dans le cas de l'IoT tel que Raspeye, il est prévu qu'il puisse être combiné avec des propriétés physiques telles que des capteurs de manière hybride et converti en données, donc à l'avenir je voudrais élargir mes horizons et le mettre sur Qiita (˙꒳). ˙ᐢ)
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