如何在Ubuntu 18.04上安装Apache,MySQL,PHP(LAMP)堆栈

如何在Ubuntu 18.04上安装Apache,MySQL,PHP(LAMP)堆栈

此案例使用的阿里云的服务器。

介绍

“LAMP”堆栈是一组开源软件,通常安装在一起以使服务器能够托管动态网站和Web应用程序。这个术语实际上是一个缩写,代表L inux操作系统,带有A pache Web服务器。站点数据存储在M ySQL数据库中,动态内容由P HP 处理。

在本指南中,我们将在Ubuntu 18.04服务器上安装LAMP堆栈。

先决条件

为了完成本教程,您需要拥有一个Ubuntu 18.04服务器,该服务器具有非root sudo用户帐户和基本防火墙。这可以使用我们的Ubuntu 18.04初始服务器设置指南进行配置。

第1步 – 安装Apache并更新防火墙

以非root用户登录服务器

安装使用Apache Ubuntu的软件包管理器,apt

Apache Web服务器是世界上最受欢迎的Web服务器之一。它有很好的文档记录,并且已广泛用于网络的大部分历史,这使其成为托管网站的绝佳选择。

sudo apt update
sudo apt install apache2

由于这是一个sudo命令,因此这些操作以root权限执行。它将询问您的常规用户密码以验证您的意图。

输入密码后,apt会告诉您计划安装哪些软件包以及它们将占用多少额外磁盘空间。输入Y和命中ENTER继续,安装将继续进行。

安装完之后,登录阿里云服务器, 找到实例服务器 增加安全配置规则:网络与安全—安全组— 配置规则 。

您可以立即通过在Web浏览器中访问服务器的公共IP地址来验证所有内容是否按计划进行检查(如果您没有此信息,请参阅下一个标题下的说明以了解您的公共IP地址是什么已经):

http://your_server_ip

您将看到默认的Ubuntu 18.04 Apache网页,该网页用于提供信息和测试目的。它应该看起来像这样:

如何查找服务器的公共IP地址

如果您不知道服务器的公共IP地址是什么,可以通过多种方式找到它。通常,这是您用于通过SSH连接到服务器的地址。

有几种不同的方法可以从命令行执行此操作。首先,您可以使用这些iproute2工具来输入以下内容来获取您的IP地址:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

这将为您提供两到三行。它们都是正确的地址,但您的计算机可能只能使用其中一个,所以请随意尝试每一个。

另一种方法是使用该curl实用程序联系外部方以告诉您如何看到您的服务器。这是通过询问特定服务器的IP地址来完成的:

sudo apt install curl
curl http://icanhazip.com

无论您使用何种方法获取IP地址,请将其输入Web浏览器的地址栏以查看默认的Apache页面。

查找服务器的公共ip地址最简单的办法是登录阿里云服务器查看。

第2步 – 安装MySQL

现在您已启动并运行Web服务器,现在是安装MySQL的时候了。MySQL是一个数据库管理系统。基本上,它将组织并提供对您的站点可以存储信息的数据库的访问。

再次,用于apt获取和安装此软件:

sudo apt install mysql-server

注意:在这种情况下,您不必sudo apt update在命令之前运行。这是因为您最近在上面的命令中运行它来安装Apache。您计算机上的软件包索引应该已经是最新的。

此命令也会显示将要安装的软件包列表,以及它们将占用的磁盘空间量。输入Y继续。

安装完成后,运行一个预先安装了MySQL的简单安全脚本,它将删除一些危险的默认值并锁定对数据库系统的访问。运行以下命令启动交互式脚本:
sudo mysql_secure_installation

系统将要求您输入为MySQL root帐户设置的密码。接下来,它会询问您是否要更改该密码。如果您对当前密码感到满意,请在提示符下键入“否”为“否”。

对于其他问题,您只需在每个提示中单击“ENTER”键即可接受默认值。这将删除一些示例用户和数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重我们所做的更改。

此时,您的数据库系统现已设置完毕,我们可以继续前进。

对于这些问题,新闻界的休息Y和打ENTER在每个提示键。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。

对于这些问题,新闻界的休息Y和打ENTER在每个提示键。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。

请注意,在运行MySQL 5.7(及更高版本)的Ubuntu系统中, MySQL用户设置为auth_socket默认使用插件进行身份验证,而不是使用密码进行身份验证。在许多情况下,这允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)访问用户时,它也会使事情变得复杂。

如果您希望在以root身份连接到MySQL时使用密码,则需要将其身份验证方法从切换auth_socketmysql_native_password。为此,请从终端打开MySQL提示符:

sudo mysql

接下来,使用以下命令检查每个MySQL用户帐户使用的身份验证方法:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

在此示例中,您可以看到root用户实际上使用auth_socket插件进行身份验证。要配置root帐户以使用密码进行身份验证,请运行以下ALTER USER命令。请务必更改password为您选择的强密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

然后,运行FLUSH PRIVILEGES告诉服务器重新加载授权表并使新的更改生效:

FLUSH PRIVILEGES;

再次检查每个用户使用的身份验证方法,以确认root用户不再使用该auth_socket插件进行身份验证:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

您可以在此示例输出中看到 MySQL用户现在使用密码进行身份验证。在您自己的服务器上确认后,您可以退出MySQL shell:

mysql ->exit 

此时,您的数据库系统现已设置完毕,您可以继续安装PHP,即LAMP堆栈的最终组件。

第3步 – 安装PHP7.1

使用以下命令集在Ubuntu系统中添加PHP 7 for PPA并安装PHP 7.1版本。

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej / php
sudo apt-get update
sudo apt-get install -y php7.1

现在使用以下命令检查系统上已安装的php版本。

php -v 

PHP 7.1.27-1 + ubuntu18.04.1 + deb.sury.org + 1(cli)(内置:2019年3月7日20:02:25)(NTS)
版权所有(c)1997-2018 PHP小组
Zend Engine v3.1.0,版权所有(c)1998-2018 Zend Technologies
    使用Zend OPcache v7.1.27-1 + ubuntu18.04.1 + deb.sury.org + 1,版权所有(c)1999-2018,作者:Zend Technologies

这应该没有任何问题安装PHP。我们马上就会测试一下。

在大多数情况下,您需要修改Apache在请求目录时提供文件的方式。目前,如果用户从服务器请求目录,Apache将首先查找名为的文件index.html。我们想告诉Web服务器更喜欢PHP文件而不是其他文件,所以让Apache首先查找index.php文件。

安装方法参考:
https://tecadmin.net/install-php-7-on-ubuntu/

为此,请键入以下命令以dir.conf使用root权限在文本编辑器中打开文件:

sudo vim /etc/apache2/mods-enabled/dir.conf

它看起来像这样:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

将PHP索引文件(上面突出显示)移动到DirectoryIndex规范后的第一个位置,如下所示:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

完成后,按,保存 然后单击ENTER以验证文件保存位置。

在此之后,重新启动Apache Web服务器以便识别您的更改。键入以下命令:

sudo  systemctl restart apache2

您也可以检查的状态apache2使用的服务systemctl

sudo systemctl status apache2

按此Q键退出此状态输出。

要增强PHP的功能,您可以选择安装一些其他模块。要查看PHP模块和库的可用选项,请将结果apt search输入到less一个分页器中,该分页器允许您滚动浏览其他命令的输出:

apt search php- | less

使用箭头键向上和向下滚动,然后按Q退出。

结果是您可以安装的所有可选组件。它会给你一个简短的描述:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

要了解有关每个模块的功能的更多信息,您可以在互联网上搜索有关它们的更多信息。或者,通过键入以下内容来查看包的长描述:

apt show package_name

将会有很多输出,其中一个字段被调用Description,它将对模块提供的功能有更长的解释。

例如,要找出php-cli模块的功能,可以输入:

apt show php-cli

除了大量其他信息外,您还可以找到如下所示的内容:

Output…
Description: command-line interpreter for the PHP scripting language (default)
 This package provides the /usr/bin/php command interpreter, useful for
 testing PHP scripts from a shell or performing general shell scripting tasks.
 .
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Ubuntu's default
 PHP version (currently 7.2).
…

如果在研究之后,您决定要安装软件包,则可以apt install像使用其他软件一样使用该命令。

如果您认为这php-cli是您需要的东西,您可以输入:

sudo apt install php-cli

如果要安装多个模块,可以按照apt install命令列出每个模块,用空格分隔,如下所示:

sudo apt install package1 package2 ...

此时,您的LAMP堆栈已安装并配置完毕。但是,在进行任何更改或部署应用程序之前,如果有任何问题需要解决,主动测试PHP配置会很有帮助。

第4步 – 在Web服务器上测试PHP处理

为了测试您的系统是否为PHP正确配置,请创建一个非常基本的PHP脚本info.php。为了让Apache找到这个文件并正确地提供它,它必须保存到一个非常特定的目录,称为“web root”。

在Ubuntu 18.04中,该目录位于/var/www/html/。通过运行以下命令在该位置创建文件:

sudo nano /var/www/html/info.php

这将打开一个空白文件。在文件中添加以下文本,它是有效的PHP代码:info.php的

<?php
phpinfo();
?>

完成后,保存并关闭文件。

现在,您可以测试您的Web服务器是否能够正确显示此PHP脚本生成的内容。要试用此功能,请在Web浏览器中访问此页面。您将再次需要服务器的公共IP地址。

您要访问的地址是:

http://your_server_ip/info.php

您访问的页面应如下所示:

此页面从PHP的角度提供有关服务器的一些基本信息。它对于调试很有用,并确保正确应用您的设置。

如果您可以在浏览器中看到此页面,那么您的PHP正在按预期工作。

您可能希望在此测试后删除此文件,因为它实际上可以向未经授权的用户提供有关您的服务器的信息。为此,请运行以下命令:

sudo rm /var/www/html/info.php

如果您以后需要再次访问该信息,则可以随时重新创建此页面。

默认是占用80端口的。

如何创建一个虚拟机主机

1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注