Что такое CodeIgniter?
CodeIgniter (или CI) – это легкий, но при этом очень мощный открытый фреймворк веб-приложений для PHP. Его цель – ускорить и упростить написание приложения, предоставляя набор библиотек и вспомогательных пакетов для выполнения наиболее распространенных задач. Он основан на архитектуре MVC (англ. Model-View-Controller, «модель-вид-контроллер»), что позволяет разделять логику и представление.
Данное руководство продемонстрирует установку CodeIgniter на облачный сервер из командной строки, а также расскажет о базовой настройке фреймворка.
Примечание: данное руководство предполагает наличие предварительно настроенного виртуального выделенного сервера и root-доступа к нему. Кроме того, нужно заранее установить стек LAMP; все необходимые инструкции по установке этой группы программ можно найти в этой статье.
Установка CodeIgniter
Для начала нужно перейти в root-каталог облачного сервера:
cd /var/www
Загрузите последнюю стабильную версию CI. Для этого откройте загрузочную страницу сайта проекта, найдите последнюю доступную версию и запустите следующую команду:
wget http://ellislab.com/asset/ci_download_files/reactor/CodeIgniter_2.1.2.zip
Примечание: не забудьте заменить ссылку, приведенную в команде, ссылкой на более новую версию.
После запуска команды ls в каталоге появится новый zip-файл. Распакуйте его при помощи следующей команды:
unzip CodeIgniter_2.1.2.zip
На данном этапе может возникнуть ошибка «unzip: command not found»; это значит, что инструмент Unzip не установлен. Запустите следующую команду, чтобы установить его:
sudo apt-get install unzip
Попробуйте снова запустить команду unzip.
Запустив команду ls, вы увидите извлеченную папку CodeIgniter. Переименуйте папку в codeigniter (или выберите более удобное для вас имя) при помощи команды:
mv /var/www/CodeIgniter_2.1.2 /var/www/codeigniter
Направьте браузер на эту папку:
<your_domain>/codeigniter
На кране появится приветственное сообщение CodeIgniter.
Это сообщение выдается образцовым контроллером (англ. Controller), который находится в папке application/controllers и называется welcome.php. Этот контроллер просто загружает вид, который находится в папке application/views и содержит простое HTML-сообщение.
Настройка CodeIgniter
Теперь CodeIgniter установлен, можно приступать к начальной настройке приложения.
Можно начать с настройки взаимодействия CodeIgniter с базой данных. Для этого нужно отредактировать следующий файл (не забудьте указать правильное имя папки, если она была названа не codeigniter):
nano /var/www/codeigniter/application/config/database.php
Затем найдите следующий блок и отредактируйте его, внеся информацию о БД:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'your_username';
$db['default']['password'] = 'your_password';
$db['default']['database'] = 'your_database';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Сохраните и закройте файл. Теперь БД настроена должным образом. Затем откройте конфигурационный файл config.php для редактирования:
nano /var/www/codeigniter/application/config/config.php
и внесите в него свой url; для этого найдите и отредактируйте этот раздел:
$config['base_url'] = 'http://www.example.com';
Замените www.example.com своим значением. Сохраните и закройте файл.
Виртуальные хосты
Чтобы изменить document root для CodeIgniter, нужно отредактировать файл виртуального хоста.
sudo nano /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
DocumentRoot /var/www/codeigniter
[.......]
<VirtualHost *:80>
Кроме того, вероятно, понадобится удалить сегмент index.php, который нужно вносить в URL перед именем контроллера. URL фреймворка CodeIgniter имеет такую структуру:
base url / index.php / controller name / controller function / controller parameter 1 / controller parameter 2 / controller parameter etc
Чтобы проверить это, откройте файл контроллера welcome.php:
nano /var/www/codeigniter/application/controllers/welcome.php
который содержит:
public function test($param) {
echo $param;
}
Направив браузер на http://www.example.com/index.php/welcome/test/3, вы увидите на экране цифру 3. Ради эксперимента замените последний сегмент, и его содержимое появится на экране. Все достаточно просто.
Однако можно сделать адрес еще «чище», удалив сегмент index.php. Это делается в два шага. Сначала нужно открыть ранее отредактированный файл:
nano /var/www/codeigniter/application/config/config.php
затем найти в нем следующий код:
$config['index_page'] = 'index.php';
и заменить его таким образом:
$config['index_page'] = '';
Сохраните и закройте файл. Теперь CodeIgniter больше не будет автоматически вносить сегмент index.php в URL. Но это не все; дело в том, что сегмент index.php нельзя просто выбросить из адреса, иначе ссылка не будет работать, а пользователь получит ошибку Page not found. Чтобы все работало корректно, нужно создать файл .htaccess для обработки переадресации.
Примечание: Чтобы использовать файлы .htaccess, нужно предварительно включить модуль Apache по имени mod_rewrite. Чтобы узнать, запущен ли этот модуль, введите:
apache2ctl -M
Если появившийся список содержит rewrite_module, значит, mod_rewrite уже включен. В противном случае запустите:
a2enmod rewrite
Затем перезапустите Apache, чтобы новые настройки вступили в исполнение:
sudo service apache2 restart
Итак, приступим к созданию файла .htaccess в root-папке CodeIgniter:
nano /var/www/codeigniter/.htaccess
Внесите в файл такой блок кода:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L]
Затем нужно включить файл .htaccess, изменив значение параметра AllowOverride на All в файле виртуального хоста:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Сохраните и закройте файл. Теперь при посещении сайта в браузере не нужно вносить в url сегмент index.php:
http://www.example.com/welcome/test/3
Теперь URL выглядит гораздо понятнее и легче запоминается.
Готово! Можете приступать к разработке своего PHP-приложения при помощи невероятно удобного фреймворка CodeIgniter. Все необходимые инструкции по разработке простого приложения в CodeIgniter можно найти в этой статье.