如何在 Ubuntu 14.04 上安装 Linux、Nginx、MySQL、PHP (LEMP)
介绍
LEMP 软件堆栈是一组可用于为动态网页和 Web 应用程序提供服务的软件。这是描述带有 Nginx Web 服务器的 Linux 操作系统的首字母缩写词。后端数据存储在MySQL中,动态处理由PHP处理。
在本指南中,我们将演示如何在 Ubuntu 14.04 服务器上安装 LEMP 堆栈。 Ubuntu 操作系统满足了第一个要求。我们将描述如何启动和运行其余组件。
注意:LEMP Stack 可以通过添加本教程自动安装在您的 Droplet 上,以了解有关 Droplet 用户数据的更多信息。
先决条件
在完成本教程之前,您应该在服务器上拥有一个具有 sudo
权限的常规非根用户帐户。您可以通过完成我们的 Ubuntu 14.04 初始服务器设置中的步骤 1-4 来了解如何设置此类帐户。
一旦您的帐户可用,请使用该用户名登录您的服务器。您现在已准备好开始执行本指南中概述的步骤。
1. 安装 Nginx Web 服务器
为了向我们的站点访问者显示网页,我们将使用 Nginx,一种现代、高效的 Web 服务器。
我们将为此过程获得的所有软件都将直接来自 Ubuntu 的默认软件包存储库。这意味着我们可以使用apt
包管理套件来完成安装。
由于这是我们第一次在此会话中使用 apt
,因此我们应该从更新本地包索引开始。然后我们可以安装服务器:
sudo apt-get update
sudo apt-get install nginx
在 Ubuntu 14.04 中,Nginx 配置为在安装时开始运行。
您可以通过在 Web 浏览器中访问服务器的域名或公共 IP 地址来测试服务器是否已启动并正在运行。
如果您没有指向服务器的域名并且不知道服务器的公共 IP 地址,则可以通过在终端中键入以下内容之一来找到它:
<前>
或者您可以尝试使用:
<前>
尝试您在 Web 浏览器中收到的其中一行。它应该带你到 Nginx 的默认登陆页面:
<前>

如果你看到上面的页面,你已经成功安装了 Nginx。
2.安装MySQL管理站点数据
现在我们有了一个网络服务器,我们需要安装数据库管理系统 MySQL 来存储和管理我们网站的数据。
您可以通过键入以下内容轻松安装:
sudo apt-get install mysql-server
您将被要求提供一个根(管理)密码,以便在 MySQL 系统中使用。
MySQL数据库软件安装完毕,但还没有完全配置好。
首先,我们需要告诉 MySQL 生成存储其数据库和信息所需的目录结构。我们可以通过键入以下内容来做到这一点:
sudo mysql_install_db
接下来,您需要运行一个简单的安全脚本,它会提示您修改一些不安全的默认值。通过键入以下内容开始脚本:
sudo mysql_secure_installation
您将需要输入您在安装期间选择的 MySQL root 密码。
接下来,它会询问您是否要更改该密码。如果您对 MySQL root 密码满意,请输入“N”表示否,然后按“ENTER”。之后,系统会提示您删除一些测试用户和数据库。您应该通过这些提示点击 \ENTER 来删除不安全的默认设置。
脚本运行后,MySQL 就可以运行了。
3.安装PHP进行处理
现在我们已经安装了 Nginx 来为我们的页面提供服务,并安装了 MySQL 来存储和管理我们的数据,但是我们仍然需要一些东西来连接这两个部分并生成动态内容。我们可以为此使用 PHP。
由于 Nginx 不像其他一些 Web 服务器那样包含原生 PHP 处理,因此我们需要安装 php5-fpm
,它代表“fastCGI 进程管理器”。我们将告诉 Nginx 将 PHP 请求传递给这个处理的软件。
我们可以安装这个模块,还将获取一个额外的帮助程序包,允许 PHP 与我们的数据库后端进行通信。安装将引入必要的 PHP 核心文件。通过键入以下内容来执行此操作:
sudo apt-get install php5-fpm php5-mysql
配置 PHP 处理器
我们现在已经安装了 PHP 组件,但是我们需要稍微更改配置以使我们的设置更安全。
使用 root 权限打开主 php5-fpm
配置文件:
sudo nano /etc/php5/fpm/php.ini
我们在这个文件中寻找的是设置cgi.fix_pathinfo
的参数。这将用分号 (;) 注释掉,并默认设置为 \1。
这是一个非常不安全的设置,因为如果 PHP 文件不完全匹配,它会告诉 PHP 尝试执行它能找到的最接近的文件。这基本上将允许用户以允许他们执行不应被允许执行的脚本的方式制作 PHP 请求。
我们将通过取消注释行并将其设置为 \0 来更改这两个条件,如下所示:
cgi.fix_pathinfo=0
完成后保存并关闭文件。
现在,我们只需要通过键入以下内容来重新启动我们的 PHP 处理器:
sudo service php5-fpm restart
这将实施我们所做的更改。
4. 配置 Nginx 以使用我们的 PHP 处理器
现在,我们已经安装了所有必需的组件。我们仍然需要做的唯一配置更改是告诉 Nginx 使用我们的 PHP 处理器处理动态内容。
我们在服务器块级别执行此操作(服务器块类似于 Apache 的虚拟主机)。键入以下命令打开默认的 Nginx 服务器块配置文件:
sudo nano /etc/nginx/sites-available/default
目前,删除注释后,Nginx 默认服务器块文件如下所示:
<前>
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
我们需要为我们的站点对此文件进行一些更改。
- 首先,我们需要添加一个
index.php
选项作为我们的index
指令的第一个值,以允许在请求目录时提供 PHP 索引文件。 - 我们还需要修改
server_name
指令以指向我们服务器的域名或公共 IP 地址。 - 实际配置文件包括一些定义错误处理例程的注释掉的行。我们将取消注释以包含该功能。
- 对于实际的 PHP 处理,我们需要取消对另一部分的一部分的注释。我们还需要添加一个
try_files
指令,以确保 Nginx 不会将错误请求传递给我们的 PHP 处理器。
您需要进行的更改在下面的文本中以红色显示:
<前>
root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;
server_name <span class="highlight">server_domain_name_or_IP</span>;
location / {
try_files $uri $uri/ =404;
}
<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
<span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>
<span class="highlight">location ~ \.php$ {</span>
<span class="highlight">try_files $uri =404;</span>
<span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
<span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
<span class="highlight">fastcgi_index index.php;</span>
<span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
<span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>
}
完成上述更改后,您可以保存并关闭文件。
重新启动 Nginx 以进行必要的更改:
sudo service nginx restart
5. 创建一个 PHP 文件来测试配置
您的 LEMP 堆栈现在应该已完全设置。我们仍然应该测试以确保 Nginx 可以正确地将 .php
文件传递给我们的 PHP 处理器。
我们可以通过在我们的文档根目录中创建一个测试 PHP 文件来做到这一点。在文本编辑器的文档根目录中打开一个名为 info.php
的新文件:
sudo nano /usr/share/nginx/html/info.php
我们可以将其输入到新文件中。这是有效的 PHP 代码,它将返回有关我们服务器的格式化信息:
<?php
phpinfo();
?>
完成后,保存并关闭文件。
现在,您可以通过访问服务器的域名或公共 IP 地址后跟 /info.php
来在 Web 浏览器中访问此页面:
<前>
您应该会看到一个由 PHP 生成的网页,其中包含有关您的服务器的信息:

如果你看到一个看起来像这样的页面,你已经成功地使用 Nginx 设置了 PHP 处理。
对此进行测试后,最好删除您创建的文件,因为它实际上可以为未经授权的用户提供一些有关您的配置的提示,这可能有助于他们尝试闯入。如果您以后需要,您可以随时重新生成该文件。
现在,通过键入以下内容删除文件:
sudo rm /usr/share/nginx/html/info.php
结论
您现在应该在 Ubuntu 14.04 服务器上配置了一个 LEMP 堆栈。这为您为访问者提供 Web 内容提供了一个非常灵活的基础。