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

“LAMP”是一组开源软件,通常安装在一起以使服务器能够托管动态网站和Web应用程序。该通常由Linux操作系统,Apache Web服务器,MySQL数据库和PHP(动态内容处理器)组成。本教程将作为在Ubuntu 18.04服务器上安装这些组件的指南。

本教程的以前版本由Brennan Bearnes编写

介绍

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

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

先决条件

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

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

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

使用Ubuntu的包管理器apt安装Apache:

sudo apt update
sudo apt install apache2

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

一旦你输入了你的密码, apt会告诉你它计划安装哪些软件包,以及他们将占用多少额外的磁盘空间。 Y ENTER继续,安装将继续。

调整防火墙以允许Web通信

接下来,假设您已经遵循了最初的服务器设置说明并启用了UFW防火墙,请确保您的防火墙允许HTTP和HTTPS流量。 您可以检查UFW是否具有Apache的应用程序配置文件,如下所示:

sudo ufw app list
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

如果您查看Apache Full配置文件,它应该显示它启用到端口80443流量:

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

允许此配置文件的传入HTTP和HTTPS流量:

sudo ufw allow in "Apache Full"

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

http://your_server_ip

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

Ubuntu 18.04 Apache默认

如果您看到此页面,则您的Web服务器现在可以正确安装并通过防火墙访问。

如何查找您的服务器的公共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页面。

第2步 - 安装MySQL

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

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

sudo apt install mysql-server

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

您将再次看到将要安装的软件包列表,以及它们将占用的磁盘空间量。 输入Y继续。

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

sudo mysql_secure_installation

系统会询问您是否要配置VALIDATE PASSWORD PLUGIN

注意:启用此功能是一个判断呼叫。 如果启用,与指定条件不匹配的密码将被MySQL拒绝并出现错误。 如果您将弱密码与自动配置MySQL用户凭证的软件(例如用于phpMyAdmin的Ubuntu软件包)结合使用,这会造成问题。 禁用验证是安全的,但您应该始终使用强大,唯一的数据库凭证密码。

回答是,或者其他任何事情都可以继续而不启用。

VALIDATE PASSWORD PLUGIN 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 plugin?

Press y|Y for Yes, any other key for No:

如果您回答“是”,则会要求您选择一个密码验证级别。 请记住,如果您输入2作为最强级别,则在尝试设置不包含数字,大小写字母和特殊字符的密码或基于常用字典单词的密码时,您将收到错误。

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: 1

无论您是否选择设置VALIDATE PASSWORD PLUGIN ,服务器都会要求您选择并确认MySQL root用户的密码。 这是MySQL中具有增加权限的管理帐户。 可以认为它与服务器本身的帐户相似(尽管您现在正在配置的是特定于MySQL的帐户)。 确保这是一个强大的,唯一的密码,并且不要留空。

如果您启用了密码验证,则会显示刚输入的根密码的密码强度,并且服务器会询问您是否要更改该密码。 如果您对当前密码感到满意,请在提示处输入N作为“否”

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

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

此时,您的数据库系统现在已经建立,您可以继续安装PHP,它是LAMP的最后一个组件。

第3步 - 安装PHP

PHP是您的设置的组件,它将处理代码以显示动态内容。 它可以运行脚本,连接到您的MySQL数据库以获取信息,并将处理后的内容交给您的Web服务器进行显示。

再一次,利用apt系统安装PHP。 另外,这次包含一些帮助程序包,以便PHP代码可以在Apache服务器下运行并与您的MySQL数据库交谈:

sudo apt install php libapache2-mod-php php-mysql

这应该安装PHP没有任何问题。 我们稍后会对此进行测试。

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

为此,请输入以下命令以具有root权限的文本编辑器打开dir.conf文件:

sudo nano /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>

完成后,按CTRL+X保存并关闭文件。 通过输入Y确认保存,然后按ENTER确认文件保存位置。

之后,重新启动Apache Web服务器以便识别您的更改。 输入以下内容来完成此操作

sudo systemctl restart apache2

您还可以使用systemctl apache2服务的状态:

sudo systemctl status apache2
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 6 (limit: 512)
   CGroup: /system.slice/apache2.service
           ├─13623 /usr/sbin/apache2 -k start
           ├─13626 /usr/sbin/apache2 -k start
           ├─13627 /usr/sbin/apache2 -k start
           ├─13628 /usr/sbin/apache2 -k start
           ├─13629 /usr/sbin/apache2 -k start
           └─13630 /usr/sbin/apache2 -k start

为了增强PHP的功能,您可以选择安装一些额外的模块。 要查看PHP模块和库的可用选项,请将apt search的结果apt searchless ,这是一种可让您滚动浏览其他命令输出的分页器:

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

随着大量的其他信息,你会发现这样的东西:

…
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,请创建一个名为info.php的非常基本的PHP脚本。 为了让Apache找到这个文件并正确提供它,它必须保存到一个非常特定的目录中,这个目录称为“web根目录”。

在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

你来的页面应该是这样的:

Ubuntu 18.04默认PHP信息

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

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

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

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

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

结论

现在你已经安装了一个LAMP,你可以选择下一步做什么。 基本上,您已经安装了一个平台,可以让您在服务器上安装大多数网站和网络软件。

作为紧接着的下一步,您应该确保通过HTTPS提供服务来保护与Web服务器的连接。 这里最简单的选择是使用Let's Encrypt通过免费的TLS / SSL证书保护您的网站。

其他一些受欢迎的选项是:

注意 :我们将在编写时将上述链接更新到我们的18.04文档。