Обзор

Nanobox - это портативная микроплатформа для разработки и развертывания приложений. При локальной работе Nanobox использует Docker для ускорения и настройки виртуальной среды разработки, настроенной в соответствии с вашими потребностями. Когда вы будете готовы к развертыванию на живых серверах, Nanobox возьмет ту же среду и раскрутит ее в своем облачном провайдере, где вы сможете управлять своим приложением и масштабировать его с помощью панели управления Nanobox.

Локальная разработка

Nanobox можно использовать для локальной разработки в любом количестве проектов (не только в PHP). Чтобы начать работать с nanobox, сначала  создайте бесплатную учетную запись Nanobox, а затем загрузите и запустите установщик Nanobox. Учетная запись используется только для входа в nanobox с помощью командной консоли. Nanobox запомнит ваши учетные данные, поэтому вам нужно сделать это только один раз. Если вы намерены использовать nanobox только локально, вам не нужно делать ничего другого. Однако тот же логин можно использовать позже, если вы хотите развернуть приложение в реальной среде.

Создание нового проекта

Создайте папку проекта и cd перейдите в нее:

mkdir nanobox-phalcon && cd nanobox-phalcon

Добавить boxfile.yml

Nanobox использует boxfile.yml для создания и настройки среды выполнения и среды вашего приложения. В корне вашего проекта создайте boxfile.yml со следующим:

run.config:
  engine: php
  engine.config:
    runtime: php-7.2
    document_root: public
    extensions:
      - phalcon
  extra_steps:
    #===========================================================================
    # PSR компиляция расширений
    - |
      (
        CURRENT_FOLDER=$(pwd)
        rm -fR /tmp/php-psr
        cd /tmp/build
        git clone --depth=1 https://github.com/jbboehr/php-psr.git
        cd php-psr
        set -e
        phpize
        ./configure --with-php-config=$(which php-config)
        make -j"$(getconf _NPROCESSORS_ONLN)"
        make install
        cd $CURRENT_FOLDER
        rm -fR /tmp/php-psr
        unset CURRENT_FOLDER
      )
    - echo -e 'extension=psr.so' >> "/data/etc/php/dev_php.ini"
    - echo "alias phalcon=\'phalcon.php\'" >> /data/var/home/gonano/.bashrc

Это говорит Nanobox:

  • Используй  движок PHP, набор скриптов, которые создают среду выполнения вашего приложения.
  • Используй PHP 7.2.
  • Установить для корня документа Apache значение public.
  • Включить расширение Phalcon. Nanobox использует простой подход к расширениям, поэтому вам, вероятно, придется включить другие расширения. Более подробную информацию можно найти здесь.
  • Установить необходимое расширение PSR
  • Добавить bash псевдоним для Phalcon Devtools, чтобы вы могли просто использовать команду phalcon.

В зависимости от потребностей вашего приложения может потребоваться добавить дополнительные расширения. Например, вы можете добавить mbcrypt, igbinary, json, session и redis. Ваш раздел extensions в  boxfile.yml будет выглядеть так:

run.config:
  engine: php
  engine.config:
    extensions:
      - json
      - mbstring
      - igbinary
      - session
      - phalcon
      - redis

ПРИМЕЧАНИЕ. Порядок расширений имеет значение. Некоторые расширения не будут загружаться, если их предварительные требования не загружены. Например, igbinary должен быть загружен перед redis и т.п.

Добавьте Phalcon Devtools к вашему composer.json

Создайте файл composer.json в корне проекта и добавьте пакет phalcon/devtools в требования к разработчику:

{
    "require-dev": {
        "phalcon/devtools": "~3.0.3"
    }
} 

ПРИМЕЧАНИЕ. Версия Phalcon Devtools зависит от используемой версии PHP, а также от версии Phalcon.

Запустите Nanobox и создайте новое приложение Phalcon

В корневом каталоге вашего проекта выполните следующие команды, чтобы запустить Nanobox и создать новое приложение Phalcon. Когда Nanobox запускается, движок PHP автоматически установит и включит расширение Phalcon, запустив composer install который установит Phalcon Devtools, а затем поместит вас в интерактивную консоль в виртуальной среде. Ваш рабочий каталог монтируется в каталог /app на виртуальной машине, поэтому после внесения изменений они будут отражены как на виртуальной машине, так и в вашем локальном рабочем каталоге.

# запустить nanobox и зайдать в консоль nanobox
nanobox run

# перейти в каталог /tmp
cd /tmp

# создать новое приложение phalcon
phalcon project myapp

# вернуться в каталог /app
cd -

# скопировать сгенерированное приложение в ваш проект
cp -a /tmp/myapp/* .

# выйти из консоли
exit

Запустить приложение

Перед тем, как запускать новое приложение Phalcon, мы рекомендуем использовать Nanobox для добавления псевдонима DNS. Это добавит запись в ваш локальный hosts файл, указывающий на вашу среду разработки и предоставляющий удобный способ доступа к вашему приложению из браузера.

nanobox dns add local phalcon.dev

В качестве альтернативы можно использовать IP-адрес контейнера. IP-адрес отображается при первом запуске контейнера. Если вы забыли или не заметили его, на отдельном терминале перейдите в ту же папку, что и ваш проект, и введите

nanobox info local

Вывод этой команды покажет вам все IP-адреса, контейнеры и компоненты, а также пароли к базам данных (если применимо).

Nanobox предоставляет вспомогательный скрипт php-server , который запускает как Apache (или Nginx в зависимости от конфигурации boxfile.yml ), так и PHP. При передаче с помощью команды nanobox run он запускает локальную среду разработки и сразу же запускает ваше приложение.

nanobox run php-server

После запуска вы можете посетить свое приложение на https://phalcon.dev.

Проверьте окружающую среду

Ваша виртуальная среда включает в себя все необходимое для запуска приложения Phalcon.

# зайти в консоль Nanobox
nanobox run

# проверить версию php
php -v

# проверить, что phalcon devtools доступны
phalcon info

# проверить, что ваша локальная кодовая база смонтирована
ls

# выйти из консоли
exit