Настройка advanced на nginx

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Настройка advanced на nginx

Сообщение h_elena »

Хочу сделать и фронт и бек на одном домене. После всех танцев с бубнами такое реализовала. Но есть но - не очень хороший вид у ссылок - /frontend/web/. Все варианты избавления от них идут в апаче. Но у меня не апач. В итоге это реально реализовать на nginx?
Конфиги

Код: Выделить всё

server {
	server_name ****.ru;
	listen 80;
	charset UTF-8;
	root /var/www/***/yii-application;
	
	index index.php index.html index.htm;
		
	access_log  *****.access.log;
	error_log   ****.error.log;
	
	location /  {
		root  /var/www/***/yii-application/frontend/web;
		try_files $uri /frontend/web/index.php?$args;
    }

	location /admin {
        root  /var/www/***/yii-application/backend/web;
        try_files  $uri /backend/web/index.php?$args;
	}
	}
Frontend

Код: Выделить всё

'basePath' => dirname(__DIR__),
    'homeUrl' => '/',
    'controllerNamespace' => 'frontend\controllers',
    'components' => [
        'request' => [
            'csrfParam' => '_csrf-frontend',
            'baseUrl' => '/frontend/web'
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                '<action:[\w\-]+>' => 'site/<action>',
                '<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
            ],
        ],
        'assetManager' => [
            'basePath' => '@webroot/assets',
            'baseUrl' => '@web/assets'
        ],
    ],
Backend

Код: Выделить всё

    'basePath' => dirname(__DIR__),
    'controllerNamespace' => 'backend\controllers',
    'homeUrl' => '/admin/',
    'components' => [
        'request' => [
            'csrfParam' => '_csrf-backend',
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
            ],
        ],
    ],
P.S. Backend еще пока как таковой не трогала. Нужно вначале с фронтом разобраться.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Настройка advanced на nginx

Сообщение Nex-Otaku »

h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Re: Настройка advanced на nginx

Сообщение h_elena »

Nex-Otaku писал(а): 2018.02.17, 18:06 Документация: https://github.com/yiisoft/yii2-app-adv ... pplication
Вы эти доки читали? Там фронт и бек на разных доменах.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Настройка advanced на nginx

Сообщение Nex-Otaku »

h_elena писал(а): 2018.02.17, 18:11
Nex-Otaku писал(а): 2018.02.17, 18:06 Документация: https://github.com/yiisoft/yii2-app-adv ... pplication
Вы эти доки читали? Там фронт и бек на разных доменах.
А вы их сами-то до конца читали?

Вот что написано по моей ссылке:
Note: if you want to run advanced template on a single domain so / is frontend and /admin is backend, refer to Using advanced project template at shared hosting.
Не за что.
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Re: Настройка advanced на nginx

Сообщение h_elena »

Nex-Otaku писал(а): 2018.02.17, 22:54 Вот что написано по моей ссылке:
Note: if you want to run advanced template on a single domain so / is frontend and /admin is backend, refer to Using advanced project template at shared hosting.
Не за что.
Ну по вашей ссылке выходит текст про домены http://frontend.test/ и http://backend.test/ И затем в самом внизу про это написано. Из-за этого я и написала так.
Спасибо, что обратили мое внимание на конец статьи )))
Фронт я нас троила как рекомендуют здесь
А вот бек не могу запустить - выдает 404. И лог с ошибками пустой. Т.е. дело именно в неверном конфиге сервера.

Код: Выделить всё

server {
	server_name test1.*****.ru;
	listen 80;
	listen [::]:80;
	charset UTF-8;
	root /var/www/****/test1/yii-application/www/web;
	
	index index.php index.html index.htm;
	
	location /  {
		try_files $uri /index.php?$args;
    }

	location /admin/ {
        root  /var/www/*****/test1/yii-application/www/admin/web;
        try_files  $uri /admin/web/index.php?$args;
	}
}
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Настройка advanced на nginx

Сообщение Nex-Otaku »

Первая ссылка в гугле по запросу "yii2-advanced nginx": https://github.com/mickgeek/yii2-advanc ... nginx.conf

Предлагаю попробовать.
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Re: Настройка advanced на nginx

Сообщение h_elena »

Nex-Otaku писал(а): 2018.02.18, 13:36 Первая ссылка в гугле по запросу "yii2-advanced nginx": https://github.com/mickgeek/yii2-advanc ... nginx.conf

Предлагаю попробовать.
Только вот там идет настройка не для данной сборки. Там есть наличие папок бека и фронта. А до этого вы указали на иную сборку - перемещение бека и фронта в папки www и www/admin
А на стандартной сборке на фронте та же проблема - урлы /frontend/web/ А на беке не запускается /admin. Идет редирект на /backend/web/site/login и выдает 404.
h_elena
Сообщения: 87
Зарегистрирован: 2016.03.23, 14:07

Re: Настройка advanced на nginx

Сообщение h_elena »

Все-таки настроила

Код: Выделить всё

server {
	server_name test.***.ru;
	listen 80;
	charset UTF-8;
	
	root /var/www/***/yii-application;
	
	index index.php index.html index.htm;
	
	location /  {
		root  /var/www/***/yii-application/frontend/web;
		try_files $uri $uri/ /frontend/web/index.php?$args;
    }

	location /admin {
        root  /var/www/html/***/yii-application/backend/web;
        try_files  $uri $uri/ /backend/web/index.php?$args;
		
        location ~* ^/admin/(.+\.php)$ {
            try_files  $uri $uri/ /backend/web/$1?$args;
        }
	}
	}

Код: Выделить всё

'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language' => 'ru-RU',
    'sourceLanguage' => 'ru-RU',
    'timeZone' => 'Europe/Moscow',
    'homeUrl' => '/',
    'controllerNamespace' => 'frontend\controllers',
    'modules' => [],
    'components' => [
        'request' => [
            'csrfParam' => '_csrf-frontend',
            'baseUrl' => ''
        ],
        'session' => [
            'class' => 'yii\web\CacheSession',
            'timeout' => 28800,
            'name' => '*****',
            'cookieParams' => [
                'httpOnly' => true,
                'path'     => '/',
            ],
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => '/site/error',
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                '<action:[\w\-]+>' => 'site/<action>',
                '<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
            ],
        ],
        'assetManager' => [
            'basePath' => '@webroot/assets',
            'baseUrl' => '@web/frontend/web/assets'
        ],
    ],

Код: Выделить всё

'id' => 'app-backend',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'language' => 'ru-RU',
    'sourceLanguage' => 'ru-RU',
    'timeZone' => 'Europe/Moscow',
    'homeUrl' => '/admin',
    'controllerNamespace' => 'backend\controllers',
    'modules' => [],
    'components' => [
        'request' => [
            'csrfParam' => '_csrf-backend',
            'baseUrl' => '/admin'
        ],
        'user' => [
            'identityClass' => 'common\models\User',
            'enableAutoLogin' => true,
            'identityCookie' => ['name' => '_identity-backend', 'httpOnly' => true],
        ],
        'session' => [
            'class' => 'yii\web\CacheSession',
            'timeout' => 28800,
            'name' => '****',
            'cookieParams' => [
                'httpOnly' => true,
                'path'     => '/admin',
            ],
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'errorHandler' => [
            'errorAction' => '/site/error',
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '' => 'site/index',
                '<action:[\w\-]+>' => 'site/<action>',
                '<controller:[\w\-]+>/<action:[\w\-]+>' => '<controller>/<action>',
            ],
        ],
        'assetManager' => [
            'basePath' => '@webroot/assets',
            'baseUrl' => '@web/assets'
        ],
    ],
Фронт работает нормально и адекватно. А вот с беком проблемы. И как я поняла здесь проблема в настройках. Т.к. ошибки такого рода идут:

2018/02/18 14:53:26 [error] 6791#0: *124 FastCGI sent in stderr: "PHP message: An Error occurred while handling another error:
yii\base\InvalidConfigException: Object configuration must be an array containing a "class" element. in /var/***/yii-application/vendor/yiisoft/yii2/BaseYii.php:353
Stack trace:
#0 /var/***/yii-application/vendor/yiisoft/yii2/base/Component.php(679): yii\BaseYii::createObject(Array)
#1 /var/***/yii-application/vendor/yiisoft/yii2/base/Component.php(663): yii\base\Component->attachBehaviorInternal('access', Array)
#2 /var/***/yii-application/vendor/yiisoft/yii2/base/Component.php(545): yii\base\Component->ensureBehaviors()
#3 /var/***/yii-application/vendor/yiisoft/yii2/base/Controller.php(274): yii\base\Component->trigger('beforeAction', Object(yii\base\ActionEvent))
#4 /var/***/yii-application/vendor/yiisoft/yii2/web/Controller.php(164): yii\base\Controller->beforeAction(Object(yii\web\ErrorAction))
#5 /var/***/yii-application/vendor/yiisoft/yii2/base/Controller.php(155): yii" while reading upstream
Закрыто