Настройка Lighttpd и FastCGI для моего собственного веб-приложения?
13294
Nick
Я использую Gentoo Linux и пытаюсь заставить работать Lighttpd + PHP + FastCGI. Я обнаружил, что Lighttpd не имеет диспетчера процессов FastCGI. Итак, вы должны использовать spawn-fcgi. У меня Lighttpd и PHP работают. Моя проблема в том, что я не знаю, как настроить spawn-fcgi и lighttpd для использования моего веб-приложения.
Вот что я установил:
Lighttpd
PHP (с CGIфлагом USE)
мицелий-FCGI
Приложение, с которым я пытаюсь установить связь, - это просто пример fcgi docs tiny.c:
#include <stdio.h> #include <stdlib.h> void main(void) { int count = 0; printf("Content-type: text/html\r\n" "\r\n" "<title>CGI Hello!</title>" "<h1>CGI Hello!</h1>" "Request number %d running on host <i>%s</i>\n", ++count, getenv("SERVER_NAME")); }
У меня это скомпилировано и работает из консоли:
nick@blozup ~/zwave $ ./tiny.fcgi Content-type: text/html <title>FastCGI Hello!</title> <h1>FastCGI Hello!</h1>Request number 1 running on host <i>(null)</i>
Терпите меня здесь, я понятия не имею, что я делаю ...
Сначала я попытался поместить скомпилированный файл tiny.fcgiв веб-каталог (в cgi-binчастности, который не работал, а затем просто в корневой веб-каталог). Самое близкое, что я получил, было 403 запрещенного сообщения об ошибке. Я убедился, что разрешения были либеральными, не повезло.
Прочитав еще немного, я понял, что мне нужно использовать spawn-fcgi. Поэтому я установил его и поставил ссылку на свое приложение, скопировал конфигурацию по умолчанию и отредактировал для моего приложения:
# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/www-servers/spawn-fcgi/files/spawn-fcgi.confd,v 1.6 2009/09/28 08:38:02 bangert Exp $ # DO NOT MODIFY THIS FILE DIRECTLY! CREATE A COPY AND MODIFY THAT INSTEAD! # The FCGI process can be made available through a filesystem socket or # through a inet socket. One and only one of the two types must be choosen. # Default is the inet socket. # The filename specified by # FCGI_SOCKET will be suffixed with a number for each child process, for # example, fcgi.socket-1. # Leave empty to use an IP socket (default). See below. Enabling this, # disables the IP socket. # FCGI_SOCKET=/var/run/fcgi.socket # When using FCGI_PORT, connections will only be accepted from the following # address. The default is 127.0.0.1. Use 0.0.0.0 to bind to all addresses. # FCGI_ADDRESS=127.0.0.1 # The port specified by FCGI_PORT is the port used # by the first child process. If this is set to 1234 then subsequent child # processes will use 1235, 1236, etc. # #FCGI_PORT=1234 # The path to your FastCGI application. These sometimes carry the .fcgi # extension but not always. For PHP, you should usually point this to # /usr/bin/php-cgi. # #FCGI_PROGRAM=/usr/bin/php-cgi FCGI_PROGRAM=/home/nick/zwave/tiny.fcgi # The number of child processes to spawn. The default is 1. # FCGI_CHILDREN=1 # If you want to run your application inside a chroot then specify the # directory here. Leave this blank otherwise. # FCGI_CHROOT= # If you want to run your application from a specific directiory specify # it here. Leave this blank otherwise. # FCGI_CHDIR= # The user and group to run your application as. If you do not specify these, # the application will be run as root:root. # FCGI_USER= FCGI_GROUP= # Additional options you might want to pass to spawn-fcgi # #FCGI_EXTRA_OPTIONS= # If your application requires additional environment variables, you may # specify them here. See PHP example below. # ALLOWED_ENV="PATH"
2012-06-13 18:50:18: (mod_fastcgi.c.1389) --- fastcgi spawning port: 0 socket /var/run/lighttpd/fcgi.socket-1 current: 0 / 1 2012-06-13 18:50:18: (mod_fastcgi.c.1103) the fastcgi-backend /usr/bin/cgi-fcgi failed to start: 2012-06-13 18:50:18: (mod_fastcgi.c.1107) child exited with status 1 /usr/bin/cgi-fcgi 2012-06-13 18:50:18: (mod_fastcgi.c.1110) If you're trying to run your app as a FastCGI backend, make sure you're using the FastCGI-enabled version. If this is PHP on Gentoo, add 'fastcgi' to the USE flags. 2012-06-13 18:50:18: (mod_fastcgi.c.1397) [ERROR]: spawning fcgi failed.
Я не знаю, куда идти отсюда. Я не мог найти много о том, как настроить веб-сервер lighttpd для запуска чего-либо, кроме PHP. Будет ли все это намного проще с Apache?
Вам нужно использовать протокол FCGI для lighttpd через сокет Unix. Я не вижу, где это происходит здесь.
Keith 12 лет назад
0
Ну, есть сокет в `/ var / run / lighttpd / tiny.socket-1`, мое приложение FCGI это создало. Я просто не знаю, как заставить Lighttpd «открыть» эту розетку. Я понял, что это было в конфигурационном файле и как-то связано с `cgi-fcgi`. В mod_fcgi.conf я указал тот же сокет: `" socket "=>" /var/run/lighttpd/fcgi.socket-1 "`, но либо cgi-fcgi является неправильной программой для вызова, либо я вызываю ее неправильно.
Nick 12 лет назад
0
Я удалил строку `bin-path` в` mod_fastcgi.conf`, сохранил сокет, и сервер запустился. Единственное подтверждение того, что он открыл этот сокет в журналах: «все обработчики для /tiny.fcgi? На tiny.fcgi отключены». Теперь я получаю 500/503 ошибки в Lighttpd.
Nick 12 лет назад
0
1 ответ на вопрос
1
Nick
Ну, это была bin-pathобстановка, от которой я зависал. Моя заявка находится сейчас по адресу:
/var/www/localhost/cgi-bin/tiny.fcgi
Сокет создается в:
/var/run/lighttpd/tiny.socket-1 ('-1' создается spawn-fcgi, и это chmod'd, так что lighttpd может вернуться к нему)