lighttpd2는 개발 중이지만 사용을 시작하려는 곳에는 충분합니다. 나는 그것을 설치하고 가상 호스팅 등을 작동시키는 고비를 극복했습니다.
- PHP 5.6.6 (cgi-fcgi) (빌드: 2015년 2월 20일 17:27:21)
- lighttpd-angel/2.0.0 - 빠르고 가벼운 웹 서버 구축 날짜: 2015-03-17 13:42:32
- 아치 리눅스 | 리눅스 3.18.6-1
- VMWare 워크스테이션 11.1.0 빌드 2496824
그러나 PHP는 나에게 가장 큰 골칫거리를 안겨준다.
/etc/lighttpd2/php.conf
다음과 같습니다.
if phys.path =$ ".php" {
log.write "Accessing php file";
fastcgi "unix:/srv/http/php.sock";
}
Socks는 /var/run/lighttpd2/ 아래에 있었지만 액세스/디버깅 목적으로 전체 문서 루트가 있는 /srv/http로 옮겼습니다.
내 /etc/lighttpd2/lighttpd.conf
모습은 이렇습니다.
setup {
module_load [
"mod_accesslog",
"mod_dirlist",
"mod_vhost"
"mod_fastcgi"
];
listen "0.0.0.0:80";
listen "[::]:80";
log [
"info" => "/var/log/lighttpd2/info.log",
"error" => "/var/log/lighttpd2/error.log",
"abort" => "/var/log/lighttpd2/error.log",
"backend" => "/var/log/lighttpd2/backend.log",
"debug" => "/var/log/lighttpd2/debug.log",
default => "/var/log/lighttpd2/error.log"
];
accesslog "/var/log/lighttpd2/access.log";
accesslog.format "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"";
static.exclude_extensions [ ".php", ".pl", ".fcgi", "~", ".inc" ];
}
include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";
#docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];
dirlist;
static;
static
마지막에 댓글을 달아야 할지 모르겠습니다 .
마지막으로 내 PHP "시작 스크립트"는 다음과 같습니다.
#!/bin/sh
exec 2>&1
PHP_FCGI_CHILDREN=2 \
PHP_FCGI_MAX_REQUESTS=10000 \
LANG=C LC_ALL=C \
exec /usr/bin/spawn-fcgi -n -s /srv/http/php.sock -u www-data -U www-data -- /usr/bin/php-cgi
내 로그는 거의 비어 있지만 내용은 다음과 같습니다.
시스템 시작 로그
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:166): activate
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:177): done
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: suspended (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: stopping (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: stopping (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: down (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: down (dest: down)
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30956]: 17/Mar/2015 17:14:21 CET (info) lighttpd_worker.c:141: going down
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: debug (angel_server.c:367): instance released
Mar 17 17:14:21 ArchKB lighttpd2[30955]: 2015-03-17 17:14:21 CET: info (angel_main.c:94): going down
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:166): activate
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:171): activate: core
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_server.c:184): Instance (30976) spawned: /usr/lib/lighttpd-2.0.0/lighttpd2/lighttpd2-worker
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_plugin.c:177): done
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: info (angel_main.c:90): parsed config file
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) lighttpd_worker.c:105: config path: /etc/lighttpd2/lighttpd.conf
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_accesslog'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_dirlist'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_vhost'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) plugin_core.c:1254: loaded module 'mod_fastcgi'
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: loading (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: suspended (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: suspended (dest: suspended)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_plugin_core.c:638): listen to ipv4: '0.0.0.0:80' (port: 80)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: debug (angel_plugin_core.c:679): listen to ipv6: '::' (port: 80)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: warmup (dest: running)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:765: Reached state: warmup (dest: running)
Mar 17 17:14:21 ArchKB lighttpd2[30975]: 2015-03-17 17:14:21 CET: lighttpd2-worker[30976]: 17/Mar/2015 17:14:21 CET (debug) server.c:677: Try reaching state: running (dest: running)
오류 로그는 비어 있지만 다음이 info.log
표시됩니다.
17/Mar/2015 17:14:21 CET (info) server.c:58: Got signal, shutdown
debug.log
설명하다:
17/Mar/2015 17:12:29 CET (debug) server.c:677: Try reaching state: suspending (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:765: Reached state: suspending (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:677: Try reaching state: suspended (dest: down)
17/Mar/2015 17:12:29 CET (debug) server.c:765: Reached state: running (dest: running)
그리고 access.log
(index.php를 요청한 후) 다음과 같이 표시됩니다.
192.168.253.1 192.168.253.130 - [17/Mar/2015:17:12:36 +0100] "GET / HTTP/1.1" 403 3744 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36"
파일에 액세스
내가 모든 것을 주석 처리하면PHP, 다음 콘텐츠가 포함된 다운로드 개체로 파일을 가져옵니다.
<?php
header($_SERVER['SERVER_PROTOCOL'] . ' 302 Ok', true, 302);
print 'OK!';
?>
이 header()
모드는 CGI이기 때문에 lighttp가 헤더를 망치지 않도록 하기 위한 것입니다.~해야 한다최종 결과에 나쁜 영향을 미치지 않습니다).
권한은 다음과 같습니다:
-rwxrwxrwx 1 www-data www-data 84 Mar 17 16:40 index.php
srw-r----- 1 www-data www-data 0 Mar 17 16:47 php.sock
-rw-r--r-- 1 root root 5 Mar 17 17:06 wham.html
"흥미로운" 점은 wham.html
문제 없이 요청할 수 있고 루트가 소유하지만 문서에 따르면 작업은 루트가 아닌 사용자로 실행되어야 한다는 것입니다.
root 30975 0.0 0.6 5104 3140 ? Ss 17:14 0:00 /usr/sbin/lighttpd2 -c /etc/lighttpd2/angel.conf
www-data 30976 0.0 0.7 52048 3760 ? Ssl 17:14 0:00 /usr/lib/lighttpd-2.0.0/lighttpd2/lighttpd2-worker --angel -c /etc/lighttpd2/lighttpd.conf
내가 어디서 잘못됐나요?
내 결론은 이것이 실행되지 않거나 적어도 로그에 아무 것도 표시되지 않기 php.conf
때문에 관련이 있다는 것입니다 .log.write
그래서 정말 도움이 필요해요!
답변1
일반적으로 말하자면,"회의"한 번에 한 줄씩 순차적으로 실행하는 프로그래밍 언어에 가깝습니다. 일 /index.php
에 의존하지 않고 직접 전화를 하려고 노력하는 것을 잊어버렸습니다 index []
.
슬프네요. php.conf
확인해 보세요.요청된 경로함수가 에서 로의 요청을 다시 쓰기 .php
전에 종료됩니다 .index []
/
/index.php
이렇게 하려면 다음을 변경하세요.
include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";
#docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];
도착하다
docroot "/srv/http";
index [ "index.php", "index.html", "index.htm", "default.htm", "index.lighttpd.html" ];
include "/etc/lighttpd2/mimetypes.conf";
include "/etc/lighttpd2/vhost.conf";
include "/etc/lighttpd2/php.conf";
모든 차이를 만들었습니다.
구성/실행 순서가 중요합니다!
이것은 개발 포럼의 원본 메시지입니다.
안녕하세요!
lighttpd2 구성은 기본적으로 프로그래밍 언어로, 순차적으로 수행되는 작업 목록입니다. 이러한 작업 중 소수만이 실제로 요청 컨텍스트에 설정된 옵션입니다.
content 실행 시 물리적 경로가 ".php"로 끝나지 않으면
php.conf
php는 실행되지 않지만 기본 구성 끝에서만 index.php를 검색할 수 있습니다. (실제로 "/index.php"를 요청하는 것이 아니라 "/"에 대한 요청입니다.) 따라서:
- vhost.conf는 모든 경우에 문서 루트를 설정해야 하며 "기본" 문서 루트도 처리하도록 해야 합니다.
- 원하는 가상 호스트에서 index를 호출하거나 vhost.conf 다음에 호출하여 모든 가상 호스트에 대해 실행하되 "php.conf" 앞에 두십시오.
- log.write를 사용하여 php.conf의 if 이전에 phys.path의 내용을 디버깅할 수 있습니다. log.write "%{phys.path}";
그런데: 하우투는 올바른 순서를 보여줍니다 :)
나는 보통 (거의) 모든 것을 가상 호스트 구성에 넣습니다(참조: http://doc.lighttpd.net/lighttpd2/mod_vhost.html기본 가상 호스트 및 공통 개념을 처리하기 위해) 실제로 원하는 블록에서만 PHP를 활성화합니다. (php 하우투에서 설명한 것처럼) 일반적인 구성 작업에 대한 별칭을 정의할 수 있습니다.
——유출자