如何在Ubuntu 14.04的Nginx的Web服务器上安装Laravel

Laravel是一个易于使用的,现代的PHP编程语言的框架。在本指南中,我们将演示了如何使用Nginx的Web服务器上的一个Ubuntu 14.04服务器实例安装Laravel。

介绍

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

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

安装后端组件

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

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

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

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

修改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管理我们需要做的是显式启用MCrypt扩展,Laravel依赖。 我们可以通过这样做php5enmod命令,它可以让我们轻松地启用可选模块:

sudo php5enmod mcrypt

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

sudo service php5-fpm restart

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

配置Nginx和Web根

我们应该处理的下一个项目是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的服务于任何index.php请求目录的位置时,寻找自己的HTML同行面前文件:

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使用通信和该index.php文件被用作了这些操作的指数。

然后,我们将设置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的RAM可用。

首先,我们可以通过键入以下内容创建一个空的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并准备好了。 您可以在网络浏览器中访问您的服务器的域或IP地址,以查看默认目标网页:

http://server_domain_or_IP

Laravel默认目标网页

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

结论

你现在应该有Laravel在你的服务器上运行。 Laravel是一个相当灵活的框架,它包括许多工具,可以帮助你以一种结构化的方式构建一个应用程序。

要了解如何使用Laravel来构建应用程序,检查出Laravel文档