LINUX.ORG.RU

Несколько вопросов про CGI-сценарии

 ,


0

2

Просто хотелось бы в общих чертах понять, что же такое CGI-скрипты и где они применяются. В википедии совсем маленькая статья и из нее ничего непонятно.

1. CGI-сценарии - это все относится к веб-программированию? К разработке сайтов?

2. Насколько актуально в наши дни написание CGI-сценариев с помощью BASH? Есть ли смысл?

3. Можно какой-нибудь простой пример CGI-скрипта/программы, известного сервиса где это используется? Чтобы хоть немного понять что это и для чего.

Ну или ссылку где это объясняется простым языком. :)

Давным давно придумали этот костыль для всяких мелочей. Сейчас его почти не встретишь. Большая редкость. А зачем тебе? Вон лучше ноду учи, или что там сейчас модно?

redixin ★★★★ ()
Ответ на: комментарий от redixin

Решил поизучать bash, в работе пригодится, книжка старая попалась (Дэвид Тейнсли, 2001), так вот там есть глава где как раз эти CGI-скрипты на баше пишут. Я тока начал читать, до той главы еще далеко, про CGI слыхать не слыхивал, хотя про веб кое-что знаю, вот и стало любопытно - что это и зачем оно нужно, актуально ли вообще. :)

startx ()
Ответ на: комментарий от startx

Книжка интересная, там и базовые знания bash, и основные команды, и основная часть собственно про создание bash-скриптов. Просто автор сказал что можно писать CGI-скрипты на баше, а я типо если нашел что-то непонятное (хоть и не по основной теме), то надо хотя-бы поверхностно понять что это за хрень... иначе остается недопонимание.

startx ()
Ответ на: комментарий от Dron

не совсем. 99% это SSI через modпыхпых. а cgi можно вообще на всем что угодно писать, лишь бы в системе исполнялось. короче это костыль времен засилья perl в вебе. тсу это совсем не надо

Anoxemian ★★★★★ ()

Давным-давно, когда компьютеры были большими, веб-серверы работали так: сервер принимал запрос, запускал нужную программу, программа обрабатывала запрос, отдавала ответ, завершалась, после чего сервер передавал ответ юзеру. Эти программы писали обычно на Perl-е (потом на PHP), потому что ничего другого не знали. Вот они и назывались CGI-скрипты.

Сейчас писать CGI-скрипты не имеет никакого смысла, а писать их на Bash-е не имело смысла вообще никогда, разве что ты не способен осилить даже Perl.

Не используется ни одним уважающим себя сервисом.

Miguel ★★★★★ ()
Ответ на: комментарий от Miguel

Понятно, но не совсем.

сервер принимал запрос, запускал нужную программу, программа обрабатывала запрос, отдавала ответ, завершалась, после чего сервер передавал ответ юзеру

А что это за программы были? Какие задачи выполняли?

Сейчас писать CGI-скрипты не имеет никакого смысла

Вышла замена CGI? Или в принципе то что делал CGI стало неактуальным и бесполезным? Кто теперь за него?

startx ()
Ответ на: комментарий от quester

чистый CGI практически не применяется, везде FastCGI потому что быстрее. прототипы писать можешь и на CGI

Ага, значит все-таки оно эволюционировало во что-то новое и быстрое. Осталось только понять где оно применяется. На каких-то специфических сайтах? В каких случаях веб-разработчики пользуются им?

startx ()
Ответ на: комментарий от startx

пользуются им мало и если пользуются то скорее для разработки прототипа. в любом случае хорошему разработчику нужно знать как это устроено, как и почему и во что эволюционировало

quester ()
Ответ на: комментарий от quester

Ясно, а то я смысл HTML/CSS/JS/SQL и пр. в веб-разработке понимаю, а про CGI прочитал впервые, листаю сайты с описанием и нигде не могу найти для чего применяется. Могу ли я например сделать небольшой интернет-магазин или сайт-энциклопедию-архив без этого CGI, или какой-нибудь другой сайт без CGI/FastCGI?

startx ()
Ответ на: комментарий от startx

ты можешь использовать CGI либо FastCGI либо написать модуль к nginx либо написать специализированный http сервер. большинство использует либо FastCGI решения (например PHP) либо решения с уже готовыми специализированными http серверами (java, nodejs)

quester ()
Ответ на: комментарий от redixin

кусок конфига nginx:

location / {
        root /var/www/;
        index index.php;

...

        fastcgi_buffers 256 16k;
        fastcgi_buffering off;
        fastcgi_buffer_size 32k;
        fastcgi_max_temp_file_size 0;
        fastcgi_pass unix:/var/run/php/php-fpm_www.sock;

        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        fastcgi_param  REMOTE_ADDR       $remote_addr;
        fastcgi_param  HTTP_REFERER      $http_referer;

        include fastcgi_params;
    }

quester ()
Ответ на: комментарий от startx

А что это за программы были?

Это были программы, которые принимали на вход запрос и выдавали ответ, который нужно было отправить юзеру. Веб-страницу, то бишь. Ну, и что-то ещё могли делать, конечно — в базу что-то записать, или почту отправить... что угодно.

Вышла замена CGI?

Сейчас, как правило, программа, обрабатывающая запрос, тесно интегрирована с сервером и не завершается никогда (ну, в штатном режиме работы).

Miguel ★★★★★ ()
Ответ на: комментарий от mahalaka

Почему же? Крутится у тебя, допустим, метеостанция. И хочешь ты пользователю по запросу обновленные данные выдавать. Здесь удобней всего CGI на сишечке будет. Да и большинство другой асинхронщины на CGI удобней, чем на вебсокетах. А больше ничего и не придумали еще.

anonymous ()

1. CGI - Common Gateway Interface. Его придумали очень давно, когда-то он был очень полезен, а сейчас используется разве что дегенератами типа пхпшников. Суть этого интерфейса, на самом деле, невероятно проста. На веб-сервер приходит запрос, исходя из адреса в урле, вебсервер запускает на выполнение бинарный файл или скрипт, к примеру http://mysite.com/path/to/bin/get_all_uers.sh, выполнит скрипт в директории /var/cgi-bin/path-to/bin/get_all_users.sh

Через адские костыли типа mod_rewrite это как-то меняется, но я это знать не хочу. Все урловые параметры гет-запроса передаются списком переменных среды, тогда как тело запроса считывается с STDIN. Сервер дожидается выполнения скрипта, после чего весь STDOUT выдает клиенту.

2. Смотря что ты хочешь делать. Дело в том, что пхп придумали потому, что в любом языке, хтпл приходилось печатать тоннами принтфами, тогда как пхп был продвинутым шаблонизатором и позволял встраивать код прям в хтмл. Пожалуйста, запускай свой баш скрипт, выдавай тонную хтмл-кода через echo, подставляя значения конкатенацией строк и прочими извращениями из 20 века.

3. Смотреть ссылку выше, только там перл. Все, в целом, очень просто. Тебе надо настроить сервер типа апача или нжинкса выполнять твои сги-сценарии или бинарники. А дальше лишь взаимодействуя с STDIN\STDOUT делать, что хочешь.

nikolnik ★★★ ()