CGI C++ - jak to zrobić?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
janassin
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 wrz 2010, 17:30
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

CGI C++ - jak to zrobić?

Post autor: janassin »

Witam!

Mam następujący problem: chciałbym zrobić serwer www, w którym będę mógł używać cgi. Wiem, że apache udostępnia taką możliwość, ale nie wiem gdzie to się ustawia. Chciałbym się również dowiedzieć czy są do tego potrzebne jakieś specjalne biblioteki lub flagi do g++.

Z góry dziekuje za pomoc.
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: CGI C++ - jak to zrobić?

Post autor: DDAroo »

CGI polega na tym, że serwer www zamiast samemu generować odpowiedź HTTP na żądanie HTTP użytkownika, zleca to zewnętrznemu skryptowi/programowi. W dużym uproszczeniu wygląda to tak, że żądanie HTTP od użytkownika jest przetwarzane przez serwer. Wyciąga on zmienne GET oraz POST z żądania. Następnie ustawia zmienne środowiskowe dla uruchamianego skryptu, w których umieszcza informacje różne informacje o żądaniu od użytkownika, którego mogą być przydatne skryptowi, jak na przykład adres IP użytkownika czy typ żądania HTTP. Następnie uruchamia skrypt, na którego standardowe wejście zostaje wysłane żądanie CGI, które zawiera np. zmienne HTTP. Skrypt przetwarza te dane i na na standardowe wyjście wypisuje odpowiedź CGI, które jest przetwarzane przez serwer www, który daje odpowiedź użytkownikowi.

użytkownik -----[żądanie HTTP]----> serwer www ----[żądanie CGI]---> program ----[odpowiedź CGI]---> serwer www ----[odpowiedź HTTP]---> użytkownik

Forma żądania i odpowiedzi CGI oraz zalecenia w uruchamianiu skryptów CGI znajdują się w standardzie CGI 1.1. Nie musisz używać żadnych zewnętrznych bibliotek aby uruchomić program, ustawić zmienne środowiskowe, wypisać dane na jego standardowe wejście i odczytać jego standardowe wyjście.
janassin
Piegowaty Guziec
Piegowaty Guziec
Posty: 5
Rejestracja: 14 wrz 2010, 17:30
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: CGI C++ - jak to zrobić?

Post autor: janassin »

OK. Zainstalowałem sobie serwer lighttpd i uruchomiłem cgi wg skryptu zawartego w index.html (lighty-enable-mod cgi). Skompilowałem prosty program test.cpp

Kod: Zaznacz cały

#include<iostream>
using namespace std;

int main()
{
  cout << "Content-type: text/html\n\n";
  cout << "jakis tekst" << endl;
}
i wsadziłem plik wynikowy do folderu /usr/lib/cgi-bin/ jako test.o i test.cgi(po prostu zmieniając nazwę).
Wyszukiwarka na zapytanie localhost/cgi-bin/test.o i localhost/cgi-bin/test.cgi daje wynik: "404 - not found"


Spróbuję później zrobić to samo na apachu.


Na apachu wyszukiwarka mi wypisała: You don't have permission to access /cgi-bin/ on this server. Po zmianie ustawień dostępu do folderu /usr/lib/cgi-bin/ zadziałało.

Dzieki za pomoc.
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: CGI C++ - jak to zrobić?

Post autor: DDAroo »

Chyba tak średnio pomogłem, myślałem że chcesz samemu napisać taki serwer, a nie uruchomić swoje programy na serwerze :|
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: CGI C++ - jak to zrobić?

Post autor: mikolajs »

A może lepiej użyć Wt? (pakiet witty)
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: CGI C++ - jak to zrobić?

Post autor: leon1313 »

Poczytaj sobie troszkę o nagiosie i konfiguracji lighttpd do współpracy z tym programem.
http://redmine.lighttpd.net/wiki/1/NagiosRecipe

Samych przykładów jest też troszkę:
http://www.google.pl/#hl=pl&source=hp&b ... 14e5fb5152
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 13 gości