1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kzeng-yii2-app-kit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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), без установки будут ошибки при загрузке миниатюр).

Один из способов установки расширений PHP

На примере комплекта 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

Установка приложения

  1. Скопируйте .env.dist в .env в корне проекта (.env.docker.dist, если вы используете Docker).
  2. Настройте параметры в файле .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 
  1. Запустите в командной строке этот шаг обязателен, важно!:
php console/yii app/setup
  1. Инициализация таблиц плагинов редактора форматированного текста и управления медиафайлами (pendalf89):
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

Пример конфигурации одного домена для 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; # используйте, если хотите кэшировать любые ответы
    }
}

PHP-FPM серверы

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.

Command Bus

Что такое командная шина?

В 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);

Timeline (Activity)

$addToTimelineCommand = new AddToTimelineCommand([
    'category' => 'user', 
    'event' => 'signup', 
    'data' => ['foo' => 'bar']
]);
Yii::$app->commandBus->handle($addToTimelineCommand);

Бихевиор (поведенческий шаблон)

CacheInvalidateBehavior

 public function behaviors()
 {
     return [
         [
             'class' => `common\behaviors\CacheInvalidateBehavior`,
             'tags' => [
                  'awesomeTag',
                   function($model){
                       return "tag-{$model->id}"
                  }
              ],
             'keys' => [
                  'awesomeKey',
                  function($model){
                      return "key-{$model->id}"
                  }
              ]
         ],
     ];
 }

GlobalAccessBehavior

Добавьте в... ``` '/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 )

Вы можете оставить комментарий после Вход в систему

Введение

Это готовое к использованию веб-приложение, основанное на Yii2 Starter Kit и Yii2 Advanced Template. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kzeng-yii2-app-kit.git
git@api.gitlife.ru:oschina-mirror/kzeng-yii2-app-kit.git
oschina-mirror
kzeng-yii2-app-kit
kzeng-yii2-app-kit
master