Как настроить apache для скриптов CGI C++?

Вопрос: Я нашел много вещей для Perl, но ничего для C++. Сейчас я запускаю Ubuntu, но я довольно неопытен, поэтому простые инструкции будут потрясающими. Я только что написал небольшую C++ программу, выполненную для работы в CGI, и мне нужно проверить ее. Благодарю! Лучший ответ: Вам не нужно делать ничего особенного; просто скомпилируйте его в исполняемый

Вопрос:

Я нашел много вещей для Perl, но ничего для C++. Сейчас я запускаю Ubuntu, но я довольно неопытен, поэтому простые инструкции будут потрясающими. Я только что написал небольшую C++ программу, выполненную для работы в CGI, и мне нужно проверить ее. Благодарю!

Лучший ответ:

Вам не нужно делать ничего особенного; просто скомпилируйте его в исполняемый файл с именем *.cgi (или еще что), и убедитесь, что у вас есть

AddHandler cgi-script .cgi

(или еще что-то) в конфигурации сервера или .htaccess или еще что-то.

(Отказ от ответственности: Прошло много лет с тех пор, как я это сделал, поэтому я могу что-то забыть. Но я думаю, это должно быть все, что вам нужно.)

Ответ №1

Для программ C++ нет ничего особенного. CGI-программы выполняются веб-сервером. Таким образом, предпосылки те же, что и для Perl Scripts/programs.

Ниже приведены некоторые подсказки, позволяющие запустить и запустить программу CGI C++.

  • Поместите простой исполняемый файл в каталог cgi-bin и сделайте его исполняемым на веб-сервере. Подготовьте простую программу, возвращающую действительный ответ CGI, например

    #include <iostream> using namespace std; int main() { cout << «Content-Type: text/html» << endl << endl; cout << «Hello to Apache and Firefox!» << endl; return 0; }

  • Выполните программу в командной строке и убедитесь, что вывод начинается со следующих строк. Обеспечьте пустую строку после Content-Type.

    $ ./hello_world Content-Type: text/html Hello to Apache and Firefox!

  • Увеличьте LogLevel для отладки и просмотра журналов ошибок веб-сервера. Найдите журнал доступа, журнал ошибок и файл suexec.log. Просмотрите журнал с виртуального хоста, который вы используете, и в главном error.log. В моей системе Ubuntu файлы находятся в /var/log/apache2 и называются access.log, error.log и suexec.log. Одна из моих последних проблем заключалась в том, что “каталог доступен для записи другими:…”

  • При использовании DLL убедитесь, что библиотеки все еще доступны на веб-сервере. Установите RPATH для указания на пользовательский каталог с библиотеками. В этом контексте ldd и objdump -x <executable> | grep RPATH objdump -x <executable> | grep RPATH – ваши друзья.

  • (Этот совет из документации Apache не работал для меня: следите за вводом и выводом, используя директиву ScriptLog от модуля mod_cgi Apache. ScriptLog должен использоваться только на сервере разработки. Дополнительные сведения доступны на странице mod_cgi.)

  • Дополнительные советы приведены в статье ” Отладка проблем веб-сервера Apache”.

Оцените статью
Добавить комментарий