Установка CakePHP на сервер Ubuntu 12.04

Что такое CakePHP?

CakePHP – это мощный и надежный PHP-фреймворк, основанный на архитектуре Model-View-Controller (MVC, или «Модель-Представление-Контроллер»). Он очень гибкий, что позволяет ускорить и упростить процесс разработки; кроме того, фреймворк предоставляет базовую структуру для организации имен файлов, классов и таблиц базы данных, благодаря чему разработка проекта остается последовательной и логичной от начала и до конца.

Минимальные требования CakePHP: веб-сервер и PHP 5.2.8+. Хотя данный фреймворк, как правило, запускают на Apache, он также отлично работает на других веб-серверах (как Lighttpd или Microsoft IIS). Поскольку базы данных являются неотъемлемой частью большинства веб-приложений, CakePHP поддерживает ряд СУБД, таких как MySQL, PostgreSQL, Microsoft SQL или SQLite (с расширениями PDO).

Данное руководство покажет, как установить и начать работу с CakePHP. Для этого понадобятся настроенные облачный сервер и веб-сервер. Все действия руководства выполнены в операционной системе Ubuntu на веб-сервере Apache (+ PHP и MySQL).

Установка CakePHP

Существует несколько способов установки CakePHP на виртуальный выделенный сервер. Можно скачать и распаковать архив с сайта CakePHP, клонировать релиз фреймворка с Github при помощи Git или же использовать библиотеку PEAR. В данном случае удобнее воспользоваться первым способом установки CakePHP (с сайта проекта), поскольку он самый простой.

Итак, для начала нужно загрузить последнюю стабильную версию фреймворка (ссылку можно найти на главной странице сайта CakePHP) и распаковать полученный архив в отдельную папку. Перейдите в root папку веб-сервера и скачайте архив:

cd /var/www
wget https://github.com/cakephp/cakephp/zipball/2.3.9

Это загрузит zip-файл с релизом. Теперь его нужно распаковать. Если инструмент unzip еще не установлен, выполните следующую команду, чтобы быстро установить его:

sudo apt-get install unzip

Теперь можно распаковать архив (скачав другую версию фреймворка, не забудьте заменить имя файла):

unzip 2.3.9

Должна появиться новая папка, содержащая все файлы CakePHP. Переименуйте ее, выбрав более удобное имя (например, project):

mv cakephp-cakephp-4b9e390 project

Итак, на данный момент CakePHP загружен и находится в папке /var/www/project.

Теперь нужно изменить права доступа к папке app/tmp; CakePHP нужно будет выполнить в ней некоторые действия, потому веб-сервер должен иметь право на запись в ней. Для Apache запустите следующие команды в папке /var/www/project:

cd project
chown -R root:www-data app/tmp
chmod -R 775 app/tmp

Это изменит владельца папки, передав все права пользователю root и папке www-data (в которую также входит пользователь www-data, используемый Apache для запуска процессов). Вторая команда устанавливает права на папку таким образом, чтобы группа www-data  могла вносить в нее изменения.

Перезапись URL-адресов

Поскольку CakePHP намного продуктивнее работает с чистыми URL-адресами, нужно проверить, позволяет ли веб-сервер перезаписывать URL. Для этого должен быть включен модуль Apache по имени mod_rewrite; кроме того, виртуальный хост должен разрешать файлам .htaccess переопределить инструкции Apache. Итак, для начала убедитесь в том, что  mod_rewrite включен; это делается с помощью следующей команды:

apache2ctl -M

Если появившийся список содержит rewrite_module, модуль уже включен. В противном случае используйте команду:

a2enmod rewrite

Далее нужно отредактировать виртуальный хост Apache по умолчанию и задать строке  Allow Overrides значение All для каталога /var/www (если это не было сделано ранее). Откройте файл для редактирования с помощью следующей команды:

nano /etc/apache2/sites-available/default

Найдите следующий блок кода и внесите в него соответствующие изменения:

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

Теперь файлы .htaccess могут переопределять инструкции Apache по умолчанию.

Примечание: после внесения любых изменений в настройки Apache необходимо перезапустить веб-сервер:

sudo service apache2 restart

Дополнительные настройки

Теперь, когда функция перезаписи URL-адресов включена, нужно установить некоторые связанные с безопасностью настройки CakePHP, а именно salt и seed. salt – это пользовательская строка, которая нужна CakePHP для хэширования, а seed – это пользовательское число, используемое для шифрования. Их лучше настроить сейчас, чтобы не возвращаться к этому позже. К слову, главная страница приложения CakePHP выведет два больших красных уведомления, если этого не сделать.

Отредактируйте файл core.php, расположенный в папке app/Config; найдите в нем следующий блок кода:

/**
* A random string used in security hashing methods.
*/
Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
/**
* A random numeric string (digits only) used to encrypt/decrypt strings.
*/
Configure::write('Security.cipherSeed', '76859309657453542496749683645');

В целом, на разных серверах строки и числа могут отличаться; но установить новые значения, которые невозможно угадать, нужно именно в этом разделе кода. Убедитесь, что строка cipherSeed содержит только цифры.

Сохраните и закройте файл.

Подключение к базе данных

Хотя база данных не является обязательным компонентом CakePHP, большинству веб-приложений БД необходима для хранения информации. На данном этапе нужно настроить подключение к базе данных MySQL.

Примечание: чтобы узнать, как перейти с MySQL на MariaDB, читайте данное руководство.

Итак, создайте БД с некоторым контентом и сообщите о ней CakePHP (эта БД понадобится для выполнения следующего руководства, в котором речь идет о разработке простого примера приложения). Базы данных с одной таблицей из 5 столбцов будет достаточно; столбцы должны содержать идентификатор, название, текст, а также даты создания и изменения, потому им нужно присвоить соответствующие имена: id, title, body, created, modified. Первый столбец должен содержать целое число с автоматическим увеличением (AUTO_INCREMENT PRIMARY KEY); второй – VARCHAR (500); третий – текст поста (TEXT); и последние два столбца – DATETIME.

В данном уроке база данных будет называться cake, а таблица – posts. На самом деле, именование таблиц и файлов играет очень важную роль в CakePHP: данный фреймворк работает намного продуктивнее при соблюдении соглашения об именах. Подробнее этот вопрос затрагивается в следующем руководстве.

Итак, нужно выполнить пару команд. Войдите в MySQL или MariaDB. Базу данных можно создать при помощи консоли:

create database cake;

Затем в этой БД можно создать таблицу со всеми перечисленными выше столбцами. Но сначала нужно подключиться к базе данных:

use cake;

Теперь создайте таблицу:

CREATE TABLE posts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);

Затем внесите в нее контент:

INSERT INTO posts (title,body,created)
VALUES ('Title 1', 'Some body text.', NOW());

Эта команда внесет в таблицу новую строку.

Теперь нужно настроить CakePHP, чтобы фреймворк мог использовать эту БД. Для начала скопируйте файл database.php.default, расположенный в папке /app/Config/, и назовите его database.php. Затем откройте файл и внесите в него следующий блок кода (замените cakeBlog и а1b3-А2B4 своим логином и паролем mysql).

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => '',
'login' => 'cakeBlog',
'password' => 'а1b3-А2B4',
'database' => 'cake',
'schema' => '',
'prefix' => '',
'encoding' => 'utf8'
);

Как видите, нужно просто предоставить свою индивидуальную информацию о соединении базы данных. Сохраните файл и закройте его. Откройте браузер и направьте его на папку, в которой был размещен фреймворк CakePHP при установке (в данном случае это папка project) из root папки веб-сервера:

http://www.example.com/project

Должна появиться домашняя страница нового приложения CakePHP; благодаря выполненной ранее настройке все сообщения должны быть зелеными (кроме сообщения о DebugKit – дополнительной внешней библиотеке).

Если же PHP сообщает об ошибке часового пояса, раскомментируйте следующую строку в файле core.php, расположенном в папке app/Config:

/**
* Uncomment this line and correct your server timezone to fix
* any date & time related errors.
*/
date_default_timezone_set('UTC');

Итоги

Данное руководство продемонстрировало процесс установки и настройки CakePHP на облачном сервере. Следующее руководство этой серии покажет, как создать простое приложение CakePHP, взаимодействующее с БД, созданной в ходе данного урока.

Tags: , , , , , , , , , , , , , , , ,

Добавить комментарий