Поиск по сайту:

Как установить Laravel с веб-сервером Nginx в Ubuntu 14.04


Введение

Laravel — это современный PHP-фреймворк с открытым исходным кодом для веб-разработчиков. Он призван предоставить разработчикам простой и элегантный способ быстро запустить полнофункциональное веб-приложение.

В этом руководстве мы обсудим, как установить Laravel на Ubuntu 14.04. Мы будем использовать Nginx в качестве нашего веб-сервера и будем работать с самой последней версией Laravel на момент написания этой статьи — версии 4.2.

Установите внутренние компоненты

Первое, что нам нужно сделать, чтобы начать работу с Laravel, — это установить стек, который будет его поддерживать. Мы можем сделать это через репозитории Ubuntu по умолчанию.

Во-первых, нам нужно обновить наш локальный индекс пакетов, чтобы убедиться, что у нас есть свежий список доступных пакетов. Затем мы можем установить необходимые компоненты:

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

Это установит Nginx в качестве нашего веб-сервера вместе с инструментами PHP, необходимыми для фактического запуска кода Laravel. Мы также устанавливаем git, потому что инструмент composer, менеджер зависимостей для PHP, который мы будем использовать для установки Laravel, будет использовать его для извлечения пакетов.

Изменить конфигурацию PHP

Теперь, когда наши компоненты установлены, мы можем приступить к их настройке. Мы начнем с PHP, который довольно прост.

Первое, что нам нужно сделать, это открыть основной файл конфигурации PHP для процессора PHP-fpm, который использует Nginx. Откройте это с привилегиями 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 и веб-корень

Следующий элемент, который мы должны рассмотреть, — это веб-сервер. На самом деле это будет включать два отдельных шага.

Первым шагом является настройка корневого каталога документа и структуры каталогов, которые мы будем использовать для хранения файлов 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, было бы неплохо включить некоторый обмен на вашем сервере, чтобы сборка завершилась правильно. Как правило, это необходимо только в том случае, если вы работаете на сервере с небольшим объемом памяти (например, на 512-мегабайтном дроплете).

Пространство подкачки позволит операционной системе временно перемещать данные из памяти на диск, когда объем информации в памяти превышает доступный объем физической памяти. Это предотвратит сбой ваших приложений или системы из-за исключения нехватки памяти (OOM) при выполнении задач с интенсивным использованием памяти.

Мы можем очень легко настроить некоторое пространство подкачки, чтобы наша операционная система могла перетасовать некоторые из них на диск, когда это необходимо. Как упоминалось выше, это, вероятно, необходимо только в том случае, если у вас менее 1 ГБ оперативной памяти.

Во-первых, мы можем создать пустой файл размером 1 ГБ, набрав:

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. Веб-пользователь нуждается в частичном владении и разрешениях, чтобы правильно обслуживать контент.

Мы можем передать групповое владение нашей структурой каталогов Laravel веб-группе, набрав:

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

Затем мы можем изменить права доступа к каталогу /var/www/laravel/app/storage, чтобы предоставить веб-группе права на запись. Это необходимо для корректной работы приложения:

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

Теперь у вас полностью установлен Laravel и он готов к работе. Вы можете увидеть целевую страницу по умолчанию, посетив домен или IP-адрес вашего сервера в веб-браузере:

http://server_domain_or_IP

Теперь у вас есть все необходимое, чтобы начать создавать приложения с помощью фреймворка Laravel.

Заключение

Теперь у вас должен быть запущен и запущен Laravel на вашем сервере. Laravel — довольно гибкая среда, включающая в себя множество инструментов, которые помогут вам структурировать приложение.

Чтобы узнать, как использовать Laravel для создания приложения, ознакомьтесь с документацией Laravel.