У меня есть веб-приложение с Apache и PHP на задней панели. Я в процессе повышения этого со многими новыми функциями и учитывая использование node.js для новой работы.
Прежде всего, могут ли PHP и node.js совместно существовать на одной машине? Я не понимаю, почему не. Во-вторых, могу ли я просто вызвать node.js-код непосредственно из Javascript и вернуть JSON?
Да, и да. Узел и Apache / PHP могут сосуществовать на одном сервере.
Единственная проблема, с которой вы, вероятно, столкнетесь, заключается в том, что они не могут одновременно слушать один и тот же порт . HTTP по умолчанию работает на порту 80, и только один процесс может «прослушивать» один порт в любой момент времени. Поэтому вам может потребоваться запустить приложение Node на другом порту (например, 8080), что может вызвать трудности, если для одного из ваших целевых пользователей будет использоваться только порт 80.
Вы можете запускать узел и PHP на одном сервере и даже на одном и том же порту. Ключ состоит в том, чтобы использовать сервер, например nginx, перед прослушиванием на порту 80, настроить PHP в Nginx, как обычно (используя php-fpm), и настроить экземпляр узла для локального прослушивания на каком-то высоком порту, таком как 8081.
Затем просто настройте nginx для проксирования всех запросов узла до localhost: 8081, используя имя каталога в качестве фильтра.
Другим преимуществом этого является то, что вы также можете иметь несколько отдельных экземпляров узла в разных доменах, а также иметь экземпляры Go и других языков, которые запускаются как демон HTTP. И вы также можете сделать это довольно безопасным.
И вы также выигрываете от огромной скорости Nginx в обслуживании статических файлов и не должны обслуживать статические файлы из вашего приложения Node (если вы этого не хотите).
Yeh, если вы используете php для обслуживания страниц javascript для клиентов, код javascript может использовать запросы AJAX для доступа к маршрутам, открытым с вашего узла.