Быстрый запуск cgi-программы через веб-браузер

#apache #fastcgi #mod-fcgid

#apache #fastcgi #мод-fcgid

Вопрос:

Я создал программу hello FastCGI на C

 #include <fcgi_stdio.h>
#include <stdlib.h>

int count;
void initialize(void)
{
  count=0;
}
int main(void)
{
  initialize();

  while (FCGI_Accept() >= 0)
  {
    printf("Content-type: text/htmlrn"
     "rn"
     "<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
     "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
     "Request number %d running on host <i>%s</i>n",
        count, getenv("REMOTE_HOST"));
  }
  return 1;
}
  

Затем я скомпилировал программу, используя «gcc -o hello1 hello1.c -lfcgi»

Это создало исполняемый файл «hello1» в моем домашнем каталоге (в Ubuntu) Когда я запустил этот файл, я получил вывод в виде:

 Content-type: text/html

<title>FastCGI Hello! (C, fcgi_stdio library)</title><h1>FastCGI Hello! (C, fcgi_stdio library)</h1>Request number 1 running on host <i>(null)</i>
  

Я хочу запустить этот файл из Firefox. Поскольку я новичок в этом, я не имею ни малейшего представления об этом. Может ли кто-нибудь предоставить мне подробную информацию о том, какие шаги мне нужно выполнить, чтобы запустить ее через веб-браузер.
Я попытался ввести URL как «http://localhost/fcgi-bin/hello1 «после копирования файла ‘hello1» в /etc/ apache / fcgi-bin/hello1.fcgi, но он выдал ошибку 404

Ответ №1:

Вам все равно нужно будет включить .fcgi расширение в URL:

 http://localhost/fcgi-bin/hello1.fcgi
  

Комментарии:

1. Я также пробовал этот вариант, но получил ‘Запрошенный URL /fcgi-bin/hello1.fcgi не был найден на этом сервере. Я думаю, нам нужно выполнить некоторую настройку, но dnt не знает, что

2. Проверьте журнал ошибок Apache, там будет точно указано, какой путь сервер проверял для вашего файла. Является ли /fcgi-bin реальным каталогом на вашем сервере или конструкцией типа ScriptAlias / Alias? Возможно, вам потребуется настроить это в Apache, чтобы он знал, где искать.

3. да, это сработало. Спасибо. Но теперь вместо запуска fcgi-файла он просит меня сохранить его, поскольку это двоичный файл.

4. Тогда, скорее всего, Apache не сказали, что файлы .fcgi должны обрабатываться как двоичные файлы fcgi. SetHandler fcgid-script должно быть где-то в вашем разделе httpd.conf для каталога fcgi.

5. Спасибо за помощь, проблема решена, я не производил ввод файлов fcgi в sites-enabled / 000-default. Нам нужно добавить следующие строки: <Каталог «/usr/lib/fcgi-bin»> Параметры AllowOverride None Нет порядка разрешить,запретить разрешить из всех </Directory>