/etc/nginx/sites-available/default
# fcgiwrap
# CGI 追記↓
location ~ \.cgi$ {
#fastcgi_pass 127.0.0.1:8999;
# Fastcgi socket
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.cgi;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
# ここまで
location ~ \.pl$ {
gzip off;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:8999;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
}
/etc/nginx/fcgi.pl
/etc/nginx/fcgi.pl
#!/usr/bin/perl
use strict;
use warnings FATAL => qw( all );
use IO::Socket::UNIX;
my $bin_path = '/usr/local/bin/fcgiwrap';
my $socket_path = $ARGV[0] || '/var/run/fcgiwrap.socket';
my $num_children = $ARGV[1] || 1;
close STDIN;
unlink $socket_path;
my $socket = IO::Socket::UNIX->new(
Local => $socket_path,
Listen => 100,
);
die "Cannot create socket at $socket_path: $!\n" unless $socket;
for (1 .. $num_children) {
my $pid = fork;
die "Cannot fork: $!" unless defined $pid;
next if $pid;
exec $bin_path;
die "Failed to exec $bin_path: $!\n";
}
chmod 777 /var/run/fcgiwrap.socket
これでローカルから作成したcgiは動くようになったのですが
FTPからアップロードしたのは無理でした。
権限の問題かと思ったのですが
FTPでアップロードしたファイルを
所有者rootにしてもなぜか動かない。。。
しかし所有者関係なしに
アスキーモードでアップロードしたら
なぜか動いた!
これはきたのか・・・?とおもい
実際使うファイルで試すと。。。
動かない。
なぜ?
仕方ないので文法チェッカーのスクリプトをアップロードして
チェックすると。。。
「文法エラーはありません。」
エラーないなら何で動かないんだよ!
。。。
。。。
。。。
え?
文法チェッカー動いてるじゃんw
所有者も変更していないし
モードも自動であげたのに
何で動いてるの?
そこが大きなヒントになりました。
文法チェッカーのソースを読んでいると
!#/usr/bin/perl -w
ん?このwってなんだ?
試しにテスト用のファイルに -wを追加してアップロード
う。。。うごいたっ!
もう、半端じゃなく感動しましたw
だってサーバー構築し始めて数日間
ずっとこれに悩まされていたから。。。
しかしこれじゃこまる。
今までは-wなんてつけていなかった。
このままでは色々面倒だ。。。
そこで調べてみると
-wをつけるとアップロード時に改行を正しく認識するだとか
アスキーモードになるだとか。。。
ふむ、やはりアスキーモードは重要だったわけだな!
というわけでもう少し調べると
chmod 777 /var/run/fcgiwrap.socket
これでローカルから作成したcgiは動くようになったのですが
FTPからアップロードしたのは無理でした。
権限の問題かと思ったのですが
FTPでアップロードしたファイルを
所有者rootにしてもなぜか動かない。。。
しかし所有者関係なしに
アスキーモードでアップロードしたら
なぜか動いた!
これはきたのか・・・?とおもい
実際使うファイルで試すと。。。
動かない。
なぜ?
仕方ないので文法チェッカーのスクリプトをアップロードして
チェックすると。。。
「文法エラーはありません。」
エラーないなら何で動かないんだよ!
。。。
。。。
。。。
え?
文法チェッカー動いてるじゃんw
所有者も変更していないし
モードも自動であげたのに
何で動いてるの?
そこが大きなヒントになりました。
文法チェッカーのソースを読んでいると
!#/usr/bin/perl -w
ん?このwってなんだ?
試しにテスト用のファイルに -wを追加してアップロード
う。。。うごいたっ!
もう、半端じゃなく感動しましたw
だってサーバー構築し始めて数日間
ずっとこれに悩まされていたから。。。
しかしこれじゃこまる。
今までは-wなんてつけていなかった。
このままでは色々面倒だ。。。
そこで調べてみると
-wをつけるとアップロード時に改行を正しく認識するだとか
アスキーモードになるだとか。。。
ふむ、やはりアスキーモードは重要だったわけだな!
というわけでもう少し調べると
vim /etc/vsftpd.conf
ascii_upload_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
この二行でいけるらしい!
そこでこの二行を追加すると。。。
-w無しでも動きました!
いやぁ。。。これでなんとかサーバー構築完了しましたっ
この二行でいけるらしい!
そこでこの二行を追加すると。。。
-w無しでも動きました!
いやぁ。。。これでなんとかサーバー構築完了しましたっ