如何在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 文档。