Фреймворк Yii2

Yii2 Установка

Yii2 может быть установлена как basic или advanced.

  • basic — структура постого сайта.
  • advanced — структура папок разнесена на frontend и backend части.

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

composer global require "fxp/composer-asset-plugin:^1.2.0"

Устанавливаем basic:

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic my_project_dir_name

Документация

Устанавливаем advanced:

composer create-project --prefer-dist yiisoft/yii2-app-advanced my_project_dir_name

Документация

Yii2 basic настройка Apache

После установки, в вашем каталоге появятся файлы и каталоги:

├── assets
├── codeception.yml
├── commands
├── composer.json
├── composer.lock
├── config
├── controllers
├── LICENSE.md
├── mail
├── models
├── README.md
├── requirements.php
├── runtime
├── tests
├── vendor
├── views
├── web
├── yii
└── yii.bat

Базовый каталог, на который нужно настроить сервер — web

DocumentRoot "path/to/basic/my_project_dir_name/web"


RewriteEngine on

# Если запрашиваемая в URL директория или файл существуют обращаемся к ним напрямую
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Если нет - перенаправляем запрос на index.php
RewriteRule . index.php

Файл .htaccess

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# Если запрос не начинается с web, добавляем его
RewriteCond %{REQUEST_URI} !^/(web)
RewriteRule (.*) /web/$1

# Если файл или каталог не существует, идём к /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /web/index.php

Yii2 basic настройка Nginx

Базовый каталог, на который нужно настроить сервер — web

server {
    server_name my-yii2-basic;
    root /path/to/basic/my_project_dir_name/web;

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }
    # DEV
    # This rule should only be placed on your development environment
    # In production, don't include this and don't deploy app_dev.php or config.php
    location ~ ^/(app_dev|config)\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        # When you are using symlinks to link the document root to the
        # current version of your application, you should pass the real
        # application path instead of the path to the symlink to PHP
        # FPM.
        # Otherwise, PHP's OPcache may not properly detect changes to
        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # for more information).
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }
    # PROD
    location ~ ^/app\.php(/|$) {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        # When you are using symlinks to link the document root to the
        # current version of your application, you should pass the real
        # application path instead of the path to the symlink to PHP
        # FPM.
        # Otherwise, PHP's OPcache may not properly detect changes to
        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # for more information).
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/app.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

    # return 404 for all other php files not matching the front controller
    # this prevents access to other php files you don't want to be accessible.
    location ~ \.php$ {
      return 404;
    }

    error_log /path/to/basic/logs/project_error.log;
    access_log /path/to/basic/my_project_dir_name/web/project_access.log;
}

Yii2 basic настройка фреймвока

открываем файл config/db.php и указываем параметры подключения.

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

Красивые url (чпу)

открываем файл config/web.php

находим и раскомментируем следующий код

   'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
    ],
],
Читать по теме
Интересные статьи