apache / nginx -execute программа, получающая параметры из http-запроса

0

Я использовал VPS с Apache/Nginx (в разное время) на Ubuntu 14.04 и выполнял команды/программы в php через exec(). Теперь я знаю, что мне не нужен Php для выполнения этих вещей, скажем:

exec('whoami'); or
exec('myexec');

поскольку php просто действует как дополнительный уровень в моем случае. Могу ли я просто использовать apache/nginx для получения данных из http-запросов, сделанных к нему (get, post..) и "pass" в качестве параметров для определенной исполняемой программы и "return output" (обычный текст)? Скажем, программа calc, которая получает 3 параметра (4,5, +) и обратный выход (9).

Я уже видел этот вопрос, но он описывает процедуру с помощью сценария Lua, в то время как я пытаюсь сделать некоторые проекты для хобби с помощью c++. В настоящее время я понятия не имею, как действовать, поскольку я только знаком с стеком php LAMP, если я ошибаюсь, где-то небольшое руководство было бы полезно :)

Теги:
nginx

1 ответ

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

Вероятно, вы можете использовать CGI со своим веб-сервером, поэтому он служит для вывода вашего кода C++ при запросе определенного URL-адреса. Я не уверен, что это можно назвать "хорошей" практикой, но это один из способов добиться того, чего вы хотите. Для получения дополнительной информации, проверьте эту ссылку http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не программист C++, поэтому это может не работать.

  • Конфигурация веб-сервера

    Убедитесь, что ваш веб-сервер поддерживает CGI и соответствующим образом настроил его. Пример файла виртуального хоста Apache 2:

     <Directory "/var/www/cgi-bin">
         AllowOverride None
         Options ExecCGI
         Order allow,deny
         Allow from all
     </Directory>
    
    <Directory "/var/www/cgi-bin">
        Options All
    </Directory>
    
  • Пример программы C++

     #include <iostream>
    using namespace std;
    
    int main ()
    {
    
       cout << "Content-type:text/html\r\n\r\n";
       cout << "<html>\n";
       cout << "<head>\n";
       cout << "<title>Hello World - First CGI Program</title>\n";
       cout << "</head>\n";
       cout << "<body>\n";
       cout << "<h2>Hello World! This is my first CGI program</h2>\n";
       cout << "</body>\n";
       cout << "</html>\n";
    
       return 0;
    }
    

    Скомпилируйте выше код и назовите исполняемый файл как cplusplus.cgi. Поместите его в каталог /var/www/cgi-bin или все, что вы настроили в своем конфигурационном файле Apache. Не забудьте сделать его исполняемым (chmod 770 cplusplus.cgi). Теперь, если вы посетили URL-адрес www.example.org/cgi-bin/cplusplus, вы должны увидеть выход Hello World! This is my first CGI program Hello World! This is my first CGI program

  • 0
    Спасибо, и я хотел знать, почему это не будет хорошей практикой.
  • 0
    Что ж, у меня сложилось впечатление, что CGI - это то, что, по мнению людей, давно должно было умереть (см. Shellshock), но если вы придерживаетесь лучших рекомендаций по безопасности и если это не очень большой / сложный проект, я не вижу никакого вреда в этом путь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню