如何在Debian 9上安装Linux,Apache,MariaDB,PHP(LAMP)堆栈

介绍

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

在本教程中,我们将在Debian 9服务器上安装LAMP堆栈。

准备

为了完成本教程,您需要拥有一个Debian 9服务器,该服务器具有非root sudo用户帐户和基本防火墙。这可以使用Debian 9的初始服务器设置教程进行配置。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

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

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

安装使用Apache Debian的包管理器apt

sudo apt update
sudo apt install apache2

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

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

接下来,假设您已通过安装和启用UFW防火墙来遵循初始服务器设置说明,请确保您的防火墙允许HTTP和HTTPS流量。

当安装在Debian 9上时,UFW会加载应用程序配置文件,您可以使用它来调整防火墙设置。通过运行查看应用程序配置文件的完整列表:

sudo ufw app list

WWW配置文件用于管理由Web服务器使用的端口:

Available applications:
. . .
  WWW
  WWW Cache
  WWW Full
  WWW Secure
. . .

如果您检查WWW Full配置文件,则表明它启用了到端口80443的流量,:

sudo ufw app info "WWW Full"
Profile: WWW Full
Title: Web Server (HTTP,HTTPS)
Description: Web Server (HTTP,HTTPS)
​
Ports:
  80,443/tcp

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

sudo ufw allow in “WWW Full”

您可以通过在Web浏览器中访问服务器的公共IP地址,立即进行抽查,以验证一切是否按计划进行:

http://your_server_ip

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

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

如果您不知道服务器的公共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步 - 安装MariaDB

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

MariaDB是一个社区构建的MySQL分支。在Debian 9中,默认的MySQL服务器是MariaDB 10.1,而通常用于安装MySQL的软件包是一个实际安装MariaDB的过渡软件包mysql-server。但是,建议您使用程序的实际包mariadb-server安装MariaDB 。

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

sudo apt install mariadb-server

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

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

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

sudo mysql_secure_installation

这将引导您完成一系列提示,您可以在其中对MariaDB安装的安全选项进行一些更改。第一个提示将要求您输入当前的数据库root密码。这是MariaDB中具有增加权限的管理帐户。可以认为它与服务器本身的root帐户相似(尽管您现在配置的帐户是特定于MariaDB的帐户)。因为您刚刚安装了MariaDB并且尚未进行任何配置更改,所以此密码将为空,因此只需按ENTER提示符即可。

下一个提示会询问您是否要设置数据库root密码。键入N然后按ENTER。在Debian中,MariaDB 的root帐户与自动系统维护密切相关,因此我们不应更改该帐户的已配置身份验证方法。这样做可以使程序包更新通过删除对管理帐户的访问来破坏数据库系统。稍后,我们将介绍如果套接字身份验证不适合您的用例,如何为密码访问设置其他管理帐户。

从那里,您可以按Y,然后ENTER接受所有后续问题的默认值。这将删除一些匿名用户和测试数据库,禁用远程root登录,并加载这些新规则,以便MariaDB立即尊重您所做的更改。

在Debian系统上的新安装中, MariaDB用户设置为默认使用unix_socket插件进行身份验证,而不是使用密码进行身份验证。在许多情况下,这允许更高的安全性和可用性,但是当您需要允许外部程序(例如,phpMyAdmin)管理权限时,它也会使事情变得复杂。

由于服务器使用root帐户执行日志轮换以及启动和停止服务器等任务,因此最好不要更改root帐户的身份验证详细信息。更改/etc/mysql/debian.cnf中的帐户凭据最初可能有效,但程序包更新可能会覆盖这些更改。如果您需要设置基于密码的访问权限,软件包维护人员建议您创建一个单独的管理帐户,而不是修改root帐户。

为此,我们将创建一个与root帐户具有相同功能的新帐户admin,但配置为密码身份验证。为此,请从终端打开MariaDB提示符:

sudo mariadb

现在,我们可以创建具有root权限和基于密码的访问权限的新用户。更改用户名和密码以符合您的偏好:

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

刷新权限以确保它们在当前会话中保存并可用:

FLUSH PRIVILEGES;

在此之后,退出MariaDB shell:

exit

现在,只要您想以新的管理用户身份访问数据库,就需要使用以下命令使用您刚刚设置的密码对该用户进行身份验证:

mariadb -u admin -p

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

第3步 - 安装PHP

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

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

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

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

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

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

sudo nano /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规范之后的第一个位置,如下所示:

<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检查pache2服务的状态:

sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
  Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 22221 (apache2)
    Tasks: 6 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─22221 /usr/sbin/apache2 -k start
           ├─22222 /usr/sbin/apache2 -k start
           ├─22223 /usr/sbin/apache2 -k start
           ├─22224 /usr/sbin/apache2 -k start
           ├─22225 /usr/sbin/apache2 -k start
           └─22226 /usr/sbin/apache2 -k start

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

apt search php- | less

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

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

Sorting...
Full Text Search...
bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
  Tracks usage of TCP/IP and builds html files with graphs
​
bluefish/stable 2.2.9-1+b1 amd64
  advanced Gtk+ text editor for web and software development
​
cacti/stable 0.8.8h+ds1-10 all
  web interface for graphing of monitoring systems
​
cakephp-scripts/stable 2.8.5-1 all
  rapid application development framework for PHP (scripts)
​
ganglia-webfrontend/stable 3.6.1-3 all
  cluster monitoring toolkit - web front-end
​
haserl/stable 0.9.35-2+b1 amd64
  CGI scripting program for embedded environments
​
kdevelop-php-docs/stable 5.0.3-1 all
  transitional package for kdevelop-php
​
kdevelop-php-docs-l10n/stable 5.0.3-1 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 Debian's default
 PHP version (currently 7.0).
…

如果在研究之后,您决定要安装软件包,则可以像使用其他软件一样使用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的特定目录中。

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

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

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

<?php
phpinfo();
?>

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

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

您要访问的地址是:

http://your_server_ip/info.php

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

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

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

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

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

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

结论

现在您已经安装了LAMP堆栈,您可以选择下一步做什么。基本上,您已经安装了一个平台,允许您在服务器上安装大多数类型的网站和Web软件。

想要了解更多关于安装LAMP堆栈的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Linux, Apache, MariaDB, PHP (LAMP) stack on Debian 9》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换。 tomcat服务器两台,由nginx进行反向代理和负载均衡...

5678
来自专栏区块链

Web安全常见漏洞修复建议

看各大发布漏洞的平台,发现众多挖洞大神精彩的漏洞发掘过程,但在修复建议或者修复方案处,给出千奇百怪神一般的回复,故而总结一下修复建议(才疏学浅不算太全敬请谅解,...

2996
来自专栏虚拟化云计算

oVirt之软件架构全剖析

本文是从软件架构设计的角度剖析oVirt的vdsm,另外还有一篇是从功能架构设计的角度剖析oVirt。

2084
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装和配置Postfix

Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。据估计,互联网上约有25%的公共邮件服务器运行Postfix。

3021
来自专栏云计算教程系列

如何在Ubuntu上安装Buildbot

Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布。它使用Python的Twisted库来处理buildmaster和多个wo...

2286
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装VestaCP并设置网站

Vesta控制面板是一个免费的开源网站控制面板,内置网站,电子邮件,数据库和DNS功能。在本教程结束时,我们将在Ubuntu 14.04上安装并运行Vesta,...

930
来自专栏FreeBuf

保护SSH端口安全性的多种技巧介绍

SSH是一种可以让你在不安全的网络上,安全的运行网络服务的网络协议的.ssh的标准TCP端口为22端口,其最佳应用场景是用户远程登录至计算机系统。因此,SSH端...

1442
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Icinga和Icinga Web

Icinga是一个灵活而强大的开源监控系统,用于监控网络主机和服务的运行状况。它可用于监视Web worker集群的负载和正常运行时间,存储设备上的可用磁盘空间...

2424
来自专栏Laoqi's Linux运维专列

看懂FTP的主动和被动模式

4139
来自专栏LIN_ZONE

php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)

2.windows默认带防火墙的,进入 控制面板-系统和安全-Windows 防火墙-允许的程序(win10系统的是:进入 控制面板-允许应用或功能通过Wind...

663

扫码关注云+社区

领取腾讯云代金券