Настройки апача на хосте

Всё что касается построения API
Ответить
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Настройки апача на хосте

Сообщение MetaDriver »

Пытаюсь запустить REST-api на публичном хосте (ihc.ru), ... не выходит каменный цветок. :?

Сразу оговорюсь: дома на локалке всё работает, но здесь у меня Winginx, а на хосте, естессно, апач.

С чем столкнулся. Рекомендации по настройке апача отсюда: https://github.com/yiisoft/yii2/blob/ma ... llation.md в .htaccess не срабатывают (404 not found). Собсно там и не обещано, что это обязано работать на публичном виртуальном хосте, мало того, чуть выше предлагаемой конфигурации апача, есть такой абзац:
Информация: Если приложение работает на хостинге где нет доступа к настройкам веб сервера, то можно изменить структуру приложения как описано в разделе «Работа на Shared хостинге».
Но при этом по ссылке «Работа на Shared хостинге» - пустая страница, аналогично дело обстоит и в англоязычной версии документации. Такие вот дела.
Запустить basic-приложение (у меня апи на его основе сделано) удаётся с другой конфигурацией:

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

AddDefaultCharset utf-8
Options  +FollowSymLinks
IndexIgnore  */*

   RewriteEngine on 

DocumentRoot home/xxxxxx/www/kazkol.ru/basic/web

DirectoryIndex basic/web/index.php

     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . basic/web/index.php
Сейчас на него можно полюбоваться по адресу: http://kazkol.ru/
// Приложение, которое будет работать с этим Апи, сейчас доступно по адресу: http://spata.metadriver.ru/
Basic-приложение работает исправно, но (!) есть разница в поведении Url'ов в адресной строке браузера (по сравнению с работой под Winginx на локалке) - при запуске оно успешно стартует с урла http://kazkol.ru/, но при переходе по ссылкам "Home, About, Contact, Login" - расширяет адресную строку, добавляя туда вставку "basic/web/", чего на локальном хосте не делает. При удалении ручками этой вставки из адреса, - отображает главную страницу... ну да, мы ж перенаправили все неизвестные запросы туда.
Ладно, по большому счёту плевать на "basic/web/", это конечно удлиняет адрес, но не смертельно.
Смертельно другое - не могу получить доступ к REST-апи ! Вместо JSON-данных в ответе получаю HTML-содержимое главной страницы.
Это при адресации http://kazkol.ru/<module>/<controller> (так у меня работает адресация на локалке). Если же попытаться "последовать за дао" и расширить адресную строку по образу и подобию поведения basic-приложения, то бишь добавить в адрес ту же неизбежную вставку http://kazkol.ru/basic/web/<module>/<controller> , то в респонсе получаю тоже HTML-данные, но уже с содержимым "404 not found" страницы Yii.
Притом что, напомню, - на локалке всё работает ! А так же напомню - на локалке таки Winginx....
И куда теперь рыть? Идеи у кого-нибудь есть?
В Yii пытался шаманить с урл-манагером, ничего не нашаманил и вернул всё взад, как на локалке. А там всё просто:

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

       'urlManager' => [
          'enablePrettyUrl' => true,
//          'enableStrictParsing' => true,  // закомментировано, чтоб параллельно работало basic-приложение
          'showScriptName' => false,
          'rules' => [
             [
                'class' => 'yii\rest\UrlRule',
                'pluralize' => false,
                'controller' => [
                   'books/region',  // 01
                   'books/rajon',  // 02
                   'books/naseljonnyj_punkt',  // 03
                 ..............
                 ...............
                   'books/tip_issledovaniya',  // 29
                   'books/tehnicheskoe_sostojanie',  // 30
                   'books/tehnicheskoe_sostojanie_jelementov_zdanija',  // 31
                   'books/tip_zdanija',                        //  32
                   'books/harakter_sovremennogo_ispolzovanija',  // 33
                ],
                'except' => ['delete',],
             ],
          ],
       ],
 
И это исправно работает.
Помогите, плиз, кто чем может. Хотя бы идеями. Может кто сталкивался уже с этими или подобными подводными камнями. Главное я даже не могу сориетироваться куда энергию поиска направлять: то пытаться урл-менеджер Yii приручить, то ли документацию по настройкам .htaccess дальше раскапывать. Занимался уже и тем и другим, и продолжаю, но ... пока имею то, что описал. Возможно придётся менять структуру приложения (переносить index.php в корень сайта), но я пока плохо представляю чем это чревато - где и что именно нужно будет перенастраивать в Yii, а что наоборот не нужно пренастраивать...

Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Настройки апача на хосте

Сообщение MetaDriver »

Запустился кое-как. Было весело....

Во первых поменял структуру приложения. Всё заработало из корня сайта.
Небольшой хелп "для будущих поколений" - как именно я это сделал.
Для этого (1) перенёс содержимое папки 'basic/web' в корень сайта (2) в index.php поменял три строки

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

//   require(__DIR__ . '/../vendor/autoload.php');  // было
require(__DIR__ . '/basic/vendor/autoload.php');   // на это поменял.  ниже всё аналогично.
//  require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/basic/vendor/yiisoft/yii2/Yii.php');
//  $config = require(__DIR__ . '/../config/web.php');
$config = require(__DIR__ . '/basic/config/web.php');
Это позволило привести адресацию для модулей в "стандартный" вид.
Файл .htaccess есть только в корне сайта и имеет следующее содержимое:

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

AddDefaultCharset utf-8

Options  +FollowSymLinks
IndexIgnore  */*   
# */
     RewriteEngine on 
 DirectoryIndex index.php
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteRule . index.php
Но! REST-апи при этом не заработало. Гы... :)
Здесь началась вторая часть приключения. Пропущу все промежуточные этапы и эмоции, хотя они и могли бы изрядно позабавить общественность.
Напишу сразу чем всё закончилось и что оказалось не так.
А всё дело было в кейс-сенситивности юникса (и соответственно в отсутствии оной у винды).
Имена файлов моих контроллеров начинались со строчных букв. А Yii искала их в расчёте на то, что первые буквы заглавные...
// ворчливо: ....могла бы и поумнее искать... :x ;)
Короче - переименовал только файлы контроллеров (поднял регистр первых букв), классы контроллеров переименовывать не пришлось - всё заработало.
// тут ещё могут быть вопросы, типа "как вообще имена контроллеров у тебя оказались начинающимися с мелких буков?"
// Но это уже другая история.... Был у меня разумный смысл назвать именно так...
// А у меня вот совсем другой вопрос: "А что, низззя???" :P

Аватара пользователя
samdark
Администратор
Сообщения: 9352
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Настройки апача на хосте

Сообщение samdark »

Низзя. Противоречит PSR-4.

Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Настройки апача на хосте

Сообщение MetaDriver »

Sam Dark писал(а):Низзя. Противоречит PSR-4.
Злые вы. Уйду я от...
Не,.. пока не уйду... У мну ещё вопросы есть. ;) Только уже не для этой ветки.

Ответить