Меню Рубрики

Установка cakephp в ubuntu

Предложение от 8host.com

Установка 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

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

Должна появиться новая папка, содержащая все файлы 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 включен; это делается с помощью следующей команды:

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

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

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

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 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 папки веб-сервера:

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

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

Итоги

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

источник

Предложение от 8host.com

Настройка приложения CakePHP на LAMP в Ubuntu 18.04

CakePHP — это популярный многофункциональный веб-фреймворк PHP. Он устраняет многие распространенные в веб-разработке проблемы, такие как взаимодействие с базой данных, защита от SQL-инъекций и генерация кода представления. Он работает по шаблону «модель-представление-контроллер» (MVC), который разделяет приложения на части, что позволяет разработчикам параллельно работать над различными частями приложения. Он также обеспечивает встроенную безопасность и аутентификацию. Базовое приложение на основе БД легко создать в CakePHP. Однако вы также можете использовать CakePHP для создания полноценных веб-приложений, готовых к развертыванию.

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

Требования

  • Сервер Ubuntu 18.04 и пользователь sudo (все инструкции есть в этом мануале).
  • Установленный стек LAMP (читайте Установка стека LAMP в Ubuntu 18.04). на момент написания статьи последней версией PHP является 7.2.
  • Composer, менеджер пакетов PHP (см. разделы 1-2 мануала Установка и использование Composer в Ubuntu 18.04).
  • Сертификат Let’s Encrypt для Apache. Для этого вам нужен виртуальный хост (см. раздел 5 мануала Быстрая установка Apache в Ubuntu 18.04). Чтобы создать сертификат, выполните мануал Создание сертификата Let’s Encrypt для Apache в Ubuntu 18.04. По запросу включите принудительную переадресацию HTTPS.
  • Доменное имя. Здесь мы используем условный домен example.com.
  • DNS-записи А для example.com и www.example.com, направленные на внутренний IP-адрес сервера.

1: Установка зависимостей

Чтобы подготовить сервер к развертыванию приложения, нужно установить PHP-расширения, от которых зависит CakePHP.

Обновите локальный индекс пакетов:

CakePHP нужны PHP-расширения mbstring, intl и simplexml, которые добавляют поддержку многобайтовых строк, интернационализации и обработки XML. Расширение mbstring уже установлено во время установки Composer. Вы можете установить оставшиеся библиотеки одной командой:

sudo apt install php7.2-intl php7.2-xml -y

Помните, что версия PHP может отличаться.

Вы установили зависимости CakePHP. Теперь можно настроить базу данных MySQL для среды производства.

2: Настройка базы данных MySQL

Теперь нужно создать базу данных MySQL для хранения информации о статьях блога. Также нужно создать пользователя базы данных, которого ваше приложение будет использовать для доступа к базе данных. Затем вы измените привилегии базы данных. В результате злоумышленники не смогут повлиять на работу системы даже при наличии учетных данных БД (это является важной мерой безопасности в производственной среде).

По запросу введите пароль, который вы выбрали во время установки стека LAMP.

CREATE DATABASE cakephp_blog;
Query OK, 1 row affected (0.00 sec)

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

Затем перейдите в новую БД cakephp_blog:

Читайте также:  Установка автоматического привода для распашных ворот

USE cakephp_blog;
Database changed

Теперь создайте схему таблицы для статей блога в базе данных cakephp_blog. Выполните следующую команду:

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

У вас есть схема с 5 полями для описания статей блога:

  • id: уникальный идентификатор статьи, который используется как первичный ключ.
  • title: заголовок статьи, текстовое поле длиной в 50 символов максимум.
  • body: текст статьи, объявленный как поле TEXT.
  • created: дата и время создания записи.
  • modified: дата и время изменения записи.

Query OK, 0 rows affected (0.01 sec)

Вы создали таблицу для хранения статей в базе данных cakephp_blog. Теперь заполните ее образцами статей, выполнив следующую команду:

INSERT INTO articles (title, body, created)
VALUES (‘Sample title’, ‘This is the article body.’, NOW());

Добавив образец статьи с заголовком и телом, вы увидите следующий вывод:

Query OK, 0 rows affected (0.01 sec)

Чтобы подключить приложение CakePHP к базе данных, вам нужно создать нового пользователя БД и ограничить его привилегии:

GRANT ALL PRIVILEGES ON cakephp_blog.* TO ‘cake_user’@’localhost’ IDENTIFIED BY ‘password’;

Эта команда предоставляет все привилегии всем таблицам в базе данных.

Не забудьте заменить password надежным паролем.

Чтобы обновить базу данных с внесенными изменениями, сбросьте привилегии:

Вы создали нового пользователя базы данных cake_user и ограничили его только базой данных cakephp_blog, тем самым общую повышая безопасность системы.

Выйдите из терминала MySQL, введя команду exit.

Итак, теперь у вас есть новая БД и схема, образец данных и пользователь для работы с БД. Пора настроить само приложение CakePHP.

3: Создание блога CakePHP

Установите CakePHP с помощью Composer. Использовать Composer удобно, так как он позволяет установить CakePHP из командной строки и автоматически настраивает определенные права доступа к файлам и к конфигурации.

Сначала перейдите в папку Apache:

Apache использует этот каталог для хранения файлов, доступных в интернете. Этот каталог принадлежит пользователю root, и пользователь sudo (здесь он называется 8host), не может ничего в него записать. Чтобы исправить это, измените привилегии файловой системы:

Теперь с помощью Composer создайте новое приложение CakePHP:

composer create-project —prefer-dist cakephp/app cake-blog

Эта команда вызывает composer и позволяет ему создать новый проект с помощью create-project. Флаг —prefer-dist cakephp/app говорит composer использовать CakePHP в качестве шаблона. cake-blog – это имя нового приложения.

Выполнение этой команды может занять некоторое время.

Когда Composer попросит вас установить права доступа к папке, нажмите y, чтобы ответить «да».

Вы создали новый проект CakePHP с помощью Composer. Далее нужно настроить Apache для поддержки этого приложения, что сделает его доступным в браузере.

4: Настройка Apache

Настройте Apache для обслуживания нового приложения CakePHP, а также включите переопределение .htaccess (это является требованием CakePHP). Чтобы сделать это, нужно отредактировать конфигурационные файлы Apache.

Чтобы включить маршрутизацию, вы должны включить в Apache поддержку файлов .htaccess. Это файлы конфигурации, которые располагаются в подкаталогах приложения (при необходимости); затем Apache использует эти файлы для изменения своей глобальной конфигурации относительно запрашиваемой части приложения. Среди прочих задач эти файлы содержат правила перезаписи URL-адресов, которые нужно скорректировать.

Откройте глобальную конфигурацию Apache, apache2.conf:

sudo nano /etc/apache2/apache2.conf

.

Options Indexes FollowSymLinks
AllowOverride None
Require all granted

.

Измените значение AllowOverride с None на All:

.

Options Indexes FollowSymLinks
AllowOverride All
Require all granted

.

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

Далее укажите Apache на каталог webroot в установке CakePHP. В Ubuntu 18.04 Apache хранит свои конфигурационные файлы в каталоге /etc/apache2/sites-available. Эти файлы определяют, как Apache обрабатывает веб-запросы.

В мануале по Let’s Encrypt вы включили перенаправление HTTPS; поэтому сейчас поддерживается только HTTPS-трафик. В результате вам нужно отредактировать только файл example.com-le-ssl.conf, который настраивает трафик HTTPS.

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Вам нужно изменить только одну строку – ту, которая устанавливает DocumentRoot и сообщает Apache, откуда подавать контент в браузер. Найдите следующую строку в файле:

Отредактируйте эту строку, чтобы она указывала на установку CakePHP, добавив следующие сегменты:

Сохраните и закройте файл. Чтобы обновить настройки, перезапустите Apache:

sudo systemctl restart apache2

Теперь откройте https://your_domain/ в браузере.

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

5: Подключение приложения к базе данных

В этом разделе вы подключите БД к приложению, чтобы ваш блог мог получить доступ к статьям. Отредактируйте файл CakePHP по умолчанию, config/app.php, чтобы установить соединение с базой данных.

Перейдите в папку приложения:

.
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
.
//’port’ => ‘non_standard_port_number’,
‘username’ => ‘cake_user’,
‘password’ => ‘password’,
‘database’ => ‘cakephp_blog’,
.

В ‘username’ замените значение my_app именем пользователя БД (здесь это cake_user), secret замените паролем этого пользователя. Вместо второго my_app укажите имя базы данных (здесь это cakephp_blog).

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

Обновите приложение в браузере и просмотрите сообщение в разделе Database. Если здесь говорится об ошибке, проверьте ваш файл конфигурации и убедитесь, что все инструкции этого мануала вы выполнили правильно.

Читайте также:  Установка инфракрасного обогревателя смета

Вы подключили приложение CakePHP к своей БД MySQL. Далее нужно создать файлы моделей, представлений и контроллеров, которые составят пользовательский интерфейс для взаимодействия со статьями.

6: Создание интерфейса пользователя

В этом разделе мы создадим готовый интерфейс, выполнив команду CakePHP bake, которая генерирует модель статьи. В CakePHP есть операция «baking», она генерирует все необходимые базовые модели, представления и контроллеры, готовые к дальнейшей разработке. Каждое приложение на основе БД должно выполнять операции создания, чтения, обновления и удаления (CRUD). Потому эта функция bake в CakePHP полезна – она позволяет автоматически генерировать код для этих операций. В течение нескольких минут вы получите полный прототип приложения, готовый к вводу, хранению и редактированию данных.

Модели, представления и контроллеры объединяются в шаблон MVC. Их роли:

  • Модели представляют структуру данных.
  • Представления отображают данные в удобной для пользователя форме.
  • Контроллеры действуют по запросам пользователей и служат посредником между представлениями и моделями.

CakePHP хранит свой исполняемый файл CLI в bin/cake. Хотя он в основном используется для baking, он предлагает множество других команд, например, для очистки кэша.

Команда bake проверит вашу базу данных и сгенерирует модели на основе найденных определений таблиц. Запустите следующую команду:

Передав команду all, вы позволяете CakePHP одновременно сгенерировать модели, контроллеры и представления.

Вывод будет выглядеть так:

Bake All
—————————————————————
Possible model names based on your database:
— articles
Run `cake bake all [name]` to generate skeleton files.

Как видите, CakePHP правильно обнаружил определение articles в БД и сгенерировал файлы для этих моделей.

Теперь запустите baking с помощью команды:

./bin/cake bake all articles

Bake All
—————————————————————
One moment while associations are detected.
Baking table class for Articles.
Creating file /var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Table/ArticlesTable.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Table/empty`
Baking entity class for Article.
Creating file /var/www/example.com/html/cake-blog/src/Model/Entity/Article.php
Wrote `/var/www/example.com/html/cake-blog/src/Model/Entity/Article.php`
Deleted `/var/www/example.com/html/cake-blog/src/Model/Entity/empty`
Baking test fixture for Articles.
Creating file /var/www/example.com/html/cake-blog/tests/Fixture/ArticlesFixture.php
Wrote `/var/www/example.com/html/cake-blog/tests/Fixture/ArticlesFixture.php`
Deleted `/var/www/example.com/html/cake-blog/tests/Fixture/empty`
Bake is detecting possible fixtures.
Baking test case for App\Model\Table\ArticlesTable .
Creating file /var/www/example.com/html/cake-blog/tests/TestCase/Model/Table/ArticlesTableTest.php
Wrote `/var/www/example.com/html/cake-blog/tests/TestCase/Model/Table/ArticlesTableTest.php`
Baking controller class for Articles.
Creating file /var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php
Wrote `/var/www/example.com/html/cake-blog/src/Controller/ArticlesController.php`
Bake is detecting possible fixtures.
.
Baking `add` view template file.
Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/add.ctp`
Baking `edit` view template file.
Creating file /var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp
Wrote `/var/www/example.com/html/cake-blog/src/Template/Articles/edit.ctp`
Bake All complete.

В выводе вы увидите, что CakePHP зарегистрировал в логах все шаги, которые он предпринял, чтобы создать функциональный шаблон для базы данных articles.

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

Вы увидите список статей, находящихся в настоящее время в базе данных, который включает одну строку с названием Sample Title. Команда bake собрала этот интерфейс, позволяющий создавать, удалять и редактировать статьи. Это хорошее начало для дальнейшего развития проекта. Вы можете попробовать добавить новую статью, нажав на ссылку New Article в боковой панели.

Теперь вы можете создавать, удалять, просматривать и редактировать статьи, а все изменения сразу будут сохраняться в БД.

7: Отключение режима отладки CakePHP

Теперь нужно остановить режим отладки CakePHP. Это важно потому, что в этом режиме приложение выводит подробную отладочную информацию, а это большие риски для безопасности.

Это нужно обязательно сделать после того, как вы закончите работу над приложением.

В начале файла будет строка для режима ‘debug’. Сейчас ее значение true. Замените его на false:

.
‘debug’ => filter_var(env(‘DEBUG’, false), FILTER_VALIDATE_BOOLEAN),
.

После того как вы отключите режим отладки, на домашней странице, src/Templates/Pages/home.ctp, будет отображаться ошибка.

Error
Please replace src/Templates/Pages/home.ctp with your own version of re-enable debug mode.

Примечание: Если вы не изменили маршрут по умолчанию или не заменили содержимое home.ctp, на домашней странице приложения будет отображаться ошибка. Это связано с тем, что домашняя страница по умолчанию служит панелью состояния во время разработки, но не работает при отключенном режиме отладки.

Вы отключили режим отладки. С этого момента любые возникающие ошибки и исключения, а также их следы в стеке не будут показаны конечному пользователю, что повысит безопасность вашего приложения.

Однако после отключения режима отладки ваша страница home.ctp выдает ошибку. Если вы выполнили это только в рамках данного мануала, теперь вы можете перенаправить свою домашнюю страницу в интерфейс списка статей, не отключая режим отладки. Для этого нужно отредактировать home.ctp.

sudo nano src/Template/Pages/home.ctp

Замените его содержимое этими строками:

Этот HTML перенаправляет на контроллер Articles. В случае сбоя автоматического перенаправления пользователи также смогут перейти по ссылке.

Итак, мы отключили режим отладки в целях безопасности и исправили ошибку домашней страницы, перенаправив пользователя в интерфейс списка публикаций в блоге, предоставляемый контроллером Articles.

Заключение

Вы успешно установили CakePHP на стек LAMP в Ubuntu 18.04. CakePHP позволяет создавать базы данных с любым количеством таблиц, и он сам создаст живой веб-редактор для данных.

CakePHP cookbook — это подробная документация по каждому аспекту CakePHP.

Далее рекомендуем настроить аутентификацию пользователей, чтобы каждый пользователь мог создавать свои собственные статьи.

источник

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

Adblock
detector