Установка Laravel и Nginx в Ubuntu 14.04

Published by Leave your thoughts

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

Это руководство поможет установить Laravel на сервер Ubuntu 14.04. В качестве веб-сервера в руководстве используется Nginx.

Установка компонентов бэк-энда

Сначала нужно установить программный стек для поддержки фреймворка. Для этого обратитесь к стандартным репозиториям 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-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 и root-каталога

После этого нужно настроить веб-сервер.

Во-первых, необходимо настроить document root проекта (root-каталог), в котором Laravel будет хранить файлы. Таким каталогом будет /var/www/laravel.

На данный момент существует только /var.

Чтобы создать весь путь, используйте команду mkdir с аргументом –p, который создаст все необходимые родительские каталоги.

sudo mkdir -p /var/www/laravel

Теперь компоненты приложения будут храниться в отдельном каталоге.

Во-вторых, нужно настроить блоки server – виртуальные хосты 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;
}
}

Сначала нужно изменить местонахождение каталога document root. Laravel будет установлен в /var/www/laravel. Но блок server будет искать файлы приложения в подкаталоге 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. Веб-сервер Nginx в первую очередь должен пытаться обслужить запрос в виде файла. Если Nginx не может найти файл с указанным именем, он должен попытаться обслужить стандартный index-файл каталога, который соответствует запросу. В противном случае, он должен передать запрос к файлу 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;
}
}

Сохраните и закройте файл.

Поскольку стандартный блок уже активирован, нужно просто перезапустить Nginx, чтобы обновить настройки.

sudo service nginx restart

Создание swap-файла (опционально)

Прежде чем приступить к установке Composer и Laravel, нужно настроить swap-пространство, чтобы сборка программ прошла успешно.

Примечание: Это необходимо только на серверах с небольшим объёмом памяти.

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

Для начала создайте пустой файл размером в 1GB:

sudo fallocate -l 1G /swapfile

Отформатируйте этот файл как swap:

sudo mkswap /swapfile

В завершение включите swap-пространство, чтобы система могла его использовать:

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. Чтобы начать установку, введите:

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 полностью завершена. Чтобы просмотреть стандартную посадочную страницу, откройте в браузере:

http://server_domain_or_IP

Теперь можно приступать к разработке приложения Laravel.

Заключение

Laravel – довольно гибкий фреймворк с большим количеством инструментов для разработки структурированных приложений.

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

Tags: , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>