Как настроить apache для C ++ CGI-скриптов? - PullRequest
2 голосов
/ 18 марта 2012

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

Ответы [ 2 ]

3 голосов
/ 18 марта 2012

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

AddHandler cgi-script .cgi

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

2 голосов
/ 02 апреля 2012

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

Вот несколько советов по запуску и запуску программы C ++ CGI.

  • Поместите простой исполняемый файл в каталог 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 ваши друзья.

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

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

...