lighttpd2は開発中ですが、使い始めたい場所には十分です。私はそれをインストールし、バーチャルホスティングなどを操作するためのゴビを克服しました。
- PHP 5.6.6 (cgi-fcgi) (ビルド: 2015年2月20日 17:27:21)
- lighttpd-angel/2.0.0 - 高速で軽量なWebサーバー構築日:2015-03-17 13:42:32
- Arch Linux | Linux 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が所有していますが、ドキュメントによると、タスクはrootではなくユーザーとして実行する必要があるということです。
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
一般的に言えば、「会議」一度に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 Howtooで説明したように)一般的な設定タスクのエイリアスを定義できます。
——流出者