如何在 Debian 9 上安装 Linux、Apache、MariaDB 和 PHP (LAMP) 协议栈

介绍

LAMP堆栈是一组开源软件,通常被安装在一起,使服务器能够托管动态网站和Web应用程序. 这个术语实际上是一个简称,代表了Linux操作系统,与 ** A pache Web服务器。

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

前提条件

要完成本教程,您将需要有一个 Debian 9 服务器,具有非 root sudo 功能的用户帐户和一个基本的防火墙,可以使用我们的 Debian 9 初始服务器安装指南来配置。

步骤 1 – 安装 Apache 和更新防火墙

Apache 网页服务器是世界上最受欢迎的网页服务器之一,它经过了很好的文档,并且已被广泛使用了网页历史的大部分时间,这使得它成为托管网站的绝佳默认选择。

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

1sudo apt update
2sudo apt install apache2

由于这是一个sudo命令,这些操作是用根特权执行的,它会要求您使用常规用户的密码来验证您的意图。

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

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

在 Debian 9 上安装时,UFW 附带了应用程序配置文件,您可以使用它们来调整防火墙设置。

1sudo ufw app list

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

1[secondary_label Output]
2Available applications:
3. . .
4  WWW
5  WWW Cache
6  WWW Full
7  WWW Secure
8. . .

如果您检查WWW Full配置文件,则显示它允许对端口80443的流量:

1sudo ufw app info "WWW Full"
1[secondary_label Output]
2Profile: WWW Full
3Title: Web Server (HTTP,HTTPS)
4Description: Web Server (HTTP,HTTPS)
5
6Ports:
7  80,443/tcp

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

1sudo ufw allow in "WWW Full"

您可以立即进行点击检查,通过访问您的服务器的公共 IP 地址在您的 Web 浏览器中,以确认一切按计划进行:

1http://your_server_ip

您将看到默认的 Debian 9 Apache 网页,该网页用于信息和测试目的。

Debian 9 Apache default

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

如果你不知道你的服务器的公共IP地址是什么,有几种方法可以找到它,通常,这是你用来通过SSH连接到你的服务器的地址。

首先,您可以使用iproute2工具通过键入以下方式获取您的IP地址:

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

这些都是正确的地址,但您的计算机可能只能使用其中一个,所以可以尝试每一个。

另一种方法是使用弯曲实用程序与外部人员联系,告诉您 it 如何看待您的服务器。

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

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

第2步:安装MariaDB

现在你有你的网页服务器并运行,是时候安装MariaDB。MariaDB是一个数据库管理系统. 基本上,它将组织和提供访问数据库,你的网站可以存储信息。

在 Debian 9,默认的MySQL服务器是MariaDB 10.1,而通常用于安装MySQL的mysql-server包是一个实际安装MariaDB的过渡包。

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

1sudo apt install mariadb-server

<$>[注] :在这种情况下,您不需要在命令之前运行sudo apt update

这个命令也将向您显示将安装的包列表,以及他们将占用的磁盘空间。

安装完成后,运行一个简单的安全脚本,预先安装与MariaDB,这将删除一些不安全的默认设置,并锁定访问您的数据库系统。

1sudo mysql_secure_installation

这将带您通过一系列提示,您可以对 MariaDB 安装的安全选项做出一些更改。第一个提示将要求您输入当前数据库 root 密码. 这是 MariaDB 中的管理帐户,该帐户具有增加的权限。 想想它与服务器本身的 ** root** 帐户类似(尽管您现在正在配置的是 MariaDB 特定的帐户)。 因为您刚刚安装了 MariaDB 并且尚未进行任何配置更改,这个密码将是空的,所以只需在提示中按ENTER

下一个提示会问你是否想设置数据库 root 密码。键入N,然后按ENTER。在Debian,MariaDB 的 ** root** 帐户与自动系统维护密切相关,所以我们不应该为该帐户更改配置的身份验证方法。这样做将使软件包更新能够通过删除访问管理帐户来破坏数据库系统。

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

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

由于服务器使用 root 帐户进行日志旋转和开始和停止服务器等任务,所以最好不要更改 ** root** 帐户的身份验证细节。在 `/etc/mysql/debian.cnf 中更改帐户凭据可能起初起作用,但更新包可能会重写这些更改。

要做到这一点,我们将创建一个名为admin的新帐户,具有与 root 帐户相同的功能,但配置用于密码验证。

1sudo mariadb

现在,我们可以创建一个具有 root 权限和基于密码的访问权限的新用户。

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

清除权限,以确保它们在当前会话中存储和可用:

1FLUSH PRIVILEGES;

接下来,输出 MariaDB 壳:

1exit

现在,当您希望作为新管理用户访问您的数据库时,您需要使用您仅使用以下命令设置的密码作为该用户进行身份验证:

1mariadb -u admin -p

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

步骤三:安装PHP

它可以运行脚本,连接到您的MariaDB数据库以获取信息,并将处理的内容传递给您的Web服务器进行显示。

再一次,利用apt系统来安装PHP,再加上一些帮助包,这样PHP代码就可以在Apache服务器下运行,并与您的MariaDB数据库进行交谈:

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

这应该安装PHP没有任何问题,我们会在一瞬间测试它。

在大多数情况下,当被请求一个目录时,你会想要修改Apache服务文件的方式。当用户从服务器上请求一个目录时,Apache首先会搜索一个名为index.html的文件。

要做到这一点,请输入此命令以在具有 root 权限的文本编辑器中打开 dir.conf 文件:

1sudo nano /etc/apache2/mods-enabled/dir.conf

它将看起来像这样:

1[label /etc/apache2/mods-enabled/dir.conf]
2<IfModule mod_dir.c>
3    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
4</IfModule>

将PHP索引文件(如上所示)移动到DirectoryIndex规格之后的第一个位置,如下:

1[label /etc/apache2/mods-enabled/dir.conf]
2<IfModule mod_dir.c>
3    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
4</IfModule>

完成后,通过按CTRL+X来保存和关闭文件,通过键入Y来确认保存,然后按ENTER来验证保存文件的位置。

此后,重新启动 Apache Web 服务器,以便您的更改被识别。

1sudo systemctl restart apache2

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

1sudo systemctl status apache2
 1[secondary_label Sample Output]
 2 apache2.service - The Apache HTTP Server
 3   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
 4   Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago
 5  Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 6  Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 7 Main PID: 22221 (apache2)
 8    Tasks: 6 (limit: 4915)
 9   CGroup: /system.slice/apache2.service
10           ├─22221 /usr/sbin/apache2 -k start
11           ├─22222 /usr/sbin/apache2 -k start
12           ├─22223 /usr/sbin/apache2 -k start
13           ├─22224 /usr/sbin/apache2 -k start
14           ├─22225 /usr/sbin/apache2 -k start
15           └─22226 /usr/sbin/apache2 -k start

为了提高PHP的功能,您可以选择安装一些额外的模块. 要查看PHP模块和库的可用选项,请将apt search的结果导入到less,这是一个页面,允许您滚动其他命令的输出:

1apt search php- | less

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

结果是您可以安装的所有可选组件. 它将为您提供每个组件的简短描述:

 1[secondary_label Output]
 2Sorting...
 3Full Text Search...
 4bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64
 5  Tracks usage of TCP/IP and builds html files with graphs
 6
 7bluefish/stable 2.2.9-1+b1 amd64
 8  advanced Gtk+ text editor for web and software development
 9
10cacti/stable 0.8.8h+ds1-10 all
11  web interface for graphing of monitoring systems
12
13cakephp-scripts/stable 2.8.5-1 all
14  rapid application development framework for PHP (scripts)
15
16ganglia-webfrontend/stable 3.6.1-3 all
17  cluster monitoring toolkit - web front-end
18
19haserl/stable 0.9.35-2+b1 amd64
20  CGI scripting program for embedded environments
21
22kdevelop-php-docs/stable 5.0.3-1 all
23  transitional package for kdevelop-php
24
25kdevelop-php-docs-l10n/stable 5.0.3-1 all
26  transitional package for kdevelop-php-l10n
27
28:

要了解更多关于每个模块所做的事情,您可以搜索互联网以获取更多关于它们的信息。

1apt show package_name

将有大量的输出,一个名为描述的字段将对模块提供的功能提供更长的解释。

例如,要找出「php-cli」模块的功能,您可以输入以下内容:

1apt show php-cli

除了大量的其他信息,你会发现一些看起来像这样的东西:

 1[secondary_label Output]
 2
 3Description: command-line interpreter for the PHP scripting language (default)
 4 This package provides the /usr/bin/php command interpreter, useful for
 5 testing PHP scripts from a shell or performing general shell scripting tasks.
 6 .
 7 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 8 open source general-purpose scripting language that is especially suited
 9 for web development and can be embedded into HTML.
10 .
11 This package is a dependency package, which depends on Debian's default
12 PHP version (currently 7.0).
13

如果经过研究后,您决定要安装一个软件包,您可以通过使用apt install命令这样做,就像您在其他软件中所做的那样。

如果你决定‘php-cli’是你需要的东西,你可以输入:

1sudo apt install php-cli

如果您想安装多个模块,您可以通过列出每个模块,分隔一个空间,按照apt install命令,如下:

1sudo apt install package1 package2 ...

在此时,您的 LAMP 堆栈已安装和配置,但在进行任何更改或部署应用程序之前,如果有任何需要解决的问题,则可以主动测试您的 PHP 配置。

步骤 4 – 在您的 Web 服务器上测试 PHP 处理

为了测试您的系统是否正确配置为PHP,请创建一个非常基本的PHP脚本,名为info.php

在 Debian 9 中,此目錄位於 /var/www/html/

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

添加以下文本,即有效的PHP代码,在文件中:

1[label /var/www/html/info.php]
2<?php
3phpinfo();
4?>

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

现在您可以测试您的 Web 服务器是否能够正确显示由此 PHP 脚本生成的内容. 要尝试,请访问您的 Web 浏览器中的此页面。

你想访问的地址是:

1http://your_server_ip/info.php

您访问的页面应该看起来像这样的东西:

Debian 9 default PHP info

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

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

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

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

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

结论

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

Published At
Categories with 技术
comments powered by Disqus