Как установить 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 Мб Droplet).

Пространство подкачки позволит операционной системе временно перемещать данные из памяти на диск, когда объем информации в памяти превышает объем доступной физической памяти. Это предотвратит сбой ваших приложений или системы с исключением из-за нехватки памяти (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 default landing page

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

Заключение

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

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

Related