如何在 Ubuntu 14.04 上安装 Linux、Nginx、MySQL 和 PHP (LEMP) 协议栈

介绍

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

在本指南中,我们将展示如何在Ubuntu 14.04服务器上安装LEMP堆栈。Ubuntu操作系统照顾第一个要求。

<$>[注] 注: LEMP Stack 可以通过在启动时添加 此脚本到其用户数据来自动安装到您的 Droplet。

前提条件

在完成本教程之前,您应该在您的服务器上拥有sudo特权的常规非根用户帐户,您可以通过在我们的 Ubuntu 14.04初始服务器设置中完成步骤 1 到 4 来学习如何设置此类帐户。

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

1、安装 Nginx Web 服务器

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

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

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

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

在 Ubuntu 14.04 中, Nginx 配置为在安装时启动。

您可以通过在您的 Web 浏览器中访问您的服务器的域名或公共 IP 地址来测试服务器是否正在运行。

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

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
111.111.111.111
fe80::601:17ff:fe61:9801

或者你可以尝试使用:

curl http://icanhazip.com
111.111.111.111

尝试您在 Web 浏览器中收到的一行,它应该带您到 Nginx 的默认定位页面:

http://server_domain_name_or_IP

Nginx default page

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

安装MySQL来管理网站数据

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

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

1sudo apt-get install mysql-server

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

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

首先,我们需要告诉MySQL生成它需要存储其数据库和信息的目录结构,我们可以通过键入这样做:

1sudo mysql_install_db

接下来,您将想要运行一个简单的安全脚本,这将提示您修改一些不安全的默认设置。

1sudo mysql_secure_installation

您需要输入您在安装过程中选择的MySQL根密码。

接下来,它会问你是否想要更改这个密码. 如果你对你的MySQL根密码感到满意,请键入N,然后按ENTER。之后,你将被要求删除一些测试用户和数据库。

一旦脚本已经运行,MySQL就已经准备好了。

3. 安装 PHP 来处理

现在我们安装了 Nginx 来服务我们的页面,安装了 MySQL 来存储和管理我们的数据,但我们仍然需要一些东西来连接这两个部分并生成动态内容。

由于 Nginx 不会像其他一些 Web 服务器那样包含原生 PHP 处理,所以我们需要安装「php5-fpm」,即fastCGI 流程管理器

我们可以安装此模块,还会获取一个额外的辅助包,允许PHP与我们的数据库后端进行通信。

1sudo apt-get install php5-fpm php5-mysql

配置 PHP 处理器

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

打开带 root 特权的主要 php5-fpm 配置文件:

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

我们在这个文件中寻找的是设置cgi.fix_pathinfo的参数,这将用半列(;)评论并默认设置为1

这是一个非常不安全的设置,因为它告诉PHP尝试执行最接近的文件,如果PHP文件不准确匹配,它可以找到。

我们将通过不评论行来改变这两个条件,并将其设置为0如下:

1cgi.fix_pathinfo=0

保存并关闭文件,当你完成。

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

1sudo service php5-fpm restart

这将实现我们所做的变化。

配置 Nginx 以使用我们的 PHP 处理器

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

我们在服务器块级别上做这件事(服务器块类似于Apache的虚拟主机)。

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

目前,随着评论被删除,Nginx默认服务器封锁文件看起来像这样:

server {
    listen 80 default_server;
    listen [::]: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 处理,我们将需要不评论另一部分。

您需要做的更改在下面的文本中是红色的:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name server_domain_name_or_IP;

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

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

重新启动 Nginx 以进行必要的更改:

1sudo service nginx restart

创建一个PHP文件来测试配置

我们还应该测试以确保 Nginx 可以正确地将.php 文件发送到我们的 PHP 处理器。

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

1sudo nano /usr/share/nginx/html/info.php

这是有效的PHP代码,将返回有关我们的服务器的格式化信息:

1<?php
2phpinfo();
3?>

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

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

http://server_domain_name_or_IP/info.php

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

PHP page info

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

测试后,最好删除您创建的文件,因为它实际上可以给未经授权的用户一些关于您的配置的提示,这可能有助于他们尝试打破。

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

1sudo rm /usr/share/nginx/html/info.php

结论

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

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus