Yii2 Application Kit
Это «готовое к использованию» веб-приложение, основанное на Yii2 Starter Kit и Yii2 Advanced Template.
git clone https://git.oschina.net/kzeng/yii2-app-kit.git
уже интегрированы, этот шаг можно пропустить
>composer install
Минимальные требования этого шаблона приложения: ваш веб-сервер должен поддерживать PHP 5.5.0. Требуемые расширения PHP: — intl; — gd; — mcrypt; — exif (обязательное расширение для редактора форматированного текста и управления мультимедиа (pendalf89), без установки будут ошибки при загрузке миниатюр).
На примере комплекта lnmp 1.2 PHP-сервера:
cd /home/freeman/tools/lnmp1.2-full/src/php-5.6.9/ext/intl/
$phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
В процессе настройки могут возникнуть ошибки, необходимо установить соответствующие библиотеки.
$yum install libicu-devel -y
$yum install libxslt-devel -y
cd /home/freeman/tools/lnmp1.2-full/src/php-5.6.9/ext/xsl/
$phpize && ./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
Изменить php.ini
$vi /usr/local/php/etc/php.ini
Добавить:
extension=xsl.so
extension=intl.so
Затем перезапустить службу php /etc/init.d/php-fpm restart
.env.dist
в .env
в корне проекта (.env.docker.dist
, если вы используете Docker)..env
:
— установите режим отладки и текущую среду: YII_DEBUG = true
YII_ENV = dev
— настройте конфигурацию БД:
DB_DSN = mysql:host=127.0.0.1;port=3306;dbname=yii2-app-kit
DB_USERNAME = user
DB_PASSWORD = password
— задайте канонические URL-адреса приложения:
FRONTEND_URL = http://yii2-app-kit.dev
BACKEND_URL = http://backend.yii2-app-kit.dev
STORAGE_URL = http://storage.yii2-app-kit.dev
этот шаг обязателен, важно!
:php console/yii app/setup
php console/yii migrate --migrationPath=vendor/pendalf89/yii2-filemanager/migrations
Скопируйте vhost.conf.dist
в vhost.conf
, измените его в соответствии с вашими локальными настройками и скопируйте (символическую ссылку) в каталог nginx sites-enabled
.
Или настройте свой веб-сервер с тремя разными корнями веб-сайтов:
— yii2-app-кит.dev => /path/to/yii2-app-kit/frontend/web;
— backend.yii2-app-кит.dev => /path/to/yii2-app-kit/backend/web;
— storage.yii2-app-кит.dev => /path/to/yii2-app-kit/storage/web.
Настройте параметры в файле .env
:
FRONTEND_URL = /
BACKEND_URL = /admin
STORAGE_URL = /storage/web
Настройте параметры в файле backend/config/web.php
:
...
'components'=>[
...
'request' => [
'baseUrl' => '/admin',
...
Настройте параметры в файле frontend/config/web.php
:
...
'components'=>[
...
'request' => [
'baseUrl' => '',
...
Пример конфигурации одного домена для apache:
<VirtualHost *:80>
ServerName yii2-app-kit.dev
RewriteEngine on
# основное правило перезаписи для внешнего приложения
RewriteCond %{HTTP_HOST} ^yii2-app-kit.dev$ [NC]
RewriteCond %{REQUEST_URI} !^/(backend/web|admin|storage/web)
RewriteRule !^/frontend/web /frontend/web%{REQUEST_URI} [L]
# перенаправление на страницу без косой черты в конце (раскомментируйте при необходимости)
#RewriteCond %{REQUEST_URI} ^/admin/$
#RewriteRule ^(/admin)/ $1 [L,R=301]
# отключить перенаправление косой черты
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^/admin /backend/web/index.php [L]
# основное правило перезаписи для внутреннего приложения
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^/admin(.*) /backend/web$1 [L]
DocumentRoot /your/path/to/yii2-app-kit
<Directory />
Options FollowSymLinks
AllowOverride None
AddDefaultCharset utf-8
</Directory>
<Directory "/your/path/to/yii2-app-kit/frontend/web">
RewriteEngine on
# если существует каталог или файл, используйте запрос напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond
``` ```
server {
слушать 80;
корень /app;
индекс index.php индекс.html;
имя_сервера yii2-app-kit.dev;
кодировка utf-8;
# location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
# access_log off;
# expires max;
# }
местоположение / {
try_files $uri /frontend/web/index.php?$args;
}
расположение /backend {
try_files $uri /backend/web/index.php?$args;
}
# доступ к хранилищу
местоположение /storage {
try_files $uri /storage/web/index.php?$args;
}
client_max_body_size 32m;
местонахождение ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php-fpm;
fastcgi_index index.php;
include fastcgi_params;
## Кэш
# fastcgi_pass_header Cookie; # заполнить переменные cookie, например, $cookie_phpsessid
# fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # использовать с осторожностью, так как это может вызвать проблемы с SEO
# fastcgi_cache_key "$request_method|$server_addr:$server_port$request_uri|$cookie_phpsessid"; # создание уникального ключа
# fastcgi_cache fastcgi_cache; # использование ключей зоны fastcgi_cache
# fastcgi_cache_path /tmp/nginx/ levels=1:2 keys_zone=fastcgi_cache:16m max_size=256m inactive=1d;
# fastcgi_temp_path /tmp/nginx/temp 1 2; # папка временных файлов
# fastcgi_cache_use_stale updating error timeout invalid_header http_500; # отображение кэшированной страницы при ошибке (даже если она устарела)
# fastcgi_cache_valid 200 404 10s; # срок жизни кэша для 200 и 404 ответов;
# или fastcgi_cache_valid any 10s; # используйте, если хотите кэшировать любые ответы
}
}
upstream php-fpm {
сервер fpm:9000;
}
``` **Компонент KeyStorage**
- Готовый модуль RESTful API.
- Компонент файлового хранилища и виджет загрузки файлов (File storage component + file upload widget) (https://github.com/trntv/yii2-file-kit).
- Создание эскизов по запросу (On-demand thumbnail creation) (trntv/yii2-glide) (https://github.com/trntv/yii2-glide).
- Командная шина с поддержкой очередей и асинхронных задач (Command Bus with queued and async tasks support) (trntv/yii2-command-bus) (https://github.com/trntv/yii2-command-bus).
- Полезные бихевиоры (поведенческие шаблоны): GlobalAccessBehavior, CacheInvalidateBehavior, MaintenanceBehavior.
- Веб-интерфейс журнала Yii2.
- Компонент временной шкалы приложения.
- Контроллер кэша веб-страниц.
- Компонент режима обслуживания (Maintenance mode component) (подробнее: #maintenance-mode).
- Системный информационный веб-интерфейс.
- Поддержка dotenv.
- ExtendedMessageController с возможностью замены языка исходного кода и миграции сообщений между источниками сообщений.
- Виджет Aceeditor (https://github.com/trntv/yii2-aceeditor).
- Виджет Datetimepicker (https://github.com/trntv/yii2-bootstrap-datetimepicker).
- Виджет Imperavi Reactor Widget (https://github.com/asofter/yii2-imperavi-redactor).
- Расширение Elfinder (https://github.com/MihailDev/yii2-elfinder).
- Панель отладки Xhprof (https://github.com/trntv/yii2-debug-xhprof).
- Расширенное автодополнение IDE.
- Пример конфигурации Nginx.
- Готовность к тестированию.
- Поддержка Docker и Vagrant.
- Встроенный mailcatcher (http://mailcatcher.me/).
- Сжатие и объединение ресурсов.
- И многие другие функции...
**Компоненты приложения**
#### I18N (интернационализация)
Если вы хотите хранить сообщения приложения в базе данных и иметь возможность редактировать их из бэкэнда, выполните команду:
php console/yii message/migrate @common/config/messages/php.php @common/config/messages/db.php
Это скопирует все существующие сообщения в базу данных.
Затем раскомментируйте конфигурацию для DbMessageSource в файле common/config/base.php.
#### KeyStorage
Key storage — это хранилище ключ-значение для хранения различной информации, например, настроек приложения. Значения могут быть сохранены как через API, так и через компонент CRUD бэкэнда.
Yii::$app->keyStorage->set('articles-per-page', 20); Yii::$app->keyStorage->get('articles-per-page'); // 20
#### Режим обслуживания
В комплект приложения входит встроенный компонент для обеспечения функциональности обслуживания. Всё, что вам нужно сделать, это настроить компонент «обслуживание» в вашем конфиге:
```php
'bootstrap' => ['maintenance'],
...
'components' => [
...
'maintenance' => [
'class' => 'common\components\maintenance\Maintenance',
'enabled' => Astronomy::isAFullMoonToday()
]
...
]
Этот компонент будет перехватывать все входящие запросы, устанавливать соответствующие заголовки HTTP-ответов (503, «Retry After») и показывать сообщение об обслуживании. Дополнительные параметры конфигурации можно найти в соответствующем классе.
Комплект приложения настроен на включение режима обслуживания, если ключ frontend.maintenance в KeyStorage установлен в значение true.
В Application Kit Command Bus реализован с помощью пакета tactician (https://github.com/thephpleague/tactician) и его yii2 коннектора — yii2-tactician (https://github.com/trntv/yii2-tactician).
Команды хранятся в каталоге common/commands/command, обработчики — в common/commands/handler.
Чтобы выполнить команду, запустите:
$sendEmailCommand = new SendEmailCommand(['to' => 'user@example.org', 'body' => 'Hello User!']);
Yii::$app->commandBus->handle($sendEmailCommand);
$addToTimelineCommand = new AddToTimelineCommand([
'category' => 'user',
'event' => 'signup',
'data' => ['foo' => 'bar']
]);
Yii::$app->commandBus->handle($addToTimelineCommand);
public function behaviors()
{
return [
[
'class' => `common\behaviors\CacheInvalidateBehavior`,
'tags' => [
'awesomeTag',
function($model){
return "tag-{$model->id}"
}
],
'keys' => [
'awesomeKey',
function($model){
return "key-{$model->id}"
}
]
],
];
}
Добавьте в... ``` '/assets/_bundles.php') //];
##测试
Чтобы запустить тесты:
1. Переименуйте файл `tests/.env.dist` в `tests/.env` и отредактируйте его, чтобы установить локальные настройки.
2. Создайте базу данных `yii2-app-kit-test`.
3. Настройте приложение с помощью команды:
php tests/codeception/bin/yii app/setup
4. Запустите веб-сервер командой:
php -S localhost:8080
5. Запустите тесты командой:
codecept run
##常见问题
### 1. Где находится Gii?
Gii доступен по адресам:
- http://127.0.0.1/yii2-app-kit/backend/web/gii
- http://127.0.0.1/yii2-app-kit/frontend/web/gii
### 2. Как включить активацию электронной почты?
Отредактируйте файл `frontend/config/web.php` и установите свойство [[frontend\modules\user\Module::shouldBeActivated]] в значение `true`.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )