附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用 OCI 資料庫作為主要後端,建立 Oracle Cloud Infrastructure Compute 執行處理 Web 伺服器
簡介
在本教學課程中,我們將建立一個由 Oracle Cloud Infrastructure (OCI) Compute 執行處理組成的兩層式應用程式,該執行處理將作為 Web 伺服器和 OCI 資料庫服務 (MySQL)。我們已建立範例網站和資料庫,此網站將從 OCI 資料庫表格擷取資料。
目標
-
我們將建立一個兩層式 Web 應用程式,在此使用 OCI 運算執行處理作為 PHP 和 NGINX Web 伺服器的前端公用網際網路,以及一個內含範例資料的專用 MySQL Database。安裝 PHP MySQL 模組並建立含有範例資料的資料庫,以順利存取網站和範例資料。
-
作業 1:建立新的虛擬雲端網路 (VCN)。
-
作業 2:建立新的公用子網路和專用子網路。
-
作業 3:建立新的 OCI Compute 執行處理。
-
作業 4:建立新的 MySQL Database 引擎。
-
工作 5:建立含有範例資料的新資料庫。
-
工作 6:使用 PHP 安裝並設定 NGINX Web 伺服器。
-
工作 7:建立連線至資料庫的網站,並在網頁上顯示記錄。
-
作業 1:建立新的虛擬雲端網路 (VCN)
我們已經建立 VCN,但是如果您仍然需要建立新的 VCN,請依照教學課程進行:建立啟用 IPv6 的新 VCN 。
按一下左上角的漢堡功能表。按一下虛擬雲端網路以確認虛擬雲端網路是否存在。
本教學課程已有 VCN。
作業 2:建立新的公用子網路和專用子網路
我們已經建立公用子網路和專用子網路,但是如果您仍然需要建立新的子網路,請依照教學課程進行:建立啟用 IPv6 的新公用子網路和在 VCN 內建立專用子網路。
在此 VCN 中,我們有一個可用的公用和專用子網路。我們會將 OCI Compute 執行處理連線至公用子網路,並將 OCI 資料庫連線至專用子網路。
若要複查可用的 OCI Compute 執行處理,請按一下左上角的漢堡功能表。
作業 3:建立新的 OCI Compute 執行處理
我們已經建立 OCI Compute 執行處理,但是如果您仍然需要建立新的 OCI Compute 執行處理,請依照教學課程進行:作業 3:建立啟用 IPv6 的新執行處理。
按一下執行處理以複查 OCI Compute 執行處理。
公用的運算執行處理已啟動並在執行中。
作業 4:建立新的 MySQL Database 引擎
-
按一下左上角的漢堡功能表。
- 按一下資料庫。
- 按一下 MySQL HeatWave 。
-
按一下建立資料庫系統。
-
在建立資料庫系統中,輸入下列資訊。
- 選取開發或測試。
- 輸入名稱。
- 向下拉清單。
-
在建立管理員證明資料段落中,輸入下列資訊。
- 輸入使用者名稱。
- 輸入密碼。
- 輸入確認密碼。
- 選取獨立。
- 向下拉清單。
- 選取資料庫的 VCN。
- 選取要連線資料庫的專用子網路。
- 向下拉清單。
-
向下拉清單。
-
按一下建立來建立資料庫。
-
複查資料庫狀態為 CREATING 。
複查資料庫狀態為 UPDATING 。
- 複查資料庫狀態為 ACTIVE 。
- 按一下連線頁籤。
請複查稍後將用來設定及存取 MySQL Database 的專用 IP 位址 10.0.2.247
。
工作 5:建立含有範例資料的新資料庫 (1 個含有 2 筆記錄的表格)
-
若要存取並設定 MySQL Database,我們需要安裝 MySQL Shell。請執行下列指令以進行安裝。
[opc@ih-webserver-01 ~]$ sudo yum install mysql-shell
-
如果要存取 MySQL Database,請使用下列命令。
注意:我們無法連線至 MySQL Database,原因是我們不允許預設安全清單上的資料庫連接埠。
-
按一下 OCI 主控台中的漢堡功能表。
- 按一下網路
- 按一下虛擬雲端網路。
-
按一下 VCN。
-
向下拉清單。
-
按一下安全清單和預設安全清單。
-
按一下新增傳入規則。
-
在新增傳入規則中,輸入下列資訊。
- 來源類型:選取 CIDR 。
- 來源 CIDR:若要允許來自所有來源的流量,請輸入
0.0.0.0/0
。 - IP 協定:選取 TCP 。
- 目標連接埠範圍:輸入 33060 。
- 按一下新增傳入規則。
-
按一下新增輸入規則。
-
在新增傳入規則中,輸入下列資訊。
- 來源類型:選取 CIDR 。
- 來源 CIDR:若要允許來自所有來源的流量,請輸入
0.0.0.0/0
。 - IP 協定:選取 TCP 。
- 目標連接埠範圍:輸入 33060 。
- 按一下新增傳入規則。
- 向下拉清單。
- 複查是否已設定 TCP 連接埠
33060
和3306
的規則。
-
將輸入規則新增至預設安全清單之後,便能夠使用 MySQL Shell,使用下列命令存取 OCI 資料庫。
[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 >
我們現在可以成功存取 OCI 資料庫。
-
使用 MySQL Shell 存取 OCI 資料庫之後,下列命令會啟用自動儲存、命令歷史記錄及模式,讓使用者更容易使用。
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')
-
若要顯示所有現有的資料庫,請使用下列命令。
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 >
-
若要建立新資料庫,請使用下列命令。
MySQL 10.0.2.247:33060+ ssl SQL > CREATE DATABASE F1; Query OK, 1 row affected (0.0066 sec)
-
若要確認資料庫已建立,請使用下列命令。
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 >
-
若要使用新資料庫 (建立表格與記錄),請使用下列命令。
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 >
-
若要顯示資料庫中的所有現有表格,請使用下列命令。
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 >
-
若要使用某些資料欄建立新表格,請使用下列命令。
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 >
-
若要驗證資料庫中的所有表格,請使用下列命令。
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 >
-
若要在表格內建立兩筆新記錄,請使用下列命令。
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 >
-
若要確認表格中已建立兩筆新記錄,請使用下列指令。
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 >
-
若要建立新使用者並提供新資料庫的適當權限,請使用下列命令。
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 >
-
若要確認新使用者對資料庫有適當的權限,請使用下列命令。
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 >
-
若要關閉 MySQL Shell,請執行
\q
命令。MySQL 10.0.2.247:33060+ ssl F1 SQL > \q Bye! [opc@ih-webserver-01 ~]$
現在,我們有一個範例資料庫,其中一些範例表格和範例資料使用 OCI Database MySQL 服務在 OCI 中執行。下一個任務是使用 PHP 網站擷取此資料。
工作 6:使用 PHP 安裝和設定 NGINX Web 伺服器
我們已經有一個已建立 NGNIX 和 PHP 的運算執行處理,但如果您仍然需要使用 NGNIX 和 PHP 建立新執行處理,請依照教學課程進行:工作 6:在執行處理上安裝 Web 伺服器。
在先前的 NGINX 設定 PHP 時,我們並未安裝任何 PHP MySQL 模組。在 PHP 資訊頁上快速檢查會確認這個問題。
-
使用下列命令來安裝 PHP MySQL 模組,以便 NGINX 和 PHP 可以與 MySQL 搭配使用。
[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]$
-
執行下列指令以編輯
php.ini
檔案。[opc@ih-webserver-01 testocidb]$ sudo nano /etc/php.ini
-
請確定此行未註釋,以便載入
mysqli.so
模組。extension=/usr/lib64/php/modules/mysqli.so
-
請使用下列指令重新啟動 NGINX 和 PHP 服務。
[opc@ih-webserver-01 testocidb]$ sudo systemctl start php-fpm [opc@ih-webserver-01 testocidb]$ sudo systemctl restart nginx
-
現在,「PHP 資訊」頁面會確認已安裝 PHP MySQL 模組。
-
本教學課程使用 Oracle Linux 8 且以 SE Linux 為基礎,因此必須執行下列命令,才能讓 Web 伺服器 (NGINX) 連線並存取 MySQL Database。
[opc@ih-webserver-01 testocidb]$ sudo setsebool -P httpd_can_network_connect_db=1
注意:請勿在 PHP 網站上執行以上可能造成錯誤的命令:無法連線:無法連線 MySQL 伺服器。
工作 7:建立連線至資料庫的網站並在網頁上顯示記錄
-
若要將 Web 伺服器上的目錄變更為 Web 伺服器檔案的預設路徑,請使用下列指令。
[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]$
-
若要建立新測試網頁的目錄,請使用下列命令。
[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]$
-
將目錄變更為新建立的目錄,並建立新的
index.php
檔案。此檔案將是連線至 OCI 資料庫、從資料庫提取資料並在網站上顯示該檔案的測試網站。
[opc@ih-webserver-01 html]$ cd testocidb/ [opc@ih-webserver-01 testocidb]$ sudo nano index.php
-
您可以在下方找到測試網站的 HTML 與 PHP 代碼。如果您使用此網頁,請務必變更資料庫 IP、名稱、使用者名稱和密碼詳細資訊。
視您的資料庫表格與資料結構而定,您可以變更代碼以反映您的範例。
[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]$
當我們連線至網站 /testocidb/index.php
時,我們能夠成功存取網站,最重要的是,我們將會看到儲存在資料庫中的資料。
認可
- 作者 - Iwan Hoogendoorn (OCI 網路專家)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Create an Oracle Cloud Infrastructure Compute Instance Webserver using an OCI Database as the main Backend
F94444-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.