Чуть больше чем просто блог :)

Первоначальные настройки сайта на Yii2

Для того чтобы перейти к следующему шагу, а именно построения своей желаемой архитектуры, которую описывал ранее тут: http://seroed.intfom.com/programirovanie/beecms-na-yii2/item/240-beecms-fajlovaya-struktura-proekta#.Vyy-7kJ96Uk - сначала настроим по мануалу, чтобы в дальнейшем было что ломать и конечно как результат прийти к тому-же результату :)

Но это только внешне...

В этом посте я произведу следующие настройки:

  • Настройка IDE PhpStorm
  • Добавим исключаемые папки и файлы для Git
  • Первоначальная настройка .htaccess и PHP
  • Создадим красивые URL, первоначальная настройка UrlManager
  • Подключение БД

По данным темам есть уже отлично написанные статьи. Я пользуюсь этими ресурсами: http://www.elisdn.ru/ и https://github.com/yiisoft/yii2/tree/master/docs/guide-ru Приглашаю и вас к прочтению :)

У себя по этим темам я частично повторю их и дополню немого от себя.

Настройка IDE PhpStorm

Временные папки и папка ассетов часто обновляются, но не имеют к проекту прямого отношение. Они появляются уже в следствии пользования сайтом. Поэтому правельней будет закрыть их от индексации в среде разработки. Это скажется на быстродействии работы программы. Для этого перейдем в File -> Setings, затем в дереве слева найдем "Project:bee-cms.local", где "bee-cms.local" - название проекта и выберем "Directories".

Выбираем папки: "runtime", "vendor", "web/assets".

settings-directories-excluded

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

А чтобы IDE продолжала выводить нам подсказки классов, методов и другой вспомогательной информации о фреймворке - нужно добавить путь к этой папке к вендорам как библиотеку. Для этого переходим в раздел слева "Languages & Frameworks" -> "PHP". Затем справа жмем "+" на поле "include path" и добавляем папку "vendor".

settings-php-includepath

 

Первоначальная настройка .htaccess и PHP

В настройках PHP мы пока скроем только вывод версии скрипта. Это делается исключительно в целях безопасности, дабы усложнить жизнь хакеру.

Перейдем в файл конфигурации PHP: php.ini

php-ini

и выставляем параметр "expose_php" в off

expose_php = Off

После чего перезагружаем веб сервер.

Для генерации красивых URL и защиты сайта нужно правильно настроить файлы .htaccess

Первый файл ".htaccess" - создаем в корне проекта со следующим содержанием:

# Кодировка сайта
AddDefaultCharset utf-8
DefaultLanguage ru
SetEnv Europe/Kiev
SetEnv SERVER_ADMIN (ВАШ EMAIL)

<IfModule mod_rewrite.c>
    Options -FollowSymLinks +SymLinksIfOwnerMatch
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/.*
    RewriteRule ^(.*)$ web/$1 [L]
    RewriteCond %{REQUEST_URI} !^/web/
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^.*$ web/index.php

    # Склейка домена с WWW и без WWW в один домен (без www)
    #RewriteCond %{HTTP_HOST} ^www\.bee-cms\.local
    #RewriteRule ^(.*)$ http://bee-cms.local/$1 [R=301,L]

</IfModule>


# БЕЗОПАСНОСТЬ
#Dывод подвала страницы в документах для безопасности. Убираем вывод информации
ServerSignature Off
#Так-же настроить в конфиге Apache параметр "ServerTokens"
#которая выводит информацию о сервере. Выводим минимальную.
#ServerTokens ProductOnly

# Запрещаем доступ к .htaccess
<Files .htaccess>
    order allow,deny
    deny from all
</Files>

  # Запрещаем просмотр содержимого папок
<IfModule mod_autoindex.c>
    Options -Indexes
</IfModule>
# /БЕЗОПАСНОСТЬ

# КЕШИРОВАНИЕ
<IfModule mod_expires.c>
    # включаем кэширование для всех файлов
    ExpiresActive On
    # включаем кэширование для некоторых типов файлов сроком на 30 дней (2592000)
    <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>

    # отключаем его для HTML-файлов
    <FilesMatch .*\.(htm|txt|shtml|html|phtml|php)$>
        ExpiresActive Off
    </FilesMatch>
</IfModule>
# /КЕШИРОВАНИЕ

Постарался все расписать по параметрам.

Следующий файл ".htaccess" создаем в папке: "/web":

# Mod_Autoindex
<IfModule mod_autoindex.c>
    # Запрещаем просмотр содержимого папок
    Options -Indexes
</IfModule>

# Mod_Rewrite
<IfModule mod_rewrite.c>
    Options -FollowSymLinks +SymLinksIfOwnerMatch
    # Включаем mod_rewrite
    RewriteEngine On

    # Если это папка или файл, открываем её/его
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # В противном случае перенаправляем на index.php
    RewriteRule . index.php
</IfModule>

Пока изменений на сайте визуально никаких не произошло.

Проверяем что все работает и поехали дальше...

 

 

Создадим красивые URL, первоначальная настройка UrlManager

 

Сейчас сайт формирует не красивые ссылки такого вида:

http://bee-cms.local/web/index.php

http://bee-cms.local/web/index.php?r=site%2Fabout

А нам хочется чтобы их можно было читать, понимать и сделать адаптированными для СЕО. В дальнейшем мы перепишим UrlManager для удобного управления через админку, ну а пока...

Открываем файл: "config/web.php" и добавляем следующее:

'request' => [
    'baseUrl' => '',
],
'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        '' => 'site/index',
        '<action>'=>'site/<action>',
    ],
],

Обратите внимание, что ключ массива "request" скорее всего у вас уже есть и содержит скорее всего "cookieValidationKey" ну и возможно что-то еще. В этом случаи вам нужно просто добавить значение: 'baseUrl' => '' к этому массиву, а массив "urlManager" рядом, уже на уровне с "request".

 

Подключение БД

Для начала нужно создать БД.

Для "OpenServer" нужно зайти по адресу: http://127.0.0.1/openserver/phpmyadmin, либо открыть контекстное меню на панели виндовс, затем "Дополнительно" и выбрать "PhpMyAdmin"

phpmyadmin

В открывшемся окне браузера логинимся. По умолчанию логин: root без пароля

Переходим на "Databases" и вводим название будущей базы данных в поле "". В моем случаи это: "bee_cms".

Подключаем созданную базу в PhpStorm. Во вкладке "Database" нажимаем кнопку "+" -> "Data Source" -> "MySql"

database add mysql

Заполняем нужные поля, тест - ОК... поехали дальше.

 

Создаем новую таблицу в БД. Я назову ее "demo" с двумя столбцами: "id" - ind AUTO_INCREMENT и "text" - text, поскольку она мне нужна только на данном этапе, для демонстрации вывода и как следствие успешное подключение к базе.

Так-же сразу создам одну запись с любым содержимым. А какой текст я указал в строке вы узнаете позже :)

Подключим созданную базу к проекту.

Заходим в папку "config" и видем файл "db.php" Тут хранятся настройки подключения к БД.

Поскольку я буду выкладывать на GitHub - мне желательно добавить корректировки настроек при разработке на локальной машине. То есть создать еще один файл с настройками подключения к БД именно для локального ПК, и подменять значения названия БД, его пользователя и пароль основных настроек. А при загрузке в Git репозиторий - исключить db-local.php и все последующие локальные файлы коныигурации.

Копирую файл "db.php" и вставляю в эту же директорию но с названием "db-local.php". Изменяю конфигурацию на данные локального подключения к БД:

<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=bee_cms',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];

Далее открываем файл "web.php" и вверху создаем переменную "$configDB", которая будет мерджить 2 массива:

$configDB = array_merge(
    require(__DIR__ . '/db.php'),
    require(__DIR__ . '/db-local.php')
);

Затем ищем ключ "db" в массиве "$config" и заменяем "require(__DIR__ . '/db.php')" на "$configDB".

 

Теперь на сайте заходим в генератор кода "Gii": http://bee-cms.local/gii

gii-modelgenerator

В открывшемся окне заполняем только поле: "Table Name" = "demo" поскольку именно так мы назвали таблицу БД.

Нажимаем "Preview", затем "Generate".

В случаи успеха у нас появится файл по адресу: /models/Demo.php

 

Теперь нужно заняться выводом информации на любую существующую страницу сайта.

Подготовкой данных займется контроллер "/controllers/SiteController.php", а вид "views/site/index.php" займется выводом информации.

Поэтому, открываем "SiteController.php" и вверху под уже введенными "use" добавляем нашу модель

use app\models\Demo;

и изменим метод "actionIndex()" на:

public function actionIndex() {
    $demo = Demo::find()->where(['id' => 1])->one();
    return $this->render('index', ['demo' => $demo]);
}

Мануал по доступу к данным и манипуляции с ними доступно по ссылке: https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/db-active-record.md

 

Теперь очередь вида: "views/site/index.php". Тут сейчас в любом месте можно вставить всего одну строку:

<?php echo $demo->text; ?>

Обновляем страницу...

random text

и видим "Случайный текст". Именно его я и вбил в поле text демонстрационной таблицы.

 

Поздравляю и я :)

Вы успешно произвели предварительные настройки и соединились с базой данных!

Демо таблицу, модель, и то что мы понаписывали в "/controllers/SiteController.php" и "views/site/index.php" можно удалить.

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены

Авторизация