かれは回顧録 - Memoirs of Kareha

[src]

近頃のプログラミングは、難しい。 難しいというか、面倒である。 昔はもっと単純だった。

ここでは、昔の古風なスタイルのプログラミングを思い出してみる。

CGI集

シェルスクリプトで書いた、シンプルなCGIたち。

同じ内容で、Perlで書いたものたち。

同じ内容で、Cで書いたものたち。

CGIの定番、カウンタ。 シェルスクリプトで書いた方は、たまに壊れる簡易版。 Perlで書いた方は、ちゃんとファイルロックする安全版。 Cで書いたものも安全。

NginxでCGI

Nginxは、FastCGIはサポートしてるが、CGIは直接はサポートしてない。 fcgiwrapというツールを使うことで、FastCGI経由で間接的に、NginxでCGIを使うことができる。 fcgiwrapはDebianパッケージにあるので、Debian系OSなら apt-get install fcgiwrap でインストールできる。

Nginxの設定は、こんな感じ。

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name kaiko.kareha.org;
  ssl_certificate /etc/letsencrypt/live/kaiko.kareha.org/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/kaiko.kareha.org/privkey.pem;
  root /home/kaiko/public_html;

  location /cgi-bin/ {
    root /home/kaiko;
    fastcgi_pass unix:/run/fcgiwrap.socket;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param QUERY_STRING $query_string;
    fastcgi_param REQUEST_METHOD $request_method;
    fastcgi_param CONTENT_TYPE $content_type;
    fastcgi_param CONTENT_LENGTH $content_length;
  }

  location /cgi-txt/ {
    root /home/kaiko;
    autoindex on;
    charset utf-8;
    try_files $uri $uri/ =404;
  }

  location / {
    autoindex on;
    charset utf-8;
    try_files $uri $uri/ =404;
  }
}