サーバー構築完了っ! | わたくしが あらゆるネタを書き綴るっ

わたくしが あらゆるネタを書き綴るっ

日頃のつぶやきや                                                              時には役立つ情報を書くかも?

いやぁ。。。やっと動くようになりました!

/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
#!/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をつけるとアップロード時に改行を正しく認識するだとか
アスキーモードになるだとか。。。

ふむ、やはりアスキーモードは重要だったわけだな!

というわけでもう少し調べると
vim /etc/vsftpd.conf
ascii_upload_enable=YES
ascii_download_enable=YES
この二行でいけるらしい!

そこでこの二行を追加すると。。。
-w無しでも動きました!
いやぁ。。。これでなんとかサーバー構築完了しましたっ