如何在 Ubuntu 16.04 中安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)如何在 Ubuntu 16.04 中安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)如何在 Ubuntu 16.04 中安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)如何在 Ubuntu 16.04 中安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 16.04 中安装 Linux、Nginx、MySQL、PHP(LEMP 堆栈)

介绍

LEMP 软件堆栈是一组可用于为动态网页和 Web 应用程序提供服务的软件。这是描述带有 Nginx Web 服务器的 Linux 操作系统的首字母缩写词。后端数据存储在MySQL数据库中,动态处理由PHP处理。

在本指南中,我们将演示如何在 Ubuntu 16.04 服务器上安装 LEMP 堆栈。 Ubuntu 操作系统满足了第一个要求。我们将描述如何启动和运行其余组件。

先决条件

在完成本教程之前,您应该在服务器上拥有一个具有 sudo 权限的常规非根用户帐户。您可以通过完成我们的 Ubuntu 16.04 初始服务器设置来了解如何设置此类帐户。

一旦您的用户可用,请使用该用户名登录您的服务器。您现在已准备好开始执行本指南中概述的步骤。

第 1 步:安装 Nginx Web 服务器

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

我们将用于此过程的所有软件都将直接来自 Ubuntu 的默认包存储库。这意味着我们可以使用apt 包管理套件来完成安装。

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

  1. sudo apt-get update
  2. sudo apt-get install nginx

在 Ubuntu 16.04 上,Nginx 配置为在安装时开始运行。

如果您正在运行 ufw 防火墙,如我们的初始设置指南所述,您将需要允许连接到 Nginx。 Nginx 在安装时使用 ufw 注册自己,因此过程相当简单。

建议您启用限制性最强的配置文件,该配置文件仍将允许您想要的流量。由于我们还没有为我们的服务器配置 SSL,在本指南中,我们只需要允许端口 80 上的流量。

您可以通过键入以下内容启用此功能:

  1. sudo ufw allow 'Nginx HTTP'

您可以通过键入以下内容来验证更改:

  1. sudo ufw status

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

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

添加新的防火墙规则后,您可以通过在 Web 浏览器中访问服务器的域名或公共 IP 地址来测试服务器是否已启动并正在运行。

如果您没有指向服务器的域名并且不知道服务器的公共 IP 地址,则可以通过在终端中键入以下内容之一来找到它:

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

这将打印出一些 IP 地址。您可以在 Web 浏览器中依次尝试每一个。

或者,您可以检查从 Internet 上的其他位置查看哪个 IP 地址是可访问的:

  1. curl -4 icanhazip.com

键入您在 Web 浏览器中收到的地址之一。它应该带你到 Nginx 的默认登陆页面:

http://server_domain_or_IP

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

第 2 步:安装 MySQL 以管理站点数据

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

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

  1. sudo apt-get install mysql-server

您将被要求提供一个根(管理)密码,以便在 MySQL 系统中使用。

MySQL数据库软件安装完毕,但还没有完全配置好。

为了确保安装安全,我们可以运行一个简单的安全脚本,询问我们是否要修改一些不安全的默认设置。通过键入以下内容开始脚本:

  1. mysql_secure_installation

系统将要求您输入为 MySQL root 帐户设置的密码。接下来,系统会询问您是否要配置 VALIDATE PASSWORD PLUGIN。

警告:启用此功能是一种判断调用。如果启用,不符合指定条件的密码将被 MySQL 拒绝并报错。如果您将弱密码与自动配置 MySQL 用户凭据的软件(例如 phpMyAdmin 的 Ubuntu 软件包)结合使用,这将导致问题。禁用验证是安全的,但您应该始终为数据库凭据使用强而独特的密码。

回答 y 表示是,或其他任何继续而不启用。

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

如果您启用了密码验证,您将看到现有 root 密码的密码强度,并询问您是否要更改该密码。如果您对当前密码满意,请在提示符下输入 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 立即遵守我们所做的更改。

此时,您的数据库系统已经设置完毕,我们可以继续了。

第 3 步:安装 PHP 进行处理

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

由于 Nginx 不像其他一些 Web 服务器那样包含原生 PHP 处理,因此我们需要安装 php-fpm,它代表“fastCGI 进程管理器”。我们将告诉 Nginx 将 PHP 请求传递给它处理的软件。

我们可以安装这个模块,还将获取一个额外的帮助程序包,允许 PHP 与我们的数据库后端进行通信。安装将引入必要的 PHP 核心文件。通过键入以下内容来执行此操作:

  1. sudo apt-get install php-fpm php-mysql

配置 PHP 处理器

我们现在已经安装了 PHP 组件,但是我们需要稍微更改配置以使我们的设置更安全。

使用 root 权限打开主 php-fpm 配置文件:

  1. sudo nano /etc/php/7.0/fpm/php.ini

我们在这个文件中寻找的是设置cgi.fix_pathinfo的参数。这将用分号 (;) 注释掉,并默认设置为 \1。

这是一个非常不安全的设置,因为如果找不到所请求的 PHP 文件,它会告诉 PHP 尝试执行它能找到的最接近的文件。这基本上将允许用户以允许他们执行不应被允许执行的脚本的方式制作 PHP 请求。

我们将通过取消注释行并将其设置为 \0 来更改这两个条件,如下所示:

cgi.fix_pathinfo=0

完成后保存并关闭文件。

现在,我们只需要通过键入以下内容来重新启动我们的 PHP 处理器:

  1. sudo systemctl restart php7.0-fpm

这将实施我们所做的更改。

第 4 步:配置 Nginx 以使用 PHP 处理器

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

我们在服务器块级别执行此操作(服务器块类似于 Apache 的虚拟主机)。键入以下命令打开默认的 Nginx 服务器块配置文件:

  1. sudo nano /etc/nginx/sites-available/default

目前,删除注释后,Nginx 默认服务器块文件如下所示:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
}

我们需要为我们的站点对此文件进行一些更改。

  • 首先,我们需要添加 index.php 作为我们的 index 指令的第一个值,以便提供名为 index.php 的文件,如果可用,在请求目录时。
  • 我们可以修改 server_name 指令以指向我们服务器的域名或公共 IP 地址。
  • 对于实际的 PHP 处理,我们只需要通过删除每行前面的井号 (#) 来取消对处理 PHP 请求的文件段的注释。这将是 location ~\.php$ 位置块、包含的 fastcgi-php.conf 片段以及与 php-fpm 关联的套接字>.
  • 我们还将使用相同的方法取消注释处理 .htaccess 文件的位置块。 Nginx 不处理这些文件。如果这些文件中的任何一个碰巧进入了文档根目录,则不应将它们提供给访问者。

您需要进行的更改在下面的文本中以红色显示:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

完成上述更改后,您可以保存并关闭文件。

键入以下命令测试配置文件是否存在语法错误:

  1. sudo nginx -t

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

准备就绪后,重新加载 Nginx 以进行必要的更改:

  1. sudo systemctl reload nginx

第 5 步:创建一个 PHP 文件来测试配置

您的 LEMP 堆栈现在应该已完全设置。我们可以测试它以验证 Nginx 是否可以正确地将 .php 文件交给我们的 PHP 处理器。

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

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

将以下行键入或粘贴到新文件中。这是有效的 PHP 代码,它将返回有关我们服务器的信息:

<?php
phpinfo();

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

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

http://server_domain_or_IP/info.php

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

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

在验证 Nginx 正确呈现页面后,最好删除您创建的文件,因为它实际上可以为未经授权的用户提供一些有关您的配置的提示,这可能有助于他们尝试闯入。如果您以后需要,您可以随时重新生成该文件。

现在,通过键入以下内容删除文件:

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

结论

您现在应该在 Ubuntu 16.04 服务器上配置了一个 LEMP 堆栈。这为您为访问者提供 Web 内容提供了一个非常灵活的基础。

©2015-2025 艾丽卡 support@alaica.com