如何在 Ubuntu 20.04 Focal Fossa 上设置 LAMP 服务器
LAMP 是 Web 服务堆栈的传统模型。 LAMP 构建的组件都是开源的,包括:Linux 操作系统、Apache HTTP 服务器、MySQL 关系数据库管理系统和 PHP 编程语言。在这个简短的教程中,我们将在 Ubuntu 20.04 Focal Fossa 上配置基本的 LAMP 服务器。
您可能还对我们关于在 Ubuntu 20.04 上创建基于 docker 的 LAMP 堆栈的文章感兴趣。
在本教程中您将学习:
如何在 Ubuntu 20.04 上安装 LAMP 服务器。
如何打开防火墙端口以允许 HTTP 和 HTTPS 传入流量。
如何使用 PHP 脚本连接到 MySQL 数据库。
Ubuntu 20.04 Focal Fossa 上的 LAMP 服务器设置
在 Ubuntu 20.04 上设置 LAMP 服务器分步说明
您可以使用 apt 命令并包含最少数量的软件包来安装 LAMP 服务器堆栈:
$ sudo apt install php-mysql libapache2-mod-php mysql-server
或者使用
tasksel
命令:$ sudo tasksel install lamp-server
重启后启用Mysql/MariaDB和Apache:
$ sudo systemctl enable --now mysql $ sudo systemctl enable --now apache2
配置 MySQL/MariaDB 数据库。首先,执行安全安装:
$ sudo mysql_secure_installation
接下来,让我们使用 PHP 脚本以编程方式测试与 MySQL 数据库的连接。仅出于测试目的,我们将使用
LOW
密码策略。从命令行连接到 MySQL:root@linuxconfig:~# mysql -u root -p
在接下来的步骤中,我们将创建一个示例数据库和一个用户。首先,确认您的密码策略,然后创建新用户
admin
并授予该用户对新linuxconfig
数据库的完全权限:mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.01 sec) mysql> CREATE DATABASE linuxconfig; mysql> CREATE USER `admin`@`localhost` IDENTIFIED WITH mysql_native_password BY 'yourpass'; mysql> GRANT ALL ON linuxconfig.* TO `admin`@`localhost`; mysql> FLUSH PRIVILEGES;
接下来,创建以下 PHP 脚本,名为 例如:
/var/www/html/php-mysql-connect.php
连接到本地 MySQL 数据库:<?php $conn = new mysqli("localhost", "admin", "yourpass", "linuxconfig"); if ($conn->connect_error) { die("ERROR: Unable to connect: " . $conn->connect_error); } echo 'Connected to the database.
'; $conn->close(); ?>使脚本可执行:
$ sudo chmod +x /var/www/html/php-mysql-connect.php
准备好后,打开浏览器并导航至
http://localhost/php-mysql-connect.php
:在Ubuntu 20.04上使用PHP脚本连接MySQL数据库
(可选)启用
HTTPS
以提供与我们的 Apache Web 服务器的安全连接。请注意,我们将使用默认的 Apache2 设置和默认的自签名 SSL 证书:默认 SSL 证书
请注意,我们使用的是默认 SSL 证书。建议您上传 SSL 证书或使用 Let’s Encrypt 为您的域生成新证书。$ sudo a2ensite default-ssl $ sudo a2enmod ssl $ sudo systemctl restart apache2
$ sudo ufw allow in "Apache Full"
您现在可以使用以下内容创建以下脚本 /var/www/html/phpinfo.php
来查看您的 LAMP 配置设置和启用的模块:
<?php phpinfo(); ?>
不要忘记使 PHP 脚本可执行:
chmod +x /var/www/html/phpinfo.php
使用以下 URL 连接到您的 phpinfo.php
脚本:http://YOURSERVER-OR-IP/phpinfo.php
。
疑难解答
服务器请求客户端未知的身份验证方法
mysql> ALTER user 'username'@'localhost' identified with mysql_native_password by 'password';
错误 1819 (HY000):您的密码不满足当前策略要求
检查您的密码策略并确保给定的密码符合要求:
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
或者,切换到另一个密码策略。例如,以下命令将切换到 LOW
密码策略:
mysql> SET GLOBAL validate_password.policy = LOW;