Статьи

Настройка серверов PHP 7 с Laravel Forge и DigitalOcean

Одним из самых популярных запросов в нашем опросе об уровне удовлетворенности читателей было больше контента на PHP 7. В этом кратком руководстве мы рассмотрим два способа подключения сервера PHP 7 к сети на DigitalOcean — популярном поставщике VPS.

Мы будем использовать два подхода, последний из которых будет применим к любой установке Ubuntu, тогда как первый будет работать только на DigitalOcean. Если у вас нет учетной записи DigitalOcean, но вы хотите подписаться, не стесняйтесь получить два бесплатных месяца с помощью этого кода ссылки .

Логотип DigitalOcean

PHP 7 локально

Если вы хотите работать с PHP 7 локально, используйте нашу Homestead Improved — она ​​уже работает под управлением PHP 7 по умолчанию. Более того, это почти та же самая настройка, которую вы в итоге получите, используя Laravel Forge ниже.

Laravel Forge

Laravel Forge — это коммерческий сервис для развертывания и подготовки серверов под управлением PHP. Это распространенное заблуждение, что все, что носит имя Laravel, непосредственно связано с Laravel и требует его, но это не так. На данный момент Laravel — это торговая марка, которая включает в себя множество инструментов — так же, как можно использовать Zend Studio или Zend Server без использования Zend Framework. Таким образом, в настоящее время Forge можно использовать для настройки серверов для DigitalOcean, AWS или Linode. Как мы уже говорили во введении к этому посту, мы будем использовать DigitalOcean.

После того, как вы зарегистрируетесь в Forge (есть 5-дневная пробная версия) и настроите свою учетную запись, перейдите на страницу создания сервера.

Обратите внимание, что хотя 5 дней могут показаться малыми, этого достаточно для тестирования развертывания или двух. Это не означает, что ваш сервер будет убит через 5 дней — это просто означает, что вы не сможете управлять им из Forge или создавать новые после истечения пробного периода. Пробная версия действительно предоставляет вам полный сервис. К сожалению, для этого также требуется кредитная карта — можно надеяться, что позже они откажутся от этого требования, чтобы облегчить регистрацию новых пользователей.

Если вы будете следовать только ради этого эксперимента, выберите сервер самого низкого уровня. Измените другие параметры по своему усмотрению.

Страница создания сервера

Оставьте все флажки снятыми — первый нужен только для приложений с высокой нагрузкой. HHVM предназначен для людей, которые любят жить на переднем крае и экспериментировать с альтернативными средами исполнения . Включить резервное копирование — это опция DigitalOcean, которая повышает цену капли на 20% и делает еженедельные снимки капли, чтобы ее можно было легко восстановить, если что-то пойдет не так.

Включить резервное копирование на DO

Я не рекомендую устанавливать эту опцию — она ​​излишне удорожает вещи, а еженедельное резервное копирование в мире, столь же быстрому, как у нас, не так уж и полезно — вместо этого лучше выбрать пользовательский вариант ежедневного резервного копирования. Это то, что обязательно должно быть указано на экране создания сервера, так как оно может стать непредвиденной стоимостью. Кроме того, при необходимости его можно активировать после создания на экране конфигурации капли в панели управления DigitalOcean.

После нажатия кнопки «Создать сервер» начнется процесс подготовки и создания. Это может занять некоторое время.

Подготовка сервера

Как только сервер подготовлен, мы можем настроить его через интерфейс, напоминающий такие инструменты, как PuPHPet .

Конфигурация сервера

На данный момент, Forge предоставляет некоторые невероятно практичные функции, возможно, оправдывая свою цену одним махом. Из графического интерфейса для редактирования конфигурации PHP …

Интерфейс конфигурации PHP-FPM

… К настройкам частной сети между серверами (так что легко добавить отдельный сервер только в качестве базы данных или, например, один для очередей), интерфейсы загрузки ключей SSH, демоны для поддержания работы служб и т. Д. Не стесняйтесь изучать их все на Ваш собственный досуг.

Для развертывания у меня есть небольшая панель управления учетными записями Diffbot, которую я разрабатываю, изучая VueJS , и кажется, что это идеальная вещь, чтобы попробовать. Вы можете клонировать / разветвлять его здесь .

Давайте попробуем это. Во-первых, давайте удостоверимся, что наш сервер работает и обслуживает контент PHP 7. Мы можем сделать это, посетив IP-адрес сервера в браузере:

Сервер работает

Все хорошо! Теперь давайте добавим новый сайт. Не настраивая выделенный домен, давайте просто воспользуемся IP-адресом и изменим сайт по умолчанию, добавленный с помощью forge, нажав кнопку «Изменить». На следующем экране мы сможем привязать репозиторий Github к создаваемому нами приложению — вот где начинается вышеупомянутое репозиторий Dash.

Привязка репо к приложению

Этот тип привязки также позволит нам настроить автоматическое развертывание («Быстрое развертывание», выбирается на следующем экране), которое будет повторно развертывать наше приложение всякий раз, когда делается репо. Прежде чем приступить к развертыванию, нам нужно немного изменить сценарий развертывания, удалив строку с упоминанием artisan Теперь мы можем нажать «Развернуть сейчас».

К сожалению, нет способа узнать, было ли развертывание успешным — в верхней части экрана отображаются только ошибки — но обновление IP-адреса в браузере показывает, что все в порядке.

Emmet вид нескольких панелей

С активированным Quick Deploy любые изменения, которые мы нажимаем, немедленно отражаются в нашем приложении. Как мы уже говорили, обидно, что нас не уведомляют о новых успешных развертываниях. Вот и все — это так просто настроить базовое приложение с помощью Forge. Теперь давайте сделаем то же самое вручную — не стесняйтесь удалять сервер с главного экрана Forge — он сохранит кредиты вашей учетной записи.

Ручная установка

Сначала мы вручную создаем новую капельку по адресу https://cloud.digitalocean.com/droplets/new . Те же настройки, что и в Forge — Ubuntu 14.04, ближайший регион, сервер самого низкого уровня ($ 5). Все флажки могут быть не отмечены. Как только капля была создана, есть несколько шагов, чтобы пройти. Прежде всего, сервер должен быть защищен и выполнены дополнительные настройки . Эти шаги не нужны при создании сервера с Forge.

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

 sudo apt-get update
sudo apt-get install git nginx

После этого наш сервер будет доступен и доступен через свой IP-адрес. Теперь давайте установим PHP 7.

 sudo add-apt-repository ppa:ondrej/php-7.0
sudo apt-get update
sudo apt-get install php7.0-fpm

Теперь нам нужно изменить настройку vhost для сайта Nginx по умолчанию.

 sudo vim /etc/nginx/sites-available/default

Как только мы активируем режим вставки с помощью i

  • под indexindex.php
     index index.php index.html index.htm;`
    
  • в блоке «PHP» мы раскомментируем некоторые строки и редактируем .sock
     	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    
        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    
                # With php5-cgi alone:
                # fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
    

Выход из режима insertesc:x Наконец, мы перезапускаем сервер с помощью:

 sudo service nginx restart

Если мы теперь добавим файл phpinfo

 sudo vim /usr/share/nginx/html/index.php

… и содержимое файла:

 <?php

phpinfo();

Рабочий информационный экран

Теперь, когда PHP 7 работает, давайте изменим корневое местоположение сервера по умолчанию на /var/www/dash/public Как правило, мы будем создавать новый файл конфигурации с пользовательским корневым каталогом для каждого приложения, которое мы развертываем, но для этого также потребуется собственный домен — то, что мы не подготовили на данный момент.

Затем нужно просто создать папку и клонировать приложение прямо в нее:

 mkdir /var/www
git clone https://github.com/swader/diffbot-dash dash
sudo service nginx restart

Как только это будет сделано, приложение должно работать так же, как в Forge — с одним исключением. Будущие подталкивания к репо пришлось бы переносить на сервер вручную. Непрерывное развертывание третьей стороной выходит за рамки данного руководства, но мы уже рассматривали его с помощью таких инструментов, как Deploybot .

Другое отличие от подхода Forge заключается в том, что мы установили здесь только минимум программного обеспечения — ни MySQL, ни Postgre, ни даже NodeJS и его адское потомство, NPM. Все очень, очень ручное — полный мелкозернистый контроль, но по общему признанию не у каждого чашка чая.

Возможно, вы думаете, что ручное развертывание кажется проще и дешевле, чем в Forge, и, в некотором смысле, вы были бы правы — для приложения, столь же простого, как то, с которым мы имели дело, Forge, вероятно, излишне. Но когда все становится сложнее, когда вам приходится обслуживать несколько приложений на сервер или развертывать более крупные, более продвинутые приложения с миграцией базы данных, резервным копированием и многим другим — преимущества Forge становятся очевидными.

Вывод

В этом руководстве мы разместили наше приложение на сервере PHP 7, работающем на дроплете DigitalOcean, с использованием Laravel Forge, популярной службы развертывания серверов. Мы также использовали старый метод ручной установки. Последний может быть легко применен к любому серверу, работающему под управлением Ubuntu — так что идите вперед и 7-й!

Для краткости мы пропустили дополнительные этапы, такие как автоматическое тестирование и перехват развертывания, или настройки базы данных. Если это то, что вас заинтересует, дайте нам знать в комментариях ниже, и мы опубликуем продолжение, расширяющее два подхода выше, путем развертывания более корпоративного приложения.

Вы используете Laravel Forge? Или вы предпочитаете использовать другой способ? Дайте нам знать об этом в комментариях!