如何在Ubuntu14.04上使用NginxWeb服务器安装Laravel

来自菜鸟教程
跳转至:导航、​搜索

介绍

Laravel 是一个面向 Web 开发人员的现代开源 PHP 框架。 它旨在为开发人员提供一种简单、优雅的方式来快速运行功能齐全的 Web 应用程序。

在本指南中,我们将讨论如何在 Ubuntu 14.04 上安装 Laravel。 我们将使用 Nginx 作为我们的 Web 服务器,并将使用在撰写本文时最新版本的 Laravel 4.2。

安装后端组件

要开始使用 Laravel,我们需要做的第一件事是安装支持它的堆栈。 我们可以通过 Ubuntu 的默认存储库来做到这一点。

首先,我们需要更新本地包索引,以确保我们有可用包的新列表。 然后我们可以安装必要的组件:

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cli php5-mcrypt git

这将安装 Nginx 作为我们的 Web 服务器以及实际运行 Laravel 代码所需的 PHP 工具。 我们还安装了 git 因为 composer 工具,我们将用来安装 Laravel 的 PHP 依赖管理器,将使用它来下载包。

修改 PHP 配置

现在我们已经安装了组件,我们可以开始配置它们了。 我们将从相当直接的 PHP 开始。

我们需要做的第一件事是打开 Nginx 使用的 PHP-fpm 处理器的主 PHP 配置文件。 在您的文本编辑器中使用 sudo 权限打开它:

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

我们只需要修改这个文件中的一个值。 搜索 cgi.fix_pathinfo 参数。 这将被注释掉并设置为“1”。 我们需要取消注释并将其设置为“0”:

cgi.fix_pathinfo=0

这告诉 PHP 如果找不到请求的文件名,不要尝试执行类似的命名脚本。 这非常重要,因为允许这种类型的行为可能允许攻击者制作一个专门设计的请求,以试图欺骗 PHP 执行它不应该执行的代码。

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

我们需要做的最后一项 PHP 管理是显式启用 Laravel 所依赖的 MCrypt 扩展。 我们可以通过使用 php5enmod 命令来做到这一点,这让我们可以轻松地启用可选模块:

sudo php5enmod mcrypt

现在,我们可以重新启动 php5-fpm 服务以实现我们所做的更改:

sudo service php5-fpm restart

我们的 PHP 现在已经完全配置好了,我们可以继续了。

配置 Nginx 和 Web Root

我们应该解决的下一个项目是 Web 服务器。 这实际上将涉及两个不同的步骤。

第一步是配置我们将用来保存 Laravel 文件的文档根目录和目录结构。 我们将把我们的文件放在一个名为 /var/www/laravel 的目录中。

此时,仅创建此路径的顶层(/var)。 通过将 -p 标志传递给我们的 mkdir 命令,我们可以一步创建整个路径。 这指示实用程序创建构造给定路径所需的任何必要的父路径元素:

sudo mkdir -p /var/www/laravel

现在我们已经为 Laravel 组件预留了一个位置,我们可以继续编辑 Nginx 服务器块。

使用 sudo 权限打开默认的服务器块配置文件:

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

安装后,这个文件会有很多解释性的注释,但基本结构是这样的:

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;
        }
}

这为我们将要进行的更改提供了良好的基础。

我们需要更改的第一件事是文档根目录的位置。 Laravel 将安装在我们创建的 /var/www/laravel 目录中。

但是,用于驱动应用程序的基本文件保存在名为 public 的子目录中。 这是我们将设置文档根目录的地方。 此外,在请求目录位置时,我们将告诉 Nginx 在查找对应的 HTML 文件之前提供任何 index.php 文件:

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

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name localhost;

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

接下来,我们应该设置 server_name 指令来引用我们服务器的实际域名。 如果您没有域名,请随意使用您服务器的 IP 地址。

我们还需要修改 Nginx 处理请求的方式。 这是通过 try_files 指令完成的。 我们希望它首先尝试将请求作为文件提供。 如果它找不到正确名称的文件,它应该尝试为与请求匹配的目录提供默认索引文件。 否则,它应该将请求作为查询参数传递给 index.php 文件。

上述更改可以这样实现:

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

        root /var/www/laravel/public;
        index index.php index.html index.htm;

        server_name server_domain_or_IP;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
}

最后,我们需要创建一个块来处理任何 PHP 文件的实际执行。 这将适用于任何以 .php 结尾的文件。 它将尝试文件本身,然后尝试将其作为参数传递给 index.php 文件。

我们将设置 fastcgi_* 指令,以便正确拆分请求路径以执行,并确保 Nginx 使用 php5-fpm 用于通信的套接字以及 [X201X ] 文件用作这些操作的索引。

然后我们将设置 SCRIPT_FILENAME 参数,以便 PHP 可以正确定位请求的文件。 完成后,完成的文件应如下所示:

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

    root /var/www/laravel/public;
    index index.php index.html index.htm;

    server_name server_domain_or_IP;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri /index.php =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;
    }
}

完成后保存并关闭文件。

因为我们修改了已经启用的 default 服务器块文件,我们只需要重新启动 Nginx 即可获取我们的配置更改:

sudo service nginx restart

创建交换文件(可选)

在我们开始安装 Composer 和 Laravel 之前,最好在您的服务器上启用一些交换,以便正确完成构建。 这通常仅在您在没有太多内存的服务器上操作时才需要(例如 512mb Droplet)。

当内存中的信息量超过可用的物理内存空间时,交换空间将允许操作系统将数据从内存临时移动到磁盘上。 这将防止您的应用程序或系统在执行内存密集型任务时因内存不足 (OOM) 异常而崩溃。

我们可以很容易地设置一些交换空间,让我们的操作系统在必要时将其中的一些洗牌到磁盘。 如上所述,这可能仅在您的可用内存少于 1GB 时才需要。

首先,我们可以通过键入以下内容创建一个空的 1GB 文件:

sudo fallocate -l 1G /swapfile

我们可以通过键入以下内容将其格式化为交换空间:

sudo mkswap /swapfile

最后,我们可以启用这个空间,以便内核通过键入以下命令开始使用它:

sudo swapon /swapfile

系统只会在下次重新启动之前使用此空间,但服务器可能超过其可用内存的唯一时间是在构建过程中,因此这应该不是问题。

安装 Composer 和 Laravel

现在,我们终于准备好安装 Composer 和 Laravel。 我们将首先设置 Composer。 然后我们将使用这个工具来处理 Laravel 安装。

移动到您具有写入权限的目录(例如您的主目录),然后从 Composer 项目下载并运行安装程序脚本:

cd ~
curl -sS https://getcomposer.org/installer | php

这将在您的主目录中创建一个名为 composer.phar 的文件。 这是一个 PHP 存档,可以从命令行运行。

不过,我们希望将其安装在全球可访问的位置。 此外,我们希望将名称更改为 composer(不带文件扩展名)。 我们可以通过键入以下内容一步完成:

sudo mv composer.phar /usr/local/bin/composer

现在你已经安装了 Composer,我们可以使用它来安装 Laravel。

请记住,我们要将 Laravel 安装到 /var/www/laravel 目录中。 要安装最新版本的 Laravel,你可以输入:

sudo composer create-project laravel/laravel /var/www/laravel

在撰写本文时,最新版本是 4.2。 如果将来对项目的更改阻止此安装过程正确完成,您可以强制我们在本指南中使用的版本,而不是键入:

sudo composer create-project laravel/laravel /var/www/laravel 4.2

现在,这些文件都安装在我们的 /var/www/laravel 目录中,但它们完全归我们的 root 帐户所有。 Web 用户需要部分所有权和权限才能正确提供内容。

我们可以通过键入以下命令将 Laravel 目录结构的组所有权授予 web 组:

sudo chown -R :www-data /var/www/laravel

接下来,我们可以更改/var/www/laravel/app/storage目录的权限,允许web组写权限。 这是应用程序正常运行所必需的:

sudo chmod -R 775 /var/www/laravel/app/storage

你现在已经完全安装好 Laravel 并准备好了。 您可以通过在 Web 浏览器中访问服务器的域或 IP 地址来查看默认登录页面:

http://server_domain_or_IP

您现在拥有开始使用 Laravel 框架构建应用程序所需的一切。

结论

你现在应该在你的服务器上启动并运行 Laravel。 Laravel 是一个非常灵活的框架,它包含许多可以帮助您以结构化方式构建应用程序的工具。

要了解如何使用 Laravel 构建应用程序,请查看 Laravel 文档