Периодическая ошибка сервера AWS Linux AMI "Файл не существует: /var/www/html/var"
Периодическая ошибка "Файл не существует: /var/www/html/var" из всех областей приложения Zend MVC, приводящий к тому, что страницы иногда не загружаются - когда они обычно загружаются идеально.
Наша установка
Приложение MVC в стеке LAMP на AWS с:
- Внешнее приложение Zend 1 на среднем c1 AWS linux AMI 64bit
- База данных MySQL на среднем 64-битном экземпляре AWS linux AMI
- запуск форума phpbb3 параллельно с приложением MVC на сервере приложений, с двумя базами данных на сервере db (одна для приложения, одна для phpbb)
- php 5.4.22
- MySQL 5.1.72 + MySQL
- эластичные IP-адреса, связанные с серверами приложений и баз данных
- серверы приложений и БД подключаются с использованием частного IP-адреса (т. е. сервер приложений подключается к частному IP-адресу сервера БД, группа безопасности сервера БД принимает частный iP сервера приложений через порт 3306)
- в настоящее время работает сайт как сайт разработчика, используя каталог dev с основного сайта, например:
www.mysite.com/dev/
в /dev/configs/application.ini мы определяем следующее:
setting.basedir = dev setting.baseurl = http://www.mysite.com/dev setting.securebaseurl = http://www.mysite.com/dev
у нас есть DNS с godaddy, и мы используем A host = IP address (то есть IP.IP.IP.IP), а не cname
- мы не используем виртуальные хосты (поскольку у нас есть только один сайт на "сервер")
- у нас есть файлы htaccess и различные перенаправления, но на локальных серверах LAMP нет ошибок
- мы используем minify и закомментируем RewriteBase (по умолчанию)
Настройки httpd.conf в основном по умолчанию (дайте мне знать, если есть важные, которые не перечислены здесь)
ServerName www.mysite.com UseCanonicalName Off DocumentRoot "/var/www/html" <Directory /> Options FollowSymLinks AllowOverride ALL </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
Эта проблема
В /etc/httpd/logs/error_log появляется следующая периодически возникающая ошибка:
Файл не существует: /var/www/html/var, реферер: http://www.mysite.com/dev/various
При возникновении этой ошибки отображается половина полной страницы той части сайта, к которой мы пытались получить доступ, с сообщением:
"Не удалось сохранить метаданные в metadataCache"
Ошибка является периодической, поскольку мы не можем повторить ее с какой-либо последовательностью действий или временем:
- повторное обновление страницы, кажется, избавляет от проблемы, страница в конечном итоге будет отображаться правильно, а остальная часть сайта может быть доступна в течение длительного времени
- он не зависит от браузера или IP-адреса (используется для доступа к сайту)
- он кажется независимым от страницы, к которой мы пытаемся получить доступ (т.е. у нас были ошибки со всех страниц сайта)
- Кажется, что ошибка появляется после того, как сайт на некоторое время простаивает, а затем получает доступ к новой части сайта - хотя это противоречиво (иногда ошибка появляется на полпути при активном использовании сайта).
У нас нет этой проблемы на локальных машинах - у нас есть около 3 различных локальных машин на машинах Mac с лампами и окнами с нашими разработчиками.
У нас не было проблемы с исходной конфигурацией AWS, которая была app + database на одном экземпляре linux ami micro - доступ к нему осуществлялся через ec2 addres & configs/application.ini baseurl с адресом ec2 (т.е. мы не использовали настройки хоста DNS A в этот этап)
Теории и вещи, которые мы попробовали:
Когда мы обновляем настройки application.ini, чтобы использовать IP, а не DN, мы, похоже, не получаем ошибку (которая указывает на какой-либо цикл root / dns сервера)
setting.basedir = dev setting.baseurl = http://www.IP.IP.IP.IP.com/dev setting.securebaseurl = http://www.IP.IP.IP.IP.com/dev
Сначала мы думали, что в httpd.conf было закомментировано имя сервера, но когда мы установили его на www.mysite.com, mysite.com или "www.mysite.com", это не имеет значения
- Мы сделали обычные шаги по удалению всего кеша Zend + forum + browser, перезапуску Apache, перезапуску MySQL и т. Д.
Ничто из того, что мы делаем, не указывает на источник ошибки.