Я только что настроил веб-сервер lighttpd для передачи запроса php-fcgi на внешний сервер приложений.
Сервер приложений работает под управлением PHP 5.3 и spawn-fcgi.
Проблема в том, что все веб-файлы должны существовать как на веб-сервере, так и на сервере приложений. Если я удалю веб-файлы с сервера приложений, я получаю: «Входной файл не указан». Если я удалю веб-файлы с веб-сервера, я получаю ошибку 404. Когда веб-файлы находятся и в приложении, и на веб-сервере, он работает.
Как вообще это удается? Есть ли способ настроить только один набор веб-файлов с символической ссылкой или чем-то еще на серверах? Как обычно решается эта проблема? Спасибо.
КОНФИГУРАЦИЯ LIGHTTPD НА ВЕБ-СЕРВЕРЕ
#### fastcgi module
fastcgi.server = ( ".php" =>
( "app1.geodb.io" =>
(
"host" => "192.168.167.82",
"port" => 8080,
"check-local" => "disable",
"disable-time" => 3
)
)
)
Я не уверен насчет проблемы fastcgi, но стандартное решение для синхронизации файлов между серверами - rsync
(использует интересные алгоритмы для минимизации сетевого трафика). Предполагая, что вы можете назначить один из серверов как «главный», то есть определить его файлы как основу для всех других серверов, этого должно быть достаточно:
rsync -avh /var/www/example/ remotehost:/var/www/example/
Обратите внимание, что завершающие косые черты имеют значение, и эта команда будет не удалить файлы на удаленном хосте, если они удалены на главном. Если вы хотите добавить --delete:
rsync -avh --delete /var/www/example/ remotehost:/var/www/example/
Вам нужно, чтобы rsync присутствовал на обоих концах, и, конечно, вам нужен доступ по ssh, поскольку он использует ssh в качестве своего транспорта (вы можете использовать другие вещи, но вам, вероятно, лучше придерживаться ssh, если у вас нет веской причины переключить). Вы также, вероятно, захотите запустить это в задании cron, но если вы развертываете файлы на «мастере» с помощью автоматизированного процесса, вы также можете добавить его в это задание.
РЕДАКТИРОВАТЬ: Вы также можете смонтировать / var / www / example через NFS или какую-либо другую сетевую файловую систему на всех узлах, конечно, но тогда вы потеряете часть независимости каждого узла и рискуете создать узкое место. Но если ваши .php файлы очень интенсивно загружают процессор, а ввод-вывод файловой системы не имеет большого значения, вы определенно можете попробовать этот вариант.