Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Registrieren eines kostenlosen Accounts finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch spezifische Werte für Ihre Cloud-Umgebung.
Oracle Cloud Infrastructure Compute-Instanz-Webserver mit einer OCI-Datenbank als Haupt-Backend erstellen
Einführung
In diesem Tutorial erstellen wir eine Zwei-Tier-Anwendung, die aus einer Oracle Cloud Infrastructure (OCI) Compute-Instanz besteht, die als Webserver und OCI Database Service (MySQL) fungiert. Wir haben eine Beispiel-Website und -Datenbank erstellt, und diese Website ruft die Daten aus der OCI-Datenbanktabelle ab.
Ziele
-
Wir werden eine zweistufige Webanwendung erstellen, in der wir eine OCI-Compute-Instanz verwenden, die mit dem öffentlichen Internet als Frontend mit PHP- und NGINX-Webserver und einer privaten MySQL Database mit Beispieldaten konfrontiert ist. Installieren Sie PHP MySQL-Module und erstellen Sie eine Datenbank mit Beispieldaten, um erfolgreich auf die Website und Beispieldaten zuzugreifen.
-
Aufgabe 1: Neues virtuelles Cloud-Netzwerk (VCN) erstellen.
-
Aufgabe 2: Erstellen Sie ein neues öffentliches und privates Subnetz.
-
Aufgabe 3: Neue OCI Compute-Instanz erstellen.
-
Aufgabe 4: Erstellen Sie eine neue MySQL Database-Engine.
-
Aufgabe 5: Erstellen Sie eine neue Datenbank mit Beispieldaten.
-
Aufgabe 6: Installieren und konfigurieren Sie einen NGINX Webserver mit PHP.
-
Aufgabe 7: Erstellen Sie eine Website, die eine Verbindung zur Datenbank herstellt und die Datensätze auf einer Webseite anzeigt.
-
Aufgabe 1: Neues virtuelles Cloud-Netzwerk (VCN) erstellen
Es wurde bereits ein VCN erstellt. Wenn Sie jedoch noch ein neues VCN erstellen müssen, befolgen Sie das Tutorial: Neues VCN mit aktiviertem IPv6 erstellen.
Klicken Sie oben links auf das Hamburger-Menü. Klicken Sie auf Virtuelles Cloud-Netzwerk, um zu prüfen, ob das virtuelle Cloud-Netzwerk vorhanden ist.
Für dieses Tutorial ist bereits ein VCN vorhanden.
Aufgabe 2: Neues öffentliches und privates Subnetz erstellen
Es wurde bereits ein öffentliches und privates Subnetz erstellt. Wenn Sie jedoch noch neue Subnetze erstellen müssen, befolgen Sie die Tutorials: Erstellen Sie ein neues öffentliches Subnetz mit aktiviertem IPv6 und Erstellen Sie ein privates Subnetz im VCN.
In diesem VCN ist ein öffentliches und privates Subnetz verfügbar. Wir verbinden die OCI Compute-Instanz mit dem öffentlichen Subnetz und die OCI-Datenbank mit dem privaten Subnetz.
Um die verfügbaren OCI Compute-Instanzen zu prüfen, klicken Sie oben links auf das Hamburger-Menü.
Aufgabe 3: Neue OCI Compute-Instanz erstellen
Es wurde bereits eine OCI Compute-Instanz erstellt. Wenn Sie jedoch noch eine neue OCI Compute-Instanz erstellen müssen, befolgen Sie das Tutorial: Aufgabe 3: Neue Instanz mit aktiviertem IPv6 erstellen.
Klicken Sie auf Instanzen, um die OCI-Compute-Instanzen zu prüfen.
Die öffentliche Compute-Instanz ist hochgefahren und gestartet.
Aufgabe 4: Neue MySQL Database-Engine erstellen
-
Klicken Sie oben links auf das Hamburger-Menü.
- Klicken Sie auf Datenbanken.
- Klicken Sie auf MySQL HeatWave.
-
Klicken Sie auf DB-System erstellen.
-
Geben Sie unter DB-System erstellen die folgenden Informationen ein:
- Wählen Sie Development or Testing.
- Geben Sie einen Namen ein.
- Blättern Sie nach unten.
-
Geben Sie im Abschnitt Administratorzugangsdaten erstellen die folgenden Informationen ein.
- Geben Sie den Benutzernamen ein.
- Geben Sie das Kennwort ein.
- Geben Sie das Kennwort bestätigen ein.
- Wählen Sie "Standalone".
- Blättern Sie nach unten.
- Wählen Sie das VCN für die Datenbank aus.
- Wählen Sie das private Subnetz aus, mit dem die Datenbank verbunden werden soll.
- Blättern Sie nach unten.
-
Blättern Sie nach unten.
-
Klicken Sie auf Erstellen, um die Datenbank zu erstellen.
-
Prüfen Sie, ob der Datenbankstatus Wird erstellt lautet.
Prüfen Sie, ob der Datenbankstatus Aktualisierung lautet.
- Prüfen Sie, ob der Datenbankstatus ACTIVE lautet.
- Klicken Sie auf die Registerkarte Verbindungen.
Prüfen Sie die private IP-Adresse 10.0.2.247
, die später für die Konfiguration und den Zugriff auf MySQL Database verwendet wird.
Aufgabe 5: Neue Datenbank mit Beispieldaten erstellen (1 Tabelle mit 2 Datensätzen)
-
Um auf MySQL Database zuzugreifen und diese zu konfigurieren, müssen Sie die MySQL Shell installieren. Führen Sie zur Installation folgenden Befehl aus.
[opc@ih-webserver-01 ~]$ sudo yum install mysql-shell
-
Um auf MySQL Database zuzugreifen, verwenden Sie den folgenden Befehl.
Hinweis: Wir können keine Verbindung zur MySQL Database herstellen. Der Grund dafür ist, dass die Datenbankports in der Standardsicherheitsliste nicht zulässig sind.
-
Klicken Sie in der OCI-Konsole auf das Hamburger-Menü.
- Klicken Sie auf Networking
- Klicken Sie auf Virtual Cloud Networks.
-
Klicken Sie auf das VCN.
-
Blättern Sie nach unten.
-
Klicken Sie auf Sicherheitslisten und die Standardsicherheitsliste.
-
Klicken Sie auf Ingress-Regeln hinzufügen.
-
Geben Sie unter Ingress-Regeln hinzufügen die folgenden Informationen ein.
- Quelltyp: Wählen Sie CIDR aus.
- Quell-CIDR: Um Traffic aus allen Quellen zuzulassen, geben Sie
0.0.0.0/0
ein. - IP-Protokoll: Wählen Sie TCP aus.
- Zielportbereich: Geben Sie 33060 ein.
- Klicken Sie auf Ingress-Regeln hinzufügen.
-
Klicken Sie auf Ingress-Regel hinzufügen.
-
Geben Sie unter Ingress-Regeln hinzufügen die folgenden Informationen ein.
- Quelltyp: Wählen Sie CIDR aus.
- Quell-CIDR: Um Traffic aus allen Quellen zuzulassen, geben Sie
0.0.0.0/0
ein. - IP-Protokoll: Wählen Sie TCP aus.
- Zielportbereich: Geben Sie 33060 ein.
- Klicken Sie auf Ingress-Regeln hinzufügen.
- Blättern Sie nach unten.
- Prüfen Sie, ob die Regeln für die TCP-Ports
33060
und3306
konfiguriert sind.
-
Nachdem die Ingress-Regeln der Standardsicherheitsliste hinzugefügt wurden, können wir mit der MySQL Shell mit dem folgenden Befehl auf die OCI-Datenbank zugreifen.
[opc@ih-webserver-01 ~]$ mysqlsh admin@10.0.2.247 Please provide the password for 'admin@10.0.2.247': **************** Save password for 'admin@10.0.2.247'? [Y]es/[N]o/Ne[v]er (default No): Y MySQL Shell 8.0.35 Copyright (c) 2016, 2023, 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 '\?' for help; '\quit' to exit. Creating a session to 'admin@10.0.2.247' Fetching schema names for auto-completion... Press ^C to stop. Your MySQL connection id is 50 (X protocol) Server version: 8.0.36-u1-cloud MySQL Enterprise - Cloud No default schema selected; type \use <schema> to set one. MySQL 10.0.2.247:33060+ ssl JS >
Wir können jetzt erfolgreich auf die OCI-Datenbank zugreifen.
-
Nach dem Zugriff auf die OCI-Datenbank mit MySQL Shell erleichtert der folgende Befehl die Verwendung, indem er das automatische Speichern, die Befehlshistorie und den Modus aktiviert.
MySQL 10.0.2.247:33060+ ssl JS > shell.options.setPersist('history.autoSave', 1) MySQL 10.0.2.247:33060+ ssl JS > shell.options.setPersist('history.maxSize', 5000) MySQL 10.0.2.247:33060+ ssl JS > shell.options.setPersist('defaultMode', 'sql')
-
Verwenden Sie den folgenden Befehl, um alle vorhandenen Datenbanken anzuzeigen.
MySQL 10.0.2.247:33060+ ssl SQL > SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | mysql_audit | | performance_schema | | sys | +--------------------+ 5 rows in set (0.0015 sec) MySQL 10.0.2.247:33060+ ssl SQL >
-
Um eine neue Datenbank zu erstellen, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl SQL > CREATE DATABASE F1; Query OK, 1 row affected (0.0066 sec)
-
Um zu prüfen, ob die Datenbank erstellt wurde, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl SQL > SHOW DATABASES; +--------------------+ | Database | +--------------------+ | F1 | | information_schema | | mysql | | mysql_audit | | performance_schema | | sys | +--------------------+ 6 rows in set (0.0010 sec) MySQL 10.0.2.247:33060+ ssl SQL >
-
Verwenden Sie den folgenden Befehl, um die neue Datenbank zu verwenden (um Tabellen und Datensätze zu erstellen).
MySQL 10.0.2.247:33060+ ssl SQL > USE F1 Default schema set to `F1`. Fetching global names, object names from `F1` for auto-completion... Press ^C to stop. MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Um alle vorhandenen Tabellen in der Datenbank anzuzeigen, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl F1 SQL > SHOW TABLES; Empty set (0.0013 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Um eine neue Tabelle mit einigen Spalten zu erstellen, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl F1 SQL > CREATE TABLE drivers(First_Name VARCHAR(50) NOT NULL,Last_Name VARCHAR(50) NOT NULL,PRIMARY KEY(Last_Name)); Query OK, 0 rows affected (0.0207 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Um alle Tabellen in der Datenbank zu prüfen, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl F1 SQL > DESCRIBE drivers; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | First_Name | varchar(50) | NO | | NULL | | | Last_Name | varchar(50) | NO | PRI | NULL | | +------------+-------------+------+-----+---------+-------+ 2 rows in set (0.0022 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Verwenden Sie die folgenden Befehle, um zwei neue Datensätze in der Tabelle zu erstellen.
MySQL 10.0.2.247:33060+ ssl F1 SQL > INSERT INTO drivers VALUE ("Max", "Verstappen"); Query OK, 1 row affected (0.0048 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL > INSERT INTO drivers VALUE ("Sergio", "Pérez"); Query OK, 1 row affected (0.0024 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Um zu prüfen, ob zwei neue Datensätze in der Tabelle erstellt werden, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl F1 SQL > SELECT * FROM drivers; +------------+------------+ | First_Name | Last_Name | +------------+------------+ | Sergio | Pérez | | Max | Verstappen | +------------+------------+ 2 rows in set (0.0006 sec) MySQL 10.0.2.247:33060+ ssl F1 SQL >
-
Um einen neuen Benutzer zu erstellen und die richtigen Berechtigungen für die neue Datenbank bereitzustellen, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl SQL > CREATE USER 'iwan'@'%' IDENTIFIED WITH mysql_native_password BY 'XXX'; Query OK, 0 rows affected (0.0035 sec) MySQL 10.0.2.247:33060+ ssl SQL > GRANT ALL ON F1.* TO 'iwan'@'%'; Query OK, 0 rows affected (0.0037 sec) MySQL 10.0.2.247:33060+ ssl SQL >
-
Um zu prüfen, ob der neue Benutzer über die richtigen Berechtigungen für die Datenbank verfügt, verwenden Sie den folgenden Befehl.
MySQL 10.0.2.247:33060+ ssl SQL > SHOW GRANTS FOR 'iwan'; +----------------------------------------------+ | Grants for iwan@% | +----------------------------------------------+ | GRANT USAGE ON *.* TO `iwan`@`%` | | GRANT ALL PRIVILEGES ON `F1`.* TO `iwan`@`%` | +----------------------------------------------+ 2 rows in set (0.0006 sec) MySQL 10.0.2.247:33060+ ssl SQL >
-
Um die MySQL Shell zu schließen, führen Sie den Befehl
\q
aus.MySQL 10.0.2.247:33060+ ssl F1 SQL > \q Bye! [opc@ih-webserver-01 ~]$
Jetzt haben wir eine Beispieldatenbank mit einigen Beispieltabellen und Beispieldaten, die in OCI mit dem OCI Database-Service MySQL ausgeführt werden. Die nächste Aufgabe besteht darin, diese Daten über eine PHP-Website abzurufen.
Aufgabe 6: NGINX Webserver mit PHP installieren und konfigurieren
Es wurde bereits eine Compute-Instanz mit NGNIX und PHP erstellt. Wenn Sie jedoch noch eine neue Instanz mit NGNIX und PHP erstellen müssen, befolgen Sie das Tutorial: Aufgabe 6: Webserver auf Instanz installieren.
Im vorherigen NGINX mit PHP-Setup haben wir keine PHP MySQL-Module installiert. Eine schnelle Überprüfung auf der PHP-Infoseite wird dies bestätigen.
-
Verwenden Sie den folgenden Befehl, um die PHP-Module MySQL zu installieren, damit NGINX und PHP mit MySQL zusammenarbeiten können.
[opc@ih-webserver-01 html]$ sudo dnf install php php-common php-mysqlnd php-pecl-zip php-gd php-mbstring php-xml php-soap Last metadata expiration check: 2:28:09 ago on Fri 16 Feb 2024 08:40:17 AM GMT. Package php-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 is already installed. Package php-common-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 is already installed. Dependencies resolved. ====================================================================================================================== Package Architecture Version Repository Size ====================================================================================================================== Installing: php-gd x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 84 k php-mbstring x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 581 k php-mysqlnd x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 191 k php-pecl-zip x86_64 1.15.3-1.module+el8+5148+a558e3ee ol8_appstream 51 k php-soap x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 177 k php-xml x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 189 k Installing dependencies: gd x86_64 2.2.5-7.el8 ol8_appstream 144 k jbigkit-libs x86_64 2.1-14.el8 ol8_appstream 55 k libXpm x86_64 3.5.12-9.el8_7 ol8_appstream 58 k libjpeg-turbo x86_64 1.5.3-12.el8 ol8_appstream 157 k libtiff x86_64 4.0.9-29.el8_8 ol8_appstream 189 k libwebp x86_64 1.0.0-9.el8_9.1 ol8_appstream 273 k libzip x86_64 1.5.1-2.module+el8.2.0+5510+6771133c ol8_appstream 63 k php-pdo x86_64 7.2.24-1.module+el8.2.0+5510+6771133c ol8_appstream 123 k Transaction Summary ====================================================================================================================== Install 14 Packages Total download size: 2.3 M Installed size: 6.1 M Is this ok [y/N]: y Downloading Packages: (1/14): libXpm-3.5.12-9.el8_7.x86_64.rpm 253 kB/s | 58 kB 00:00 (2/14): jbigkit-libs-2.1-14.el8.x86_64.rpm 232 kB/s | 55 kB 00:00 (3/14): libjpeg-turbo-1.5.3-12.el8.x86_64.rpm 13 MB/s | 157 kB 00:00 (4/14): libtiff-4.0.9-29.el8_8.x86_64.rpm 19 MB/s | 189 kB 00:00 (5/14): gd-2.2.5-7.el8.x86_64.rpm 571 kB/s | 144 kB 00:00 (6/14): libwebp-1.0.0-9.el8_9.1.x86_64.rpm 22 MB/s | 273 kB 00:00 (7/14): libzip-1.5.1-2.module+el8.2.0+5510+6771133c.x86_64.rpm 846 kB/s | 63 kB 00:00 (8/14): php-gd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 963 kB/s | 84 kB 00:00 (9/14): php-mbstring-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 3.9 MB/s | 581 kB 00:00 (10/14): php-pdo-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 1.9 MB/s | 123 kB 00:00 (11/14): php-mysqlnd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 1.2 MB/s | 191 kB 00:00 (12/14): php-soap-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 1.1 MB/s | 177 kB 00:00 (13/14): php-pecl-zip-1.15.3-1.module+el8+5148+a558e3ee.x86_64.rpm 308 kB/s | 51 kB 00:00 (14/14): php-xml-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64.rpm 1.8 MB/s | 189 kB 00:00 ---------------------------------------------------------------------------------------------------------------------- Total 3.9 MB/s | 2.3 MB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libjpeg-turbo-1.5.3-12.el8.x86_64 1/14 Installing : libXpm-3.5.12-9.el8_7.x86_64 2/14 Installing : php-pdo-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 3/14 Installing : libzip-1.5.1-2.module+el8.2.0+5510+6771133c.x86_64 4/14 Installing : libwebp-1.0.0-9.el8_9.1.x86_64 5/14 Installing : jbigkit-libs-2.1-14.el8.x86_64 6/14 Running scriptlet: jbigkit-libs-2.1-14.el8.x86_64 6/14 Installing : libtiff-4.0.9-29.el8_8.x86_64 7/14 Installing : gd-2.2.5-7.el8.x86_64 8/14 Running scriptlet: gd-2.2.5-7.el8.x86_64 8/14 Installing : php-gd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 9/14 Installing : php-pecl-zip-1.15.3-1.module+el8+5148+a558e3ee.x86_64 10/14 Installing : php-mysqlnd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 11/14 Installing : php-xml-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 12/14 Installing : php-soap-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 13/14 Installing : php-mbstring-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 14/14 Running scriptlet: php-mbstring-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 14/14 Verifying : gd-2.2.5-7.el8.x86_64 1/14 Verifying : jbigkit-libs-2.1-14.el8.x86_64 2/14 Verifying : libXpm-3.5.12-9.el8_7.x86_64 3/14 Verifying : libjpeg-turbo-1.5.3-12.el8.x86_64 4/14 Verifying : libtiff-4.0.9-29.el8_8.x86_64 5/14 Verifying : libwebp-1.0.0-9.el8_9.1.x86_64 6/14 Verifying : libzip-1.5.1-2.module+el8.2.0+5510+6771133c.x86_64 7/14 Verifying : php-gd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 8/14 Verifying : php-mbstring-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 9/14 Verifying : php-mysqlnd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 10/14 Verifying : php-pdo-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 11/14 Verifying : php-pecl-zip-1.15.3-1.module+el8+5148+a558e3ee.x86_64 12/14 Verifying : php-soap-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 13/14 Verifying : php-xml-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 14/14 Installed: gd-2.2.5-7.el8.x86_64 jbigkit-libs-2.1-14.el8.x86_64 libXpm-3.5.12-9.el8_7.x86_64 libjpeg-turbo-1.5.3-12.el8.x86_64 libtiff-4.0.9-29.el8_8.x86_64 libwebp-1.0.0-9.el8_9.1.x86_64 libzip-1.5.1-2.module+el8.2.0+5510+6771133c.x86_64 php-gd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 php-mbstring-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 php-mysqlnd-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 php-pdo-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 php-pecl-zip-1.15.3-1.module+el8+5148+a558e3ee.x86_64 php-soap-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 php-xml-7.2.24-1.module+el8.2.0+5510+6771133c.x86_64 Complete! [opc@ih-webserver-01 html]$
-
Führen Sie den folgenden Befehl aus, um die Datei
php.ini
zu bearbeiten.[opc@ih-webserver-01 testocidb]$ sudo nano /etc/php.ini
-
Stellen Sie sicher, dass diese Zeile nicht kommentiert wird, damit das Modul
mysqli.so
geladen werden kann.extension=/usr/lib64/php/modules/mysqli.so
-
Verwenden Sie die folgenden Befehle, um die NGINX- und PHP-Services neu zu starten.
[opc@ih-webserver-01 testocidb]$ sudo systemctl start php-fpm [opc@ih-webserver-01 testocidb]$ sudo systemctl restart nginx
-
Auf der PHP Info Seite wird nun bestätigt, dass die PHP MySQL Module installiert sind.
-
In diesem Tutorial verwenden wir Oracle Linux 8, das auf SE Linux basiert. Sie müssen den folgenden Befehl ausführen, damit der Webserver (NGINX) eine Verbindung zur MySQL Database herstellen und darauf zugreifen kann.
[opc@ih-webserver-01 testocidb]$ sudo setsebool -P httpd_can_network_connect_db=1
Hinweis: Führen Sie den obigen Befehl nicht auf der PHP-Website aus. Dies kann zu einem Fehler führen: Verbindung konnte nicht hergestellt werden: Verbindung zum MySQL-Server kann nicht hergestellt werden.
Aufgabe 7: Website erstellen, die eine Verbindung zur Datenbank herstellt und die Datensätze auf einer Webseite anzeigt
-
Verwenden Sie den folgenden Befehl, um das Verzeichnis auf dem Webserver in den Standardpfad für die Webserverdateien zu ändern.
[opc@ih-webserver-01 ~]$ cd /usr/share/nginx/html/ [opc@ih-webserver-01 html]$ ls -l total 60 -rw-r--r--. 1 root root 168 Feb 8 07:47 404.php -rw-r--r--. 1 root root 497 Oct 24 16:50 50x.html -rw-r--r--. 1 root root 7 Feb 8 09:54 Color -rw-r--r--. 1 root root 9731 Feb 8 10:18 Iwan-hoogendoorn.logo.png -rw-r--r--. 1 root root 15406 Feb 8 10:07 favicon.ico drwxr-xr-x. 2 root root 101 Feb 8 09:59 files -rw-r--r--. 1 root root 8 Feb 8 09:52 health.html -rw-r--r--. 1 root root 622 Feb 7 18:13 index.html.original -rw-r--r--. 1 root root 6504 Feb 8 10:23 index.php -rw-r--r--. 1 root root 18 Feb 7 19:28 info.php [opc@ih-webserver-01 html]$
-
Um ein neues Verzeichnis für die neue Testwebseite zu erstellen, verwenden Sie den folgenden Befehl.
[opc@ih-webserver-01 html]$ sudo mkdir testocidb [opc@ih-webserver-01 html]$ ls -l total 60 -rw-r--r--. 1 root root 168 Feb 8 07:47 404.php -rw-r--r--. 1 root root 497 Oct 24 16:50 50x.html -rw-r--r--. 1 root root 7 Feb 8 09:54 Color -rw-r--r--. 1 root root 9731 Feb 8 10:18 Iwan-hoogendoorn.logo.png -rw-r--r--. 1 root root 15406 Feb 8 10:07 favicon.ico drwxr-xr-x. 2 root root 101 Feb 8 09:59 files -rw-r--r--. 1 root root 8 Feb 8 09:52 health.html -rw-r--r--. 1 root root 622 Feb 7 18:13 index.html.original -rw-r--r--. 1 root root 6504 Feb 8 10:23 index.php -rw-r--r--. 1 root root 18 Feb 7 19:28 info.php drwxr-xr-x. 2 root root 6 Feb 16 09:47 testocidb [opc@ih-webserver-01 html]$
-
Ändern Sie das Verzeichnis in das neu erstellte Verzeichnis, und erstellen Sie eine neue
index.php
-Datei.Diese Datei ist die Testwebsite für die Verbindung zur OCI-Datenbank, das Abrufen der Daten aus der Datenbank und das Anzeigen auf der Website.
[opc@ih-webserver-01 html]$ cd testocidb/ [opc@ih-webserver-01 testocidb]$ sudo nano index.php
-
Der HTML- und PHP-Code für die Test-Website finden Sie unten. Wenn Sie diese Webseite verwenden, müssen Sie die Datenbank-IP, den Namen, den Benutzernamen und das Kennwort ändern.
Je nach Datenbanktabelle und Datenstruktur können Sie den Code entsprechend Ihrem Beispiel ändern.
[opc@ih-webserver-01 testocidb]$ sudo more index.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Database Records</title> <style> table{ width: 70%; margin: auto; font-family: Arial, Helvetica, sans-serif; } table, tr, th, td{ border: 1px solid #d4d4d4; border-collapse: collapse; padding: 12px; } th, td{ text-align: left; vertical-align: top; } tr:nth-child(even){ background-color: #e7e9eb; } </style> <body> <?php //storing database details in variables. $hostname = "10.0.2.247"; $username = "iwan"; $password = "XXX"; $dbname = "F1"; //creating connection to database $con = mysqli_connect($hostname, $username, $password, $dbname); //checking if connection is working or not if(!$con) { die("<p><center>Connection failed! <br></center></p>" . mysqli_connect_error()); } else { echo "<p><center>Successfully Connected! <br></center></p>"; } //Output Form Entries from the Database $sql = "SELECT First_Name, Last_Name FROM drivers"; //fire query $result = mysqli_query($con, $sql); if(mysqli_num_rows($result) > 0) { echo '<table> <tr> <th> First Name </th> <th> Last Name </th> </tr>'; while($row = mysqli_fetch_assoc($result)){ // to output mysql data in HTML table format echo '<tr > <td>' . $row["First_Name"] . '</td> <td>' . $row["Last_Name"] . '</td>'; } echo '</table>'; } else { echo "0 results"; } // closing connection mysqli_close($con); ?> </body> </html> [opc@ih-webserver-01 testocidb]$
Wenn wir eine Verbindung zur Website /testocidb/index.php
herstellen, können wir erfolgreich auf die Website zugreifen, und vor allem werden wir die in der Datenbank gespeicherten Daten sehen.
Danksagungen
- Autor - Iwan Hoogendoorn (OCI Network Specialist)
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Create an Oracle Cloud Infrastructure Compute Instance Webserver using an OCI Database as the main Backend
F94436-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.