CodeIgniter – это достаточно популярный PHP-фреймворк, ориентированный в первую очередь на то, чтобы быстро создавать веб-приложения. Ключевыми особенностями CodeIgniter являются его впечатляющая скорость работы. И необычайно низкий порог вхождения для новичков и начинающих разработчиков. Этот фреймворк особенно ценят любители создания «с нуля» своих сайтов и даже CMS (системы управления контентом), т. к. CodeIgniter действительно довольно прост в освоении и использовании. Нередко клиенты веб-хостингов интересуются возможностью предустановки на хостинге этого фреймворка. В этой статье будет рассмотрена как сама установка CodeIgniter, так и основы закладки «фундамента» для построения веб-приложений (сайтов) на его основе.
Как это работает?
Фреймворк CodeIgniter построен по архитектуре MVC (Model View Controller). Которая предполагает высокую степень разделения логики работы и отображения данных. Другими словами, в модели присутствуют несколько функциональных слоёв, т. е. PHP-код, данные и отображение чётко разделены.
Ядро фреймворка можно установить отдельно в системе — это функциональный слой. К которому подключается слой управления (контроллеры). Последний может (и должен в отличие от ядра фреймворка) дополняться, модифицироваться в соответствии с идеями разработчиков, создающих веб-приложение, т. е. это бэкенд. Ещё один слой — отображения или «представления» (Views). Ничто иное как вывод и оформление на страницах в веб-браузере — фронтенд. Такая концепция позволяет вести параллельную разработку несколькими участниками проекта гораздо более эффективно. Не задумываясь над реализацией взаимодействия между слоями (контроллеры и представления). Поскольку они предусмотрены самой архитектурой CodeIgniter.
Состав дистрибутива CodeIgniter
Назначение основных компонентов дистрибутива CodeIgniter раскрывает принцип построения самих веб-приложений на его основе:
- system – каталог, содержащий, собственно, само ядро фреймворка. Которое можно вынести отдельно. Туда, где хранятся сторонние исполняемые файлы и библиотеки системы (например в файловую систему /opt на отдельном разделе) с соответсвующими безопасными разрешениями для обычных пользователей;
- application – каталог, содержащий функциональный слой уже самого веб-приложения (сайта). И в котором разработчиками добавляется и реализуется его логика работы. Это бэкенд проекта;
- корень и файл index.php – это корневой каталог веб-приложения и его индексный файл. Сюда же обычно добавляются вспомогательные подкаталоги с ресурсами веб-приложения — темы оформления (представления), пиктограммы, изображения и т. д., т. е. фронтенд.
Каталог application хранит дочерние контроллеры (определённые разработчиком), унаследованные от родительского контроллера (CI_Controller). Который реализован в ядре CodeIgniter из каталога system. Таким образом, построение веб-приложений на фреймворке CodeIgniter – ничто иное как расширение и распространение возможностей фреймворка на основе парадигм объектно-ориентированного программирования. Само же расширение производится в каталоге application. Сюда же можно добавлять новые или сторонние библиотеки. Подключая их к ядру через дочерние контроллеры. При этом нисколько не затрагивая и не видоизменяя код самого ядра фреймворка CodeIgniter в каталоге system.
Установка CodeIgniter
Итак, для начала нужно загрузить со страницы официального сайта сам дистрибутив CodeIgniter:
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.10.zip
Теперь можно сразу распаковать всё содержимое загруженного архива в каталог с виртуальными хостами веб-сервера, в данном случае это каталог htdocs/ в домашней директории пользователя:
$ unzip 3.1.10.zip -d ~/htdocs
В результате, полный путь к фреймворку будет следующим:
/home/john/htdocs/CodeIgniter-3.1.10
В данном случае все действия, как можно заметить, происходят для учётной записи пользователя john. На данном этапе следует обратить внимание на то, что в каталоге CodeIgniter-3.1.10 находится и фреймворк (каталог system). И собственно каркас самого веб-приложения (каталог application и файл index.php), использующего этот фреймворк. Никто не запрещает «носить с собой» фреймворк. Однако целесообразнее (ведь это же фреймворк) и безопаснее вынести его, как отмечалось выше, в отдельное место. Далее, в индексном файле веб-приложения /index.php, нужно указать расположение фреймворка с помощью абсолютного пути. Задав соответствующую переменную в этом файле, например:
$system_path = ‘/opt/codeigniter-3.1.10/system’;
Теперь нужно, собственно, установить фреймворк CodeIgniter, вынеся его отдельно. Это сделает его доступным для всех пользователей в системе:
$ sudo mv ~/htdocs/CodeIgniter-3.1.10/system /opt/codeigniter-3.1.10/
При этом необходимо, конечно удостовериться, что для каталога /opt/codeigniter-3.1.10
и его содержимого заданы соответствующие права доступа, позволяющие использовать его остальным пользователям без ущерба безопасности. Также можно для удобства переименовать каталог с тестовым виртуальным хостом CodeIgniter-3.1.10:
$ mv ~/htdocs/CodeIgniter-3.1.10 ~/htdocs/codeigniter-test
Также нужно удостовериться, что фронтенд для веб-приложения в каталоге ~/htdocs/codeigniter-test использует соответствующий подкаталог application. Для этого существует отдельная переменная в файле index.php:
$application_folder = ‘application’;
Теперь необходимо сконфигурировать виртуальный хост веб-сервера для каталога ~/htdocs/codeigniter-test
и перейти по соответствующему адресу в веб-браузере:
На этом установка и базовая настройка фреймворка CodeIgniter завершена. При данном варианте установки, т. е. когда разработчикам веб-приложений не нужно «носить с собой» фреймворк CodeIgniter. Администратору сервера необходимо предоставлять информацию о расположении CodeIgniter в системе. Пользователи просто подключат для своих приложений уже установленный на сервере фреймворк, используя индексный файл приложения, как описано выше. Естественно, место для установки CodeIgniter в таком случае должно отвечать оптимальным требованиям безопасности администрируемого сервера.
Обеспечение дополнительной безопасности
Вообще, для защиты веб-приложения от прямого доступа к его файлам на сервере (мало ли, какая дыра может появиться на хостинге) можно выносить также и каталог application. Куда-нибудь вне корневого каталога виртуального хоста самого веб-приложения. В данном случае каталога codeigniter-test. Также можно изменить и расположение каталога представлений (Views). Которое задаётся переменной $view_folder в файле index.php веб-приложения. По-умолчанию этот каталог имеет расположение /application/views/
.
О том, как обеспечить безопасность и как вообще работать с фреймворком CodeIgniter можно более подробно почитать на страницах официального руководства в виде HTML-справки. Поставляемой прямо с дистрибутивом CodeIgniter в подкаталоге user_guide и доступной через файл index.html.
Заключение
В заключение необходимо отметить, что установка CodeIgniter на сервере — это всего лишь дополнительный шаг на встречу пользователям и/или клиентам системы для упрощения использования фреймворка. Опытные пользователи и разработчики, как можно видеть из данной статьи, могут самостоятельно использовать его независимо от существующей конфигурации сервера.