如何在 Debian 9 上安装 Linux、Nginx、MySQL 和 PHP(LEMP 协议栈

介绍

LEMP软件堆栈是一组软件,可用于服务动态网页和Web应用程序. 这是描述Linux操作系统的缩写,具有NginxWeb服务器。

在本指南中,您将使用操作系统提供的包在 Debian 服务器上安装 LEMP 堆栈。

前提条件

要完成本指南,您将需要一个 Debian 9 服务器,具有sudo特权的非根用户,您可以在我们的 Debian 9 初始服务器设置指南中设置具有这些特权的用户。

步骤1:安装 Nginx Web 服务器

为了向我们的网站访问者显示网页,我们将使用现代、高效的网页服务器 Nginx。

我们将使用的所有软件将直接来自 Debian 的默认包存库,这意味着我们可以使用apt包管理套件来完成安装。

由于这是我们第一次在这个会话中使用apt,我们应该从更新本地包索引开始,然后我们可以安装服务器:

1sudo apt update
2sudo apt install nginx

在 Debian 9 上, Nginx 配置为在安装时启动。

如果你有ufw防火墙运行,你需要允许连接到 Nginx. 你应该启用最限制的配置文件,仍然允许你想要的流量. 由于我们尚未为我们的服务器配置SSL,在本指南中,我们只需要允许80端口的流量。

你可以通过键入来实现这一点:

1sudo ufw allow 'Nginx HTTP'

您可以通过键入检查更改:

1sudo ufw status

您应该在显示的输出中看到允许的 HTTP 流量:

1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere
7Nginx HTTP ALLOW Anywhere
8OpenSSH (v6)               ALLOW Anywhere (v6)
9Nginx HTTP (v6)            ALLOW Anywhere (v6)

现在,通过访问您的服务器的域名或公共 IP 地址在您的 Web 浏览器中测试服务器是否正在运行. 如果您没有域名指向您的服务器,并且您不知道您的服务器的公共 IP 地址,您可以通过在您的终端中键入以下之一来找到它:

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

這將打印出幾個IP地址,您可以在您的網頁瀏覽器中嘗試每一個。

输入您在 Web 浏览器中接收的地址之一. 它应该带您到 Nginx 的默认定位页面:

1http://your_domain_or_IP

Nginx default page

如果您看到上面的页面,您已经成功安装了 Nginx。

步骤2:安装MySQL来管理网站数据

现在我们有一个Web服务器,我们需要安装MySQL,一个数据库管理系统,以存储和管理我们网站的数据。

您可以通过键入轻松安装:

1sudo apt install mysql-server

<$>[注] 注: 在 Debian 9 中,一个 MySQL 项目的社区叉子 - MariaDB - 被包装为默认的 MySQL 变体. 虽然 MariaDB 在大多数情况下工作得很好,如果您只需要在 Oracle 的 MySQL 中找到的功能,您可以安装和使用由 MySQL 开发人员维护的存储库中的包。

MySQL 数据库软件已安装,但其配置尚未完成。

为了确保安装,我们可以运行一个安全脚本,它会问我们是否想要修改一些不安全的默认设置。

1sudo mysql_secure_installation

您将被要求输入MySQL root 帐户的密码,我们还没有设置这个,所以只需点击ENTER。然后您将被问及是否要设置该密码。

对于脚本提出的其他问题,您应该按y,然后按ENTER键在每个提示中。这将删除一些匿名用户和测试数据库,禁用远程根登录,并加载这些新规则,以便MySQL立即尊重您所做的更改。

此时,您的数据库系统已设置和安全,让我们设置PHP。

步骤 3 – 安装 PHP 来处理

我们现在安装了 Nginx 来服务我们的页面,安装了 MySQL 来存储和管理我们的数据,但是,我们仍然没有任何可以生成动态内容的东西。

由于 Nginx 不会像其他一些 Web 服务器那样包含原生 PHP 处理,所以我们需要安装 fpm,即fastCGI 流程管理器。我们会告诉 Nginx 将 PHP 请求传递给该软件进行处理,我们还会安装一个额外的辅助包,允许 PHP 与我们的 MySQL 数据库备份进行通信。

然后安装php-fpmphp-mysql包:

1sudo apt install php-fpm php-mysql

现在我们已经安装了 PHP 组件,接下来我们将配置 Nginx 来使用它们。

步骤 4 — 配置 Nginx 以使用 PHP 处理器

现在我们已经安装了所有所需的组件,我们唯一需要的配置更改是告诉 Nginx 使用我们的 PHP 处理器进行动态内容。

我们在服务器块级别上做这件事(服务器块类似于Apache的虚拟主机)。我们将单独留下默认的Nginx配置,而不是创建一个新的配置文件和新的Web根目录来保留我们的PHP文件。

首先,在 /var/www 中创建一个新目录,以保持 PHP 网站:

1sudo mkdir /var/www/your_domain

然后,在 Nginx 的可用网站目录中打开一个新的配置文件:

1sudo nano /etc/nginx/sites-available/your_domain

这将创建一个新的空格文件. 粘贴到以下裸骨配置:

 1[label /etc/nginx/sites-available/your_domain]
 2server {
 3    listen 80;
 4    listen [::]:80;
 5
 6    root /var/www/your_domain;
 7    index index.php index.html index.htm;
 8
 9    server_name your_domain;
10
11    location / {
12        try_files $uri $uri/ =404;
13    }
14
15    location ~ \.php$ {
16        include snippets/fastcgi-php.conf;
17        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
18    }
19}

这是一个非常基本的配置,它在端口80上收听并服务于我们刚刚创建的网页根的文件,它只会响应在server_name之后提供的名称请求,并且在php结束的任何文件将在php-fpm过程中处理,然后Nginx将结果发送给用户。

保存和关闭文件,当你完成了定制它。

通过从 Nginx 的网站启用目录链接到配置文件来激活您的配置:

1sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

这将告诉 Nginx下次重新加载时使用配置,首先通过键入来测试您的配置语法错误:

1sudo nginx -t

如果报告了任何错误,请返回并重新检查您的文件,然后继续。

当你准备好时,重新加载 Nginx 以进行更改:

1sudo systemctl reload nginx

接下来,我们将在我们的新网页根目录中创建一个文件,以测试PHP处理。

步骤 5 — 创建一个 PHP 文件来测试配置

我们可以测试它来验证 Nginx 是否能正确地将.php 文件发送给我们的 PHP 处理器。

我们可以通过在我们的文档根中创建测试PHP文件来做到这一点,在文档根中打开一个名为info.php的新文件:

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

输入或粘贴下列行到新文件. 这是有效的PHP代码,将返回有关我们的服务器的信息:

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

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

现在,您可以通过访问您的服务器的域名或公共IP地址来访问您的Web浏览器中的此页面,然后是/info.php:

1http://your_domain/info.php

您应该看到一个由PHP生成的网页,其中包含有关您的服务器的信息:

PHP page info

如果你看到一个看起来像这样的页面,你已经成功地设置了PHP处理与Nginx。

在验证 Nginx 是否正确渲染页面后,最好删除您创建的文件,因为它实际上可以给未经授权的用户一些关于您的配置的提示,这可能有助于他们尝试打破。

现在,通过键入删除文件:

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

您可以随时重建此文件,如果您需要它以后。

结论

您现在应该在您的 Debian 服务器上配置一个 LEMP 堆栈,这为您提供了一个非常灵活的基础,以便为您的访问者提供网页内容。

Published At
Categories with 技术
comments powered by Disqus