Ubuntu 20.04 LTS上安装Apache,MySQL,PHP( LAMP 堆栈)
LAMP 堆栈是一个流行的开源Web开发平台,可用于运行和部署动态和基于Web的应用程序。
通常, LAMP 堆栈由Apache WebServer,MariadB/MySQL数据库,PHP/Python/Perl编程语言组成。
灯是Linux,Apache,Mariadb/MySQL,PHP/Python/Perl的首字母缩略词。
这一步骤本教程描述了如何在Ubuntu 20.04 LTS服务器版上安装Apache,MySQL,PHP(Lamp Stack)。
Ubuntu 20.04 LTS上安装Apache,MySQL,PHP( LAMP 堆栈)
出于本教程的目的,我们将使用以下Ubuntu系统。
- 操作系统:Ubuntu 20.04 LTS服务器版
- IP地址:192.168.225.52/24
1.在Ubuntu中安装Apache Web服务器
首先,使用命令更新Ubuntu Server:
$sudo apt update
$sudo apt upgrade
接下来,安装Apache Web服务器:
$sudo apt install apache2
检查Apache Web服务器是否正在运行或者没有命令:
$sudo systemctl status apache2
示例输出将是:
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl> Active: active (running) since Fri 2017-05-29 07:02:26 UTC; 25s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 23996 (apache2) Tasks: 55 (limit: 2283) Memory: 5.1M CGroup: /system.slice/apache2.service ├─23996 /usr/sbin/apache2 -k start ├─23998 /usr/sbin/apache2 -k start └─23999 /usr/sbin/apache2 -k start Jan 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server... Jan 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det> Jan 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.
恭喜! Apache服务已启动并运行!!
1.1通过UFW防火墙允许Apache Web服务器
UFW,代表简单的防火墙,是一个管理NetFilter防火墙的程序,旨在易于使用。
默认情况下,UFW可用于所有Ubuntu版本。
默认情况下,如果我们在Ubuntu 20.04 LTS中启用了UFW防火墙,则无法从远程系统访问Apache Web浏览器。
我们必须按照下面给出的步骤允许HTTP和HTTPS端口。
首先,使用命令列出Ubuntu系统上可用的应用程序配置文件:
$sudo ufw app list
示例输出:
Available applications: Apache Apache Full Apache Secure OpenSSH
如我们所见,Apache和OpenSSH应用程序已安装UFW配置文件。
我们可以使用UFW app Info"profile name"命令列出有关每个配置文件的信息及其附带的规则。
让我们使用命令查看"Apache完整"配置文件:
$sudo ufw app info "Apache Full"
示例输出:
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp
如我们所见,"Apache完整"配置文件包含规则,以使流量能够向端口80和443提供:
现在,运行以下命令以允许此配置文件传入HTTP和HTTPS流量:
$sudo ufw allow in "Apache Full"
我们将看到如下所示的输出:
Rules updated Rules updated (v6)
如果我们不想允许HTTPS流量,但只有HTTP(80)流量,运行:
$sudo ufw app info "Apache"
1.2测试Apache Web服务器
现在,通过导航到http://localhost /或者http://IP-Address /来打开Web浏览器和访问Apache测试页面。
如果我们看到"Apache 2 Ubuntu默认页面"如下所示,我们将很好。
Apache服务器正在工作!
2.在Ubuntu安装MySQL
要在Ubuntu上安装mysql,请运行:
$sudo apt install mysql-server
验证MySQL服务是否正在运行或者不使用命令:
$sudo systemctl status mysql
示例输出:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2017-05-29 07:15:22 UTC; 2min 8s ago Main PID: 25242 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 2283) Memory: 323.7M CGroup: /system.slice/mysql.service └─25242 /usr/sbin/mysqld Jan 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server... Jan 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.
当我们在上面的输出中看到,MySQL正在运行!
2.1 MySQL的设置数据库管理用户(root)密码
默认情况下,MySQL root用户密码为空。
建议不要为数据库管理帐户使用空密码。
我们需要通过运行以下脚本来保护MySQL服务器:
$sudo mysql_secure_installation
将询问我们是否要设置"验证密码"组件。
此组件允许用户为数据库凭据配置强密码。
如果已启用,它将自动检查密码的强度,并强制执行用户只设置足够安全的密码。
让它禁用是安全的。
但是,我们必须使用强大而独特的数据库凭据密码。
如果我们不想启用此组件,只需按任意键即可跳过密码验证部分并继续其余步骤。
如果要设置验证密码组件,请输入"y":
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
如果答案是肯定的,我们将被要求选择密码验证级别。
可用的密码验证低,中等和强。
只需输入适当的数字(0为低,为中频为1,为强密码),然后点击Enter键。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
现在,输入MySQL root用户的密码。
请注意,我们必须根据我们在上一步中选择的密码策略使用MySQL root用户的密码。
如果我们没有启用插件,只需使用我们选择的任何强大和唯一密码。
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
一旦输入密码两次,我们将看到密码强度(在我们的情况下是100)。
如果它对我们可以,请按Y继续提供的密码。
如果不满意密码长度,请按任何其他键并设置强密码。
我对当前的密码好,所以我选择了y。
对于剩下的问题,只需键入y并按Enter键。
这将删除匿名用户,禁止远程删除root用户登录并删除测试数据库。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
完毕!我们已经设置了MySQL root用户的密码。
2.2更改MySQL root用户的身份验证方法
默认情况下,MySQL root用户将使用从MySQL 5.7和Ubuntu上的较新版本开始使用"auth_socket"插件进行身份验证。
即使它增强了安全性,它也将使用任何外部程序访问数据库服务器时,它也将复杂化,例如PHPMyAdmin。
要解决此问题,我们需要将Auth_socket的身份验证方法更改为"caching_sha2_password"或者"mysql_native_password"。
正如MySQL 8.0版本,首选和默认身份验证插件是CACHING_SHA2_PASSWORD。
CACHING_SHA2_PASSWORD认证插件提供比MYSQL_NITIVE_PASSWORD插件更安全的密码加密。
要使用命令更改身份验证插件,请使用命令登录MySQL提示符:
$sudo mysql
在MySQL提示符下运行以下命令以查找所有MySQL用户帐户的当前身份验证方法:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
示例输出:
+------------------+------------------------------------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ | debian-sys-maint | $Amysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';5$=s%UO"�Hyman@theitroad>Hyman@theitroad | caching_sha2_password | localhost | | mysql.infoschema | $Amysql> FLUSH PRIVILEGES;5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.session | $Amysql> SELECT user,authentication_string,plugin,host FROM mysql.user;5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | mysql.sys | $Amysql> exit5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost | | root | | auth_socket | localhost | +------------------+------------------------------------------------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)
如我们所见,MySQL root用户使用auth_socket插件进行身份验证。
要将auth_socket插件更改为caching_sha2_password,请在mysql提示符下运行以下命令。
如果已启用验证密码插件,请确保根据当前的策略要求使用强密码。
强势应该由至少8个字符组成,包括大写字母,小写字母,数字和特殊字符。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
替换"password123#@!"在上面的命令中拥有强大而独特的密码。
使用命令更新更改:
mysql> FLUSH PRIVILEGES;
现在检查当前的身份验证插件是否已更改或者不使用命令:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
示例输出:
好的!现在MyQL root用户可以使用密码进行身份验证以访问MySQL shell。
退出MySQL提示符:
mysql> exit
说明:
尽管CACHING_SHA2_PASSWORD插件提供增强的安全加密,但它具有带有现有MYSQL安装的兼容性问题。
有关详细信息,请参阅此链接。
如果我们遇到任何兼容性问题,则需要将"mysql_native_password"插件设置为默认身份验证插件。
要更改为mysql_native_password插件,请在mysql提示符下运行以下命令。
$sudo apt install php libapache2-mod-php php-mysql
使用命令更新更改:
$sudo vi /var/www/html/info.php
现在,如果已更改身份验证方法或者不使用命令,请再次检查:
<?php phpinfo(); ?>
退出MySQL提示符:
$sudo systemctl restart apache2
3.在Ubuntu中安装PHP
要安装PHP,请运行:
$sudo vi /etc/apache2/mods-enabled/dir.conf
安装PHP后,在Apache根文档文件夹中创建Info.php文件。
通常,apache根文档文件夹将是/var/www/html /或者/var/var/www /在大多数基于Debian的Linux发行版中。
在Ubuntu 20.04 LTS中,它是/var/www/html /。
让我们在Apache根文件夹中创建Info.php文件:
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
添加以下行:
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
按Esc键和类型:WQ保存并退出文件。
重新启动Apache服务以生效更改。
$sudo systemctl restart apache2
3.1测试PHP.
打开Web浏览器并导航到http://ip-address/info.php url。
我们将看到PHP信息,如版本,服务器API和所有已启用的PHP插件的详细信息。
通常,当用户从Web服务器请求目录时,Apache将首先查找名为index.html的文件。
如果要更改Apache以提供PHP文件而不是其他文件,请将index.php移动到dir.conf文件中的第一个位置,如下所示
$sudo apt-cache search php- | less
这是上述文件的内容。
$sudo apt-cache show php-gd
将"index.php"文件移动到首先。
一旦我们进行了更改,Dir.conf文件将如下所示。
$sudo apt install php-gd
按ESC键和类型:WQ保存并关闭文件。
重新启动Apache服务以生效更改。
3.2安装PHP模块
为了提高PHP的功能,我们可以安装一些另外的PHP模块。
要列出可用的PHP模块,请运行:
##代码##示例输出:
使用箭头键通过结果。
退出,键入q。
要查找任何特定PHP模块的详细信息,例如PHP-GD,运行:
##代码##要安装PHP模块运行:
##代码##安装PHP模块后,请勿忘记重新启动Apache服务。
要检查模块是否已加载,请在浏览器中打开Info.php文件,并检查是否存在。
如我们所见,在Ubuntu 20.04 LTS上安装Apache,MySQL,PHP( LAMP 堆栈)非常容易。