Linux — пересылка apache-запроса в программу на c ++

Я в основном ищу советы и рекомендации о том, как подойти к этой проблеме.

У меня есть серверное программное обеспечение (Linux), которое написано на C ++. Что мне нужно сделать, это
предоставить некоторую информацию, которая генерируется внутри этого программного обеспечения, через
HTTP-вызов веб-сервера Apache.

Конечно, было бы возможно сохранить данные в базе данных и написать для них сервлет или использовать IPC для получения данных, но я хочу сохранить их простыми и объединенными в один файл. А также я хочу знать, сработает ли идея.

Таким образом, рабочий процесс будет выглядеть так:
Клиент -> Веб-сервер Apache -> Программное обеспечение C ++

Существует ли какая-либо существующая библиотека или что-то, что могло бы обрабатывать соединение Apache -> C ++? Или это будет что-то вроде перенаправления запроса в сокет в c ++ и сделать это вручную? В основном что-то вроде разъема для кота.

РЕДАКТИРОВАТЬ

Обратите внимание, что серверное программное обеспечение постоянно работает в фоновом режиме и не должно быть «запущено» при вызове.

5

Решение

Есть несколько вариантов.

CGI прост и был вокруг навсегда. Под CGI веб-сервер будет создавать отдельный процесс для каждого веб-запроса. Как вы упомянули в своем комментарии, вы могли бы написать CGI-скрипт, который делает RPC-вызовы для вашей C ++-программы.

FastCGI является альтернативой CGI; вместо того, чтобы порождать отдельный процесс для каждого веб-запроса, он определяет протокол, позволяющий веб-серверу отправлять несколько веб-запросов одному длительному процессу. Это работает довольно хорошо для веб-приложений. Однако для вашего сценария, когда у вас есть уже существующий серверный процесс, которому необходимо добавить веб-интерфейс, он может работать не так хорошо; Исходя из моего ограниченного понимания, веб-серверы обычно ожидают запуска и остановки длительно выполняющихся процессов FastCGI (в ответ на входящие запросы, загрузку сервера, время простоя и т. д.) вместо подключения к существующим процессам FastCGI. (Я думаю, что большинство серверов позволит вам перенастроить это, но это не по умолчанию.)

Вы также всегда можете встроить веб-сервер, как Мангуста или же CPP-Netlib в вашем C ++ процессе и настройте Apache для запросов прокси к нему. Это может быть вашим лучшим подходом. (Мангуст, например, это очень легко встраивать.)

Наконец, вы можете использовать полноценный модуль Apache (либо перепроектировать свой сервер C ++ как модуль Apache, либо использовать модуль Apache для взаимодействия со службой C ++). Это, вероятно, сложнее, чем вы хотите, хотя существуют такие проекты, как CPPSERV что принять этот подход.

4

Другие решения

Других решений пока нет …