Создание и запуск проекта PHPixie на macOS с помощью ServBay
PHPixie — это легковесный и высокопроизводительный PHP фреймворк, предназначенный для быстрого создания веб-приложений. Он реализует архитектуру HMVC (Hierarchical Model-View-Controller), предлагая понятную структуру кода и эффективную обработку запросов. Благодаря простоте, гибкости и высокой скорости PHPixie завоевал популярность среди многих разработчиков.
Основные особенности и преимущества PHPixie
- Легковесность: Ядро PHPixie максимально компактно, содержит только необходимые для работы компоненты, поэтому фреймворк запускается и работает очень быстро.
- Высокая производительность: Продуманная архитектура позволяет эффективно обрабатывать веб-запросы, что идеально для приложений с высокими нагрузками.
- Простота изучения: Четкое API и подробная документация позволяют быстро освоить работу с фреймворком.
- Гибкость: Слабосвязанная структура обеспечивает легкую интеграцию сторонних библиотек и компонентов по необходимости.
- Активное сообщество: Фреймворк поддерживает развивающееся сообщество, предлагающее расширения и помощь в решении возникающих вопросов.
PHPixie позволяет быстро создавать качественные и производительные веб-проекты, от небольших сайтов до корпоративных решений.
Как создать и запустить проект PHPixie с помощью ServBay
В этом руководстве вы узнаете, как развернуть локальную среду разработки на основе ServBay для создания и запуска проекта PHPixie. Мы используем интегрированный PHP, Composer для управления зависимостями и функцию "Веб-сайты" для настройки веб-сервера, а также подробно рассмотрим интеграцию с базами данных и системами кеширования.
Предварительные условия
- ServBay установлен и запущен на macOS. В ServBay уже интегрированы PHP, Composer, основные базы данных (MySQL, PostgreSQL, MongoDB, Redis и другие), а также Caddy для работы с веб-сервером.
- Уровень владения командной строкой — базовый.
Создание проекта PHPixie
Рекомендуемый путь хранения сайта
Рекомендуется размещать все локальные проекты в директории /Applications/ServBay/www
— так проще администрировать доступы и интеграцию через ServBay.
- Проверьте Composer: Composer уже предустановлен в ServBay. Дополнительная установка не требуется. Проверьте его наличие командой
composer --version
в терминале. - Создайте директорию проекта: Перейдите в рекомендуемую папку, создайте каталог для нового проекта и войдите в него:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Создайте проект с помощью Composer: Внутри каталога выполните:bashПосле этого Composer загрузит шаблон PHPixie с необходимыми зависимостями.
composer create-project phpixie/project .
1
Настройка веб-сервера
Для запуска проекта используйте функцию Веб-сайты в ServBay и настройте Caddy так, чтобы он корректно обслуживал ваш проект PHPixie.
Откройте приложение ServBay.
Перейдите в раздел Веб-сайты (Websites).
Добавьте новый сайт.
Укажите данные для сайта:
- Имя: Например,
My First PHPixie Dev Site
(идентификатор сайта). - Домен: Например,
servbay-phpixie-test.local
— это будет локальный адрес сайта. - Тип сайта: Выберите
PHP
. - Версия PHP: Укажите нужную, например
8.3
. - Корневая директория (Document Root): Укажите папку
web
вашего проекта:/Applications/ServBay/www/servbay-phpixie-app/web
.
Почему выбираем директорию
/web
?Файл входа PHPixie —
web/index.php
. По соображениям безопасности и стандартам root сервера всегда должен указывать на директорию с этим файлом, а не на корень всего проекта. Это предотвращает доступ к чувствительным данным (например, к конфигурациям или папке vendor).- Имя: Например,
Сохраните настройки. ServBay автоматически обновит конфигурацию Caddy и файл hosts (при необходимости), чтобы домен
servbay-phpixie-test.local
указывал на ваш локальный сервер.
Подробную инструкцию смотрите в Добавление первого сайта.
Добавление примера кода
Для проверки работоспособности проекта и демонстрации интеграции с базой данных и кешем — добавим несколько примерных файлов.
Создаем контроллер: Добавьте новый файл
src/App/HTTP/Controller/Home.php
, либо вручную создайте путь, если он отсутствует.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Подключаем класс Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Действие по умолчанию — главная страница public function action_index(Request $request) { // Отобразить шаблон assets/templates/app/home.php return $this->template->render('app:home'); } // Пример работы с Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Сохраняем данные, время жизни 60 секунд $value = $cache->get('key'); // Получаем значение по ключу return $this->response()->string($value); // Возвращаем строку } // Пример работы с Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Сохраняем значение $value = $redis->get('key'); // Получаем данные return $this->response()->string($value); // Возвращаем строку } // Пример добавления пользователя в MySQL/PostgreSQL public function action_add_user(Request $request) { // Получаем билдер запросов из компонента базы данных $query = $this->components->database()->query(); // Вставляем новую запись в таблицу 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Генерируем уникальный email ])->execute(); // Выполняем вставку return $this->response()->string('User added successfully.'); // Возвращаем сообщение об успехе } // Пример вывода списка пользователей public function action_list_users(Request $request) { // Получаем билдер запросов из компонента базы данных $query = $this->components->database()->query(); // Делаем выборку всех пользователей $users = $query->select('*')->from('users')->execute()->fetchAll(); // Получаем все результаты return $this->response()->json($users); // Возвращаем список в формате JSON } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Добавляем шаблон: В файле
assets/templates/app/home.php
разместите:php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Ссылки на демонстрацию функций:</h2> <ul> <li><a href="/home/memcached">Тест Memcached</a></li> <li><a href="/home/redis">Тест Redis</a></li> <li><a href="/home/add_user">Добавить пользователя в базу</a></li> <li><a href="/home/list_users">Показать пользователей из базы</a></li> </ul> <p>Пожалуйста, убедитесь, что вы выполнили все шаги по настройке базы данных и кеширования.</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Доступ к сайту
После настройки сайта в ServBay и добавления примерного кода откройте выбранный домен в браузере:
- Запустите браузер и перейдите по адресу
https://servbay-phpixie-test.local
. - Вы должны увидеть страницу с заголовком "Welcome to PHPixie on ServBay" и список функциональных ссылок.
Если страница не открывается, проверьте:
- Активен ли ServBay.
- Правильно ли указаны данные сайта: домен, тип и путь к папке.
- Корректно ли прописан домен
servbay-phpixie-test.local
в hosts (обычно ServBay настраивает сам). - Активирована ли нужная версия PHP в ServBay.
Интеграция с базами данных и кешем
PHPixie из коробки поддерживает различные базы и кеш-системы. В ServBay предустановлены MySQL, PostgreSQL, Redis, Memcached — их легко подключать к проекту.
Важное замечание: Перед началом работы с базой данных убедитесь, что соответствующие службы (например, MySQL или PostgreSQL) запущены через ServBay, и создана база данных для вашего проекта. В примере используется база под названием servbay_phpixie_app
. Для создания базы можно использовать GUI-инструменты типа Sequel Ace, Postico, TablePlus или терминал. Обычно пользователь MySQL по умолчанию — root
, пароль — password
(можно проверить актуальные данные в настройках ServBay).
Настройка соединения с базой данных
В зависимости от используемой СУБД отредактируйте файл assets/config/database.php
— адрес сервера в ServBay по умолчанию 127.0.0.1
.
Пример настройки MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Строка подключения — смотрите тип вашей базы и настройку ServBay
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // стандартный пользователь ServBay
'password' => 'password', // стандартный пароль ServBay (уточняйте свои настройки!)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Пример для PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Строка подключения — PostgreSQL с настройками ServBay
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // стандартный пользователь ServBay
'password' => 'password', // стандартный пароль ServBay (уточняйте свои настройки!)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Создание таблицы базы данных (миграции)
PHPixie поддерживает инструмент командной строки для управления миграциями — удобно версионировать структуру базы.
- В терминале перейдите в корень проекта:bash
cd /Applications/ServBay/www/servbay-phpixie-app
1 - Создайте файл миграции для таблицы пользователей:bashНовый файл появится в директории
php pixie generate:migration create_users_table
1assets/migrations
— его название будет содержать дату и время. - Отредактируйте файл миграции (например,
YYYY_MM_DD_HHMMSS_create_users_table.php
):php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // С помощью билдера schema создаем таблицу 'users' $this->schema->create('users', function(Table $table) { $table->increments('id'); // автонумеруемый первичный ключ $table->string('name'); // колонка для имени $table->string('email')->unique(); // уникальная колонка для email $table->timestamps(); // колонки времени создания/изменения }); } public function down() { // Удаляем таблицу 'users' $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 - Запустите миграцию:bashЕсли миграция проходит успешно, сервис выдаст подтверждение. Проверьте наличие таблицы в вашей базе с помощью GUI или терминала.
php pixie migrate
1
Использование реляционных баз данных (MySQL/PostgreSQL)
В приведённом выше контроллере (src/App/HTTP/Controller/Home.php
) реализованы индивидуальные методы для взаимодействия с MySQL или PostgreSQL:
- Добавить пользователя: Откройте
https://servbay-phpixie-test.local/home/add_user
— будет создан новый пользователь в таблицеusers
. - Показать список пользователей: Откройте
https://servbay-phpixie-test.local/home/list_users
— отобразятся все записи в формате JSON.
Конфигурация и использование NoSQL (Memcached/Redis)
ServBay автоматически устанавливает Memcached и Redis с необходимыми расширениями PHP. Достаточно прописать их параметры в проекте.
Пример Memcached (assets/config/cache.php
):
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // стандартный адрес Memcached в ServBay
'port' => 11211, // стандартный порт Memcached
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Пример Redis (assets/config/redis.php
):
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // стандартный адрес Redis в ServBay
'port' => 6379, // стандартный порт Redis
'timeout' => 0,
'database' => 0, // индекс базы Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Использование Memcached/Redis:
В контроллере src/App/HTTP/Controller/Home.php
предусмотрены методы action_memcached
и action_redis
для демонстрации работы с кешем (конкретный тип выбирается через конфигурацию).
- Тест Memcached: Откройте
https://servbay-phpixie-test.local/home/memcached
— сохранение и извлечение данных в Memcached. - Тест Redis: Откройте
https://servbay-phpixie-test.local/home/redis
— аналогичные действия с Redis.
Убедитесь, что соответствующие сервисы (Memcached и Redis) запущены в ServBay.
Итоги
Теперь вы умеете создавать, настраивать и запускать проект PHPixie на локальной macOS-среде с ServBay. Вы научились управлять зависимостями через Composer, настраивать веб-сервер через "Веб-сайты" ServBay, выполнять базовую интеграцию с базами данных и кешем, а также тестировать работоспособность этих компонентов.
ServBay — отличный инструментарий для ускорения развертывания и упрощения настройки PHP-проектов, позволяющий сосредоточиться на написании кода. Надеемся, это руководство поможет вам успешно стартовать новый проект на PHPixie!