Yii2 Framework для Azure Web App (страница 404 не найдена) - PullRequest
0 голосов
/ 26 июня 2019

Спасибо, что прочитали мой пост.

У меня проблема с корректной работой приложения веб-сайта (Yii2) в веб-приложениях Azure. Я перенес свои сайты Yii2 с существующего сервера на веб-приложения Azure. После множества манипуляций, перечисленных ниже, я могу зайти на сайт.

Основная тема успешно загружена, но выбрасывает "404 Страница не найдена Запрашиваемая страница отсутствует или адрес был изменен: «Ошибка в теле и другие ссылки в« строке меню »тоже не работают». Требуемый ресурс был удален, изменилось его имя или временно недоступен . "

Ресурсы Azure настроены следующим образом:

  • 1 x План обслуживания приложения: S1: 1 (Windows Base)
  • 1 x База данных Azure для сервера MySQL
  • 1 x Служба приложений (Веб-приложение)

Настройка приложения-службы приложения:

  • .Net Framwork: v4.7
  • Версия PHP: 7.0
  • Платформа: 32-битная

Шаги миграции:

  1. FTP все файлы / папки от htdocs на моем существующем сервере до моего плана обслуживания приложений (\site/wwwroot)
  2. Создание таблицы SQL в PhpAdmin
  3. Найти и заменить ENGINE=InnoDB DEFAULT CHARSET=utf8; в скрипте
  4. Подключитесь к базе данных Azure для сервера MySQL, создайте новую схему и запустите сценарий
  5. Из Azure, KUDU Inferface просмотрите (\ site \ wwwroot \ config) и измените db.php на

    <?php
    
    return [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=xxxx.mysql.database.azure.com;dbname=xxxxx',
        'username' => 'xxxxxxx@xxxxxxxxxxxxxxxxxx',
        'password' => 'xxxxxx',
        'charset' => 'utf8',
    ];
    
  6. Перезагрузите веб-приложение
  7. Проверьте https://yourdomain.com/requirements.php (прошло без ошибок)
  8. "При поиске нового веб-приложения был удален искомый ресурс, было изменено его имя или он временно недоступен".
  9. Окна KUDO PowerShell вернулись к site/wwwroot и выполнили следующую строку кодов
    php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    php composer-setup.php
    php composer.phar global require "fxp/composer-asset-plugin:^1.2.0"
    
  10. Перейдите в каталог (\ site \ wwwroot \ web) и измените index.php со следующей строкой кодов:

    if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
        if(!headers_sent()) {
            header("Status: 301 Moved Permanently");
            header(sprintf(
                'Location: https://%s%s',
                $_SERVER['HTTP_HOST'],
                $_SERVER['REQUEST_URI']
            ));
            exit();
        }
    }
    // comment out the following two lines when deployed to production
    ('YII_DEBUG') or define('YII_DEBUG', false);
    defined('YII_ENV') or define('YII_ENV', 'prod');
    
    require(__DIR__ . '/../vendor/autoload.php');
    require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
    
    $config = require(__DIR__ . '/../config/web.php');
    
    (new yii\web\Application($config))->run();
    
  11. Из настроек Azure Portal / Web App / Application. Измените каталог по умолчанию с сайта \ wwwroot на site \ wwwroot \ web
  12. Перезапустите веб-приложение.

Домашняя страница теперь успешно загружается, но в теле сообщения об ошибке 404 и «Требуемый ресурс удален, его имя изменено или временно недоступно». при попытке доступа к другим страницам в шапке.

Я также заметил, что у меня есть 2 .htacss файла 1x на моем \ site \ wwwroot и 1x на моем \ site \ wwwroot \ web Хавед попытался удалить их и настроить файл web.config в (site \ wwwroot \ web), но все еще не работает.

<configuration>
  <system.webServer>  
    <rewrite>  
        <rules>  
          <rule name="Redirect rquests to default azure websites domain" stopProcessing="true">
            <match url="(.*)" />  
            <conditions logicalGrouping="MatchAny">
              <add input="{HTTP_HOST}" pattern="^yoursite\.azurewebsites\.net$" />
            </conditions>
            <action type="Redirect" url="https://mysitename.azurewebsites.net/{R:0}" />  
          </rule>  
        </rules>  
    </rewrite>  
  </system.webServer>  
</configuration>

Поскольку Yii2 не известен в Azure Web App, нигде не могу найти решение. Буду признателен, если вы можете помочь вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...