如何在Ubuntu14.04上安装Linux、Nginx、MySQL、PHP(LEMP)堆栈
介绍
LEMP 软件堆栈是一组可用于提供动态网页和 Web 应用程序的软件。 这是描述带有 Nginx Web 服务器的 Linux 操作系统的首字母缩略词。 后端数据存储在 MySQL 中,动态处理由 PHP 处理。
在本指南中,我们将演示如何在 Ubuntu 14.04 服务器上安装 LEMP 堆栈。 Ubuntu 操作系统满足第一个要求。 我们将描述如何启动并运行其余组件。
注意: LEMP Stack 可以通过在启动时将 this script 添加到其用户数据来自动安装在您的 Droplet 上。 查看 本教程 以了解有关 Droplet 用户数据的更多信息。
先决条件
在完成本教程之前,您应该在您的服务器上拥有一个具有 sudo
权限的常规非 root 用户帐户。 您可以通过完成我们的 Ubuntu 14.04 初始服务器设置 中的步骤 1-4 来了解如何设置此类帐户。
一旦您的帐户可用,请使用该用户名登录您的服务器。 您现在已准备好开始本指南中概述的步骤。
1. 安装 Nginx Web 服务器
为了向我们的网站访问者显示网页,我们将使用 Nginx,一种现代、高效的网络服务器。
我们将为此过程获得的所有软件都将直接来自 Ubuntu 的默认软件包存储库。 这意味着我们可以使用apt
包管理套件来完成安装。
由于这是我们第一次在此会话中使用 apt
,我们应该从更新本地包索引开始。 然后我们可以安装服务器:
sudo apt-get update sudo apt-get install nginx
在 Ubuntu 14.04 中,Nginx 被配置为在安装时开始运行。
您可以通过在 Web 浏览器中访问服务器的域名或公共 IP 地址来测试服务器是否已启动并运行。
如果您没有指向您的服务器的域名并且您不知道您的服务器的公共 IP 地址,您可以通过在终端中键入以下内容之一来找到它:
ip 地址显示 eth0 | grep inet | awk '{ 打印 $2; }' | sed 's//.*$//'
111.111.111.111 fe80::601:17ff:fe61:9801
或者您可以尝试使用:
卷曲 http://icanhazip.com
111.111.111.111
尝试您在网络浏览器中收到的行之一。 它应该带你到 Nginx 的默认登录页面:
http:// server_domain_name_or_IP
如果你看到上面的页面,你已经成功安装了 Nginx。
2. 安装 MySQL 以管理站点数据
现在我们有了一个 Web 服务器,我们需要安装 MySQL,一个数据库管理系统,来存储和管理我们网站的数据。
您可以通过键入以下内容轻松安装:
sudo apt-get install mysql-server
您将被要求提供在 MySQL 系统中使用的 root(管理)密码。
MySQL 数据库软件现已安装,但其配置尚未完全完成。
首先,我们需要告诉 MySQL 生成存储数据库和信息所需的目录结构。 我们可以通过键入:
sudo mysql_install_db
接下来,您需要运行一个简单的安全脚本,它会提示您修改一些不安全的默认设置。 通过键入以下内容开始脚本:
sudo mysql_secure_installation
您将需要输入您在安装过程中选择的 MySQL 根密码。
接下来,它会询问您是否要更改该密码。 如果您对 MySQL 根密码感到满意,请输入“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 默认服务器块文件如下所示:
服务器 { 听 80 default_server; 听 [::]:80 default_server ipv6only=on; 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 处理器。
您需要进行的更改在下面的文本中以红色显示:
服务器 { 听 80 default_server; 听 [::]:80 default_server ipv6only=on; 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
:
http:// server_domain_name_or_IP /info.php
您应该会看到一个由 PHP 生成的网页,其中包含有关您的服务器的信息:
如果你看到一个像这样的页面,那么你已经成功地使用 Nginx 设置了 PHP 处理。
在您对此进行测试后,最好删除您创建的文件,因为它实际上可以为未经授权的用户提供一些有关您的配置的提示,这可能有助于他们尝试闯入。 如果以后需要,您可以随时重新生成此文件。
现在,通过键入以下内容删除文件:
sudo rm /usr/share/nginx/html/info.php
结论
您现在应该在 Ubuntu 14.04 服务器上配置了 LEMP 堆栈。 这为您为访问者提供 Web 内容提供了非常灵活的基础。