此案例使用的阿里云的服务器。
介绍
“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_socket
为mysql_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