在 Rocky Linux 9 上安装 Apache、MariaDB、PHP (LAMP) |
对于一般的 Web 开发和托管,您需要编程语言、数据库和 Web 服务器。 LAMP 堆栈是开源 Linux 工具的集合,其中包括 Apache、MySQL/MariaDB 和 PHP。这些工具紧密配合,使服务器能够托管和运行现代动态 Web 应用程序。
下面详细阐述了 LAMP 堆栈的组件:
- Apache:这是一个开源跨平台 Web 服务器,运行着世界上 67% 的网站。该软件由 Apache 软件基金会开发和维护。
- MariaDB:这是一个由 MySQL 的原始开发人员开发的关系数据库管理系统,并保证保持开源。
- PHP:这是超文本预处理器的缩写。这是一种开源通用脚本语言,用作 Web 应用程序的后端编程语言。此外,在创建 Web 应用程序时,这种语言还可以与 HTML 一起使用。 PHP 与 JavaScript 等其他语言的主要区别在于,代码在服务器上执行,生成 HTML 脚本并发送给客户端。
LAMP 堆栈如何工作?
Apache Web 服务器接收浏览器的网页请求。如果请求 PHP 文件,则会将请求传递给 PHP,然后 PHP 加载并执行文件中包含的代码。 PHP 还与数据库(MySQL/MariaDB)链接以获取代码中引用的任何数据。
然后,使用 PHP 代码和从数据库获取的数据来生成用于显示网页的 HTML 脚本。 LAMP 堆栈在处理加载时数据不时变化的静态和动态网页时非常有效。
然后 PHP 将这些结果传递回 Apache Web 服务器,然后 Apache Web 服务器将它们发送回浏览器。
在本指南中,我们将在 Rocky Linux 9 上安装和使用 Apache、MariaDB 和 PHP (LAMP)。
#1.在 Rocky Linux 9 上安装 Apache
这里要安装的第一个组件是 Apache Web 服务器。该软件在 Rocky Linux 存储库中作为 httpd
提供。要安装它,请执行命令:
sudo dnf install httpd
依赖树:
Transaction Summary
================================================================================
Install 10 Packages
Total download size: 1.9 M
Installed size: 5.9 M
Is this ok [y/N]: y
安装后,启动并启用该服务:
sudo systemctl enable --now httpd
检查服务的状态:
$ systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-07-19 11:29:32 CEST; 10s ago
Docs: man:httpd.service(8)
Main PID: 2287 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
Tasks: 213 (limit: 23441)
Memory: 35.0M
CPU: 64ms
CGroup: /system.slice/httpd.service
├─2287 /usr/sbin/httpd -DFOREGROUND
├─2288 /usr/sbin/httpd -DFOREGROUND
├─2289 /usr/sbin/httpd -DFOREGROUND
├─2290 /usr/sbin/httpd -DFOREGROUND
└─2291 /usr/sbin/httpd -DFOREGROUND
您还可以通过访问浏览器上的默认页面来验证 Apache 是否正在运行。首先,允许 HTTP 流量通过防火墙:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
使用 URL http://IP_Address 或 http://domain_name 访问网页
#2.在 Rocky Linux 9 上安装 MariaDB
我们需要一个用于网络托管的数据库服务器。这里有两个选项,MySQL 或 MariaDB 数据库。在本指南中,我们将选择 MariaDB 数据库,因为它具有高性能的存储引擎、更快、更安全的复制以及与 MySQL 的兼容性。
Rocky Linux 9 在默认存储库中提供 MariaDB 10。可以使用以下命令安装:
sudo dnf install mariadb-server mariadb
安装后,启动并启用 MariaDB 服务:
sudo systemctl enable --now mariadb
验证服务是否正在运行:
$ systemctl status mariadb
● mariadb.service - MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-07-19 11:31:24 CEST; 1s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 3609 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
Process: 3631 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 3724 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
Main PID: 3711 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 12 (limit: 23441)
Memory: 70.8M
CPU: 254ms
CGroup: /system.slice/mariadb.service
└─3711 /usr/libexec/mariadbd --basedir=/usr
默认情况下,MariaDB 不安全,这可能会导致漏洞。要保护它,请按如下所示操作:
$ sudo mysql_secure_installation
....
Enter current password for root (enter for none): Just press Enter
......
Switch to unix_socket authentication [Y/n] Y
.....
Change the root password? [Y/n] Y
New password: New-root-password
Re-enter new password: Re-enter New-root-password
....
Remove anonymous users? [Y/n] Y
....
Disallow root login remotely? [Y/n] Y
.....
Remove test database and access to it? [Y/n] Y
......
Reload privilege tables now? [Y/n] Y
...
Thanks for using MariaDB!
验证是否可以使用创建的密码登录:
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.13-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SELECT VERSION();
+-----------------+
| VERSION() |
+-----------------+
| 10.5.13-MariaDB |
+-----------------+
1 row in set (0.000 sec)
MariaDB [(none)]> QUIT
Bye
#3。在 Rocky Linux 9 上安装 PHP
Rocky Linux 9 存储库中可用的默认 PHP 版本是 PHP 8.0。此版本包含错误修复和增强功能,包括使用结构化元数据语法、与顺序无关的新命名参数以及改进的即时编译性能。
使用以下命令安装 PHP 8.0 及其依赖项:
sudo dnf install php-{common,gmp,fpm,curl,intl,pdo,mbstring,gd,xml,cli,zip,mysqli}
检查PVH版本:
$ php --version
PHP 8.0.13 (cli) (built: Nov 16 2021 18:07:21) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
也可以安装其他 PHP 版本。这可以通过添加 Remi 和 EPEL 存储库来完成:
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
添加后,列出可用的 PHP 版本:
$ sudo dnf module list php
Last metadata expiration check: 0:43:34 ago on Tue 19 Jul 2022 01:42:06 PM CEST.
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4[e] common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
启用并安装首选版本,例如 PHP 8.1 ,如图所示
sudo dnf module enable php:remi-8.1 -y
现在安装 PHP 及其依赖项:
sudo dnf install php-{common,gmp,fpm,curl,intl,pdo,mbstring,gd,xml,cli,zip,mysqli}
验证安装。
$ php --version
PHP 8.1.8 (cli) (built: Jul 5 2022 21:55:55) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.8, Copyright (c) Zend Technologies
with Zend OPcache v8.1.8, Copyright (c), by Zend Technologies
#4。在 Rocky Linux 9 上为 Apache 配置 PHP
要配置 PHP,请打开以下文件:
sudo vi /etc/php.ini
在文件中进行所需的设置。例如:
max_execution_time = 300
upload_max_filesize = 100M
post_max_size = 128M
date.timezone = Africa/Nairobi
进行所需的更改后,允许 Apache 加载 PHP 文件:
$ sudo vi /etc/httpd/conf/httpd.conf
# LoadModule foo_module modules/mod_foo.so
AddHandler php-script .php
您还可以使用以下命令创建测试 PHP 文件来检查 PHP 版本:
sudo vi /var/www/html/info.php
将以下行添加到文件中:
<?php
phpinfo();
?>
保存文件并重新启动 Apache 和 PHP-FPM:
sudo systemctl restart php-fpm
sudo systemctl restart httpd
使用 URL http://IP_Address/info.php 访问显示 PHP 参数的页面
删除测试脚本:
sudo rm /var/www/html/info.php
#5。为您的站点创建 Apache 虚拟主机文件
为了能够通过浏览器访问站点,您需要为该站点创建虚拟主机文件。在本指南中,我们将配置 Apache 以提供示例页面,如图所示。
创建虚拟主机文件:
sudo vi /etc/httpd/conf.d/yourdomain.conf
在该文件中,添加以下行:
<VirtualHost *:80>
ServerName test.example.com
DocumentRoot /var/www/html/
ErrorLog /var/log/httpd/error.log
CustomLog /var/log/httpd/requests.log combined
</VirtualHost>
在指定的文档根目录中创建文件:
sudo vi /var/www/html/index.html
添加以下行:
<html>
<head>
<title>This is a test page</title>
</head>
<body>
<h1>LAMP Stack is working perfectly on Rocky Linux 9!</h1>
</body>
</html>
重新启动阿帕奇:
sudo systemctl restart httpd
现在使用 URL http://IP_address 或 http://domain_name 访问网页
删除测试页:
sudo rm /var/www/html/index.html
#6。托管具有数据库连接的 PHP 应用程序
为了测试 LAMP 堆栈的更好工作,我们将配置 PHP 网站以连接到 MySQL 数据库。使用以下步骤。
首先创建一个数据库。
mysql -u root -p
使用下表创建数据库
CREATE DATABASE db_contact;
USE db_contact;
CREATE TABLE tbl_contact (Id INT,fldName VARCHAR(50), fldEmail VARCHAR(30), fldPhone VARCHAR(15),fldMessage VARCHAR(1000));
EXIT
创建用于连接数据库的 HTML 表单:
sudo mkdir /var/www/html/contacts
sudo vi /var/www/html/contacts/contact.html
将以下行添加到文件中:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Contact Form - PHP/MySQL Demo Code</title>
</head>
<body>
<fieldset>
<legend>Contact Form</legend>
<form name="frmContact" method="post" action="contact.php">
<p>
<label for="Name">Name </label>
<input type="text" name="txtName" id="txtName">
</p>
<p>
<label for="email">Email</label>
<input type="text" name="txtEmail" id="txtEmail">
</p>
<p>
<label for="phone">Phone</label>
<input type="text" name="txtPhone" id="txtPhone">
</p>
<p>
<label for="message">Message</label>
<textarea name="txtMessage" id="txtMessage"></textarea>
</p>
<p> </p>
<p>
<input type="submit" name="Submit" id="Submit" value="Submit">
</p>
</form>
</fieldset>
</body>
</html>
现在创建一个 PHP 脚本来将 HTML 表单中的数据保存到数据库中:
sudo vi /var/www/html/contacts/contact.php
添加以下行:
<?php
// database connection code
// $con = mysqli_connect('localhost', 'database_user', 'database_password','database');
$con = mysqli_connect('localhost', 'root', 'root_password','db_contact');
// get the post records
$txtName = $_POST['txtName'];
$txtEmail = $_POST['txtEmail'];
$txtPhone = $_POST['txtPhone'];
$txtMessage = $_POST['txtMessage'];
// database insert SQL code
$sql = "INSERT INTO `tbl_contact` (`Id`, `fldName`, `fldEmail`, `fldPhone`, `fldMessage`) VALUES ('0', '$txtName', '$txtEmail', '$txtPhone', '$txtMessage')";
// insert in database
$rs = mysqli_query($con, $sql);
if($rs)
{
echo "Contact Records Inserted";
}
?>
请记住将 root_password 和db_contact 替换为数据库名称。保存文件后,使用 URL http://domain_name/contacts/contact.html 加载页面
填写表格并提交更改
验证数据是否已添加到数据库:
$ mysql -u root -p
Enter password:
MariaDB [(none)]> SELECT * FROM db_contact. tbl_contact;
示例输出:
这就对了!。我们现在可以清理测试:
sudo rm -rf /var/www/html/contacts
推荐阅读书籍:
- 学习 Web 开发的最佳书籍 - PHP、HTML、CSS、JavaScript 和 jQuery
- 掌握网页设计的最佳书籍
- 学习 CSS 和 CSS3 的最佳书籍
- 学习 HTML 和 HTML5 的最佳书籍
- 最佳 Apache 和 Nginx 参考书
结束语
这标志着本关于如何在 Rocky Linux 9 上安装 Apache、MariaDB 和 PHP (LAMP) 的指南的结束。我希望这对您很重要。
查看更多: