{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/cgi/feed/json/ -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/cgi/", "feed_url": "https://matoken.org/blog/tag/cgi/feed/json/", "language": "ja", "title": "cgi – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "http://matoken.org/blog/?p=3683", "url": "https://matoken.org/blog/2022/06/28/lighttpd-returns-all-pages-503/", "title": "Lighttpd\u3067\u5168\u30da\u30fc\u30b8503\u3092\u8fd4\u3059", "content_html": "
\u5148\u65e5\u81ea\u5b85\u30b5\u30fc\u30d0\u304c\u8d77\u52d5\u3057\u306a\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e10\u5e74\u4ee5\u4e0a\u307b\u307c\u8d77\u52d5\u3057\u3063\u3071\u306a\u3057\u3067\u3057\u305f\u3057\u3057\u3087\u3046\u304c\u306a\u3044\u304b\u306a\u3068\u3044\u3046\u611f\u3058\u3082\uff0e\u3053\u306e\u7aef\u672b\u306fNAS\u3084Unbound\uff0capt-cacher-ng\u306a\u3069\u81ea\u5b85\u5411\u3051\u306e\u30b5\u30fc\u30d3\u30b9\u306e\u4ed6\u306b\u3082\u5916\u90e8\u5411\u3051\u306eWebServer\u3068\u3057\u3066\u3082\u52d5\u4f5c\u3055\u305b\u3066\u3044\u307e\u3057\u305f\uff0e
\n\u3059\u3050\u306b\u5fa9\u65e7\u3059\u308b\u306e\u306f\u96e3\u3057\u305d\u3046\u306a\u306e\u3067\u3068\u308a\u3042\u3048\u305a\u30b7\u30f3\u30b0\u30eb\u30dc\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u3067WebServer\u3092\u8d77\u52d5\u3057\u3066HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u306e503\u3092\u8fd4\u3059\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n
\u3059\u3067\u306b micro-httpd \u304c\u52d5\u4f5c\u3057\u3066\u3044\u307e\u3059\uff0e\u3053\u306e\u30a2\u30d7\u30ea\u3067\u3084\u308a\u305f\u3044\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u304b\u3088\u304f\u308f\u304b\u3089\u306a\u3044\u306e\u3067\u3053\u308c\u306f\u505c\u6b62\u3057\u3066Lighttpd\u306b\u5909\u66f4\u3057\u307e\u3059\uff0e
\n$ sudo systemctl stop micro-httpd\n$ sudo systemctl disable micro-httpd\n
| \n Note \n | \n\n\u3082\u3046\u4f7f\u308f\u306a\u3044\u306e\u3067\u3042\u308c\u3070 apt purge micro-httpd \u3067\u3044\u3044\u3068\u601d\u3044\u307e\u3059\uff0e | \n
Raspberry Pi OS\u30d1\u30c3\u30b1\u30fc\u30b8\u306eLighttpd\u3092\u5c0e\u5165\u3057\u307e\u3059\uff0e
\n$ sudo apt install lighttpd\n
\u8a8d\u8a3c\u5c40\u306b\u306f\u4ee5\u524d\u3082\u5229\u7528\u3057\u3066\u3044\u305fLet\u2019s Encrypt\u3092\u5229\u7528\u3057\u307e\u3059\uff0e
\n\u5c02\u7528\u306e\u8a3c\u660e\u66f8\u7ba1\u7406\u30c4\u30fc\u30eb\u306ecertbot\u3092\u5c0e\u5165\u3057\u307e\u3059\uff0e\u3053\u308c\u3082\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u30d1\u30c3\u30b1\u30fc\u30b8\u304b\u3089\u5c0e\u5165\u3057\u307e\u3059\uff0e
\n$ sudo apt install certbot\n
\u65e9\u901f\u8a3c\u660e\u66f8\u3092\u53d6\u5f97\u3057\u307e\u3059\uff0e
\n$ sudo certbot certonly -d sub1.example.org (1)\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\nHow would you like to authenticate with the ACME CA?\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n1: Spin up a temporary webserver (standalone)\n2: Place files in webroot directory (webroot)\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 (2)\nPlugins selected: Authenticator webroot, Installer None\nRequesting a certificate for sub1.example.com\nPerforming the following challenges:\nhttp-01 challenge for sub1.example.org\nInput the webroot for sub1.example.org: (Enter 'c' to cancel): /var/www/html (3)\n :\n
sub1.example.org \u3068\u3044\u3046\u30c9\u30e1\u30a4\u30f3\u306e\u8a3c\u660e\u66f8\u3092\u53d6\u5f97\u540c\u69d8\u306b\u3082\u3046\u4e00\u3064\u306e\u30c9\u30e1\u30a4\u30f3\u3082\u8a2d\u5b9a\u3057\u307e\u3059\uff0e
\nlighttpd-enable-mod \u30b3\u30de\u30f3\u30c9\u3067Lighttpd\u306essl\u30e2\u30b8\u30e5\u30fc\u30eb\u3068rewrite\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\uff0e
$ sudo lighttpd-enable-mod rewrite ssl\n
| \n Note \n | \n\nlighttpd-enable-mod \u306f\u5f15\u6570\u7121\u3057\u3067\u5b9f\u884c\u3059\u308b\u3068\u5bfe\u8a71\u5f62\u5f0f\u306b\u306a\u308a\u307e\u3059\uff0e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u306b\u3059\u308b\u5834\u5408\u306f lighttpd-disable-mod \u30b3\u30de\u30f3\u30c9\u304c\u5229\u7528\u3067\u304d\u307e\u3059\uff0e | \n
Lighttpd\u3067https\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\uff0e
\nlighttpd/conf-enabled/10-ssl.conf \u3092\u7de8\u96c6\u3057\u307e\u3059\uff0e
ssl.pemfile \u306e\u884c\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u66f8\u304d\u63db\u3048\u3066Let\u2019s Encrypt\u306e\u8a3c\u660e\u66f8\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u307e\u3059\uff0e
ssl.pemfile = \"/etc/letsencrypt/live/sub1.example.org/fullchain.pem\"\nssl.privkey = \"/etc/letsencrypt/live/sub1.example.org/privkey.pem\"\n
\u305d\u306e\u4e0b\u306b2\u3064\u76ee\u306e\u306e\u30c9\u30e1\u30a4\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e
\n$HTTP[\"host\"] =~ \"sub2.example.org\"{\n ssl.pemfile = \"/etc/letsencrypt/live/sub2.example.org/fullchain.pem\"\n ssl.privkey = \"/etc/letsencrypt/live/sub2.example.org/privkey.pem\"\n}\nLighttpd\u3092\u518d\u8aad\u8fbc\u3057\u3066\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e
\n$ sudo systemctl lighttpd restart\n$ w3m https://sub1.example.org/\n$ w3m https://sub2.example.org/\n
HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9503\u3092\u8fd4\u3059\u3060\u3051\u306ecgi script\u3092\u4f5c\u6210\u3057\u3066\u3044\u3064\u3082\u305d\u308c\u3092\u8fd4\u3059\u3088\u3046\u306b\u3057\u307e\u3059\uff0e
\nlighttpd-enable-mod \u30b3\u30de\u30f3\u30c9\u3067Lighttpd\u306ecgi\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\uff0e
$ sudo lighttpd-enable-mod cgi\n
/etc/lighttpd/conf-enabled/10-cgi.conf \u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4fee\u6b63\u3057\u307e\u3059\uff0e
$ grep -v ^# lighttpd/conf-enabled/10-cgi.conf | uniq\n\nserver.modules += ( \"mod_cgi\" )\n\ncgi.assign = (\n \".cgi\" => \"/usr/bin/perl\",\n)\n
Lighttpd\u3092\u518d\u8aad\u8fbc\u3057\u3066\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e
\n$ sudo systemctl lighttpd restart\n$ echo \"#!/usr/bin/perl\nprint 'Content-Type: text/plain\\n\\nhello world.'\" > /var/www/html/hello.cgi\n$ sudo chown www-data.www-data /var/www/html/hello.cgi\n$ sudo chmod 700 /var/www/html/hello.cgi\n$ w3m https://sub1.example.org/hello.cgi\n$ sudo rm /var/www/html/hello.cgi\n
HTTP\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9503\u3092\u8fd4\u3059 /var/www/html/503.cgi \u3092\u7528\u610f\u3057\u307e\u3059\uff0e
#!/usr/bin/perl\n\nuse strict;\nuse warnings;\n\nprint \"Status: 503 Service Unavailable\\n\";\nprint \"Content-Type: text/html\\n\\n\";\nprint <<END_OF_HTML;\n<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"\" xml:lang=\"\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"generator\" content=\"pandoc\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\" />\n <title>home.matoken.org</title>\n <style>\n code{white-space: pre-wrap;}\n span.smallcaps{font-variant: small-caps;}\n span.underline{text-decoration: underline;}\n div.column{display: inline-block; vertical-align: top; width: 50%;}\n div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}\n ul.task-list{list-style: none;}\n </style>\n</head>\n<body>\n<p>Server is down.</p>\n</body>\n</html>\nEND_OF_HTML\n\u6a29\u9650\u3092\u8a2d\u5b9a\u3057\u3066\u52d5\u4f5c\u78ba\u8a8d\u3057\u307e\u3059\uff0e
\n$ sudo chown www-data.www-data /var/www/html/503.cgi\n$ sudo chmod 700 /var/www/html/503.cgi\n$ w3m -dump_head https://sub1.example.org/503.cgi | grep ^HTTP\nHTTP/1.0 503 Service Unavailable\n$ w3m https://sub1.example.org/503.cgi\n
/etc/lighttpd/lighttpd.conf \u30d5\u30a1\u30a4\u30eb\u306b\u4ee5\u4e0b\u3092\u8ffd\u8a18\u3057\u307e\u3059\uff0e\u3053\u308c\u3067\u3059\u3079\u3066\u306eURL\u304c503.cgi\u306b\u306a\u308b\u306f\u305a\u3067\u3059\uff0e
$HTTP[\"url\"] != \"/503.cgi$\" {\n url.rewrite = ( \"\" => \"/503.cgi\" )\n}\nLighttpd\u3092\u518d\u8aad\u8fbc\u3057\u3066\u52d5\u4f5c\u3092\u78ba\u8a8d\u3057\u307e\u3059\uff0e
\n$ sudo systemctl lighttpd restart\n$ w3m https://sub1.example.org/hoge\n$ w3m https://sub2.example.org/fuga\n$ w3m http://sub1.example.org/hoge\n$ w3m http://sub2.example.org/fuga\n
$ dpkg-query -W lighttpd certbot w3m perl\ncertbot 1.12.0-2\nlighttpd 1.4.59-1+deb11u1\nperl 5.32.1-4+deb11u2\nw3m 0.5.3+git20210102-6\n$ lsb_release -dr\nDescription: Raspbian GNU/Linux 11 (bullseye)\nRelease: 11\n$ cat /proc/device-tree/model && echo\nRaspberry Pi 3 Model B Rev 1.2\n
\n\n\n\n\n\u8a72\u5f53\u3057\u305d\u3046\u306aBug
\n
\u30aa\u30f3\u30e9\u30a4\u30f3\u3067\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u3059\u308b\u3068\u304d\u4e00\u822c\u7684\u306b\u306f\u753b\u9762\u5171\u6709\u3059\u308b\u3068\u601d\u3044\u307e\u3059\u304c\uff0c\u30b9\u30e9\u30a4\u30c9\u30d5\u30a1\u30a4\u30eb\u3092\u524d\u3082\u3063\u3066\u914d\u5e03\u3057\u3066\u304a\u3044\u3066\u304a\u4e92\u3044\u305d\u308c\u3092\u898b\u306a\u304c\u3089\u30d7\u30ec\u30bc\u30f3\u3082\u51fa\u6765\u307e\u3059\uff0e
\n\u305d\u306e\u9593\u304f\u3089\u3044\u306e\u6a5f\u80fd\u3067\u30b9\u30e9\u30a4\u30c9\u306e\u30da\u30fc\u30b8\u3081\u304f\u308a\u3092\u30d7\u30ec\u30bc\u30f3\u30bf\u30fc\u3068\u8996\u8074\u8005\u3067\u540c\u671f\u3059\u308b\u30b5\u30fc\u30d3\u30b9\u304c\u6b32\u3057\u3044\u306a\u3068\u601d\u3063\u3066\u3044\u307e\u3059\uff0e
\n\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30b5\u30fc\u30d3\u30b9\u304c\u3042\u308b\u3088\u3046\u3067\u3059\u304c\u81ea\u5206\u304c\u4f55\u5ea6\u304b\u8a66\u3057\u305f\u9650\u308a\u3067\u306f\u300c\u30ed\u30b0\u30a4\u30f3\uff0f\u65b0\u898f\u767b\u9332\u300d\u304c\u51fa\u6765\u305a\u4f7f\u3048\u3066\u3044\u307e\u305b\u3093\uff0e
LibreOffice Impress \u306eHTML \u66f8\u304d\u51fa\u3057\u6a5f\u80fd\u306bWebCast \u6a5f\u80fd\u3092\u898b\u3064\u3051\u305f\u306e\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n\u3057\u304b\u3057\u7d39\u4ecb\u3057\u3066\u304a\u3044\u3066\u306a\u3093\u3067\u3059\u304c\u3053\u306e\u6a5f\u80fd\u306f\u9577\u3089\u304f\u30e1\u30f3\u30c6\u3055\u308c\u3066\u3044\u306a\u3044\u3088\u3046\u306a\u306e\u3067\u3042\u307e\u308a\u4f7f\u308f\u306a\u3044\u307b\u3046\u304c\u3044\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e(Perl cgi\u74b0\u5883\u3082\u7528\u610f\u3057\u306b\u304f\u3044\u3060\u308d\u3046\u3057)
\u30d8\u30eb\u30d7\u3082\u3056\u3063\u304f\u308a\u3068\u3057\u305f\u8aac\u660e\u3057\u304b\u3042\u308a\u307e\u305b\u3093\uff0e
\nHTML \u5f62\u5f0f\u3067\u4fdd\u5b58\u3059\u308b\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u958b\u304d\u307e\u3059\u3002
\n\u30d5\u30a1\u30a4\u30eb \u2192 \u30a8\u30af\u30b9\u30dd\u30fc\u30c8 \u3092\u884c\u306a\u3044\u307e\u3059\u3002
\n\u30d5\u30a1\u30a4\u30eb\u66f8\u5f0f \u3092 HTML \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 (LibreOffice Impress) (.html;.htm) \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002
\n\u30d5\u30a1\u30a4\u30eb\u540d \u3092\u5165\u529b\u3057\u3066\u3001\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 \u3092\u30af\u30ea\u30c3\u30af\u3057\u307e\u3059\u3002
\nHTML \u30a8\u30af\u30b9\u30dd\u30fc\u30c8 \u30a6\u30a3\u30b6\u30fc\u30c9\u306e\u6307\u793a\u306b\u5f93\u3044\u307e\u3059\u3002
\n\u3066\u3053\u3068\u3067\u30e1\u30e2\u304c\u3066\u3089\uff0e
\nLibreOffice Impress \u3067\u66f8\u304d\u51fa\u3057\u305f\u3044\u30b9\u30e9\u30a4\u30c9\u3092\u958b\u304d\u307e\u3059\uff0e
\n\u300c\u30d5\u30a1\u30a4\u30eb\u300d\u2192\u300c\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u300d\u3067\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u30a6\u30a3\u30c9\u30a6\u304c\u958b\u304d\u307e\u3059\uff0e
\n\u66f8\u304d\u51fa\u3057\u5148\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea(\u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u66f8\u304d\u51fa\u3055\u308c\u308b\u306e\u3067\u65b0\u3057\u3044\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u7528\u610f\u3057\u305f\u307b\u3046\u304c\u826f\u3044)\u3092\u6307\u5b9a\u3057\uff0c\u4efb\u610f\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e
\n\u300c\u30d5\u30a1\u30a4\u30eb\u5f62\u5f0f\u300d\u306b\u300cHTML \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 (Impress) (.html;.htm)\u300d\u3092\u9078\u629e\u3057\u3066\u300c\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u307e\u3059\uff0e
\u300c\u30c7\u30b6\u30a4\u30f3\u306e\u5272\u308a\u5f53\u3066\u300d\u306f\u521d\u56de\u306f\u300c\u65b0\u898f\u30c7\u30b6\u30a4\u30f3\u300d\u3057\u304b\u9078\u3079\u307e\u305b\u3093\uff0e\u300c\u6b21\u3078\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u307e\u3059\uff0e
\n\u300c\u767a\u8868\u65b9\u6cd5\u300d\u306b\u300cWebCast\u300d\u3092\u9078\u629e\u3057\uff0c\u53f3\u5074\u306e\u300cWebCast\u300d\u3067\u306f\u300cPerl\u300d\u3092\u9078\u629e\u3057\u307e\u3059(ASP\u306f\u672a\u691c\u8a3c)\uff0e\u30c6\u30ad\u30b9\u30c8\u30dc\u30c3\u30af\u30b9\u306f\u898f\u5b9a\u5024\u306e\u307e\u307e\u3067\u69cb\u3044\u307e\u305b\u3093\uff0e\u300c\u6b21\u3078\u300d\u30dc\u30bf\u30f3\u3092\u62bc\u3057\u307e\u3059\uff0e
\n\u300c\u540d\u524d\u3092\u4ed8\u3051\u3066\u753b\u50cf\u3092\u4fdd\u5b58\u300d(\u539f\u6587\u306f Save Image As \u306a\u306e\u3067\u8a33\u304c\u9593\u9055\u3063\u3066\u3044\u305d\u3046)\u3067\u753b\u50cf\u5f62\u5f0f\u3092\uff0c\u300c\u30e2\u30cb\u30bf\u30fc\u306e\u89e3\u50cf\u5ea6\u300d\u3067\u30b9\u30e9\u30a4\u30c9\u306e\u89e3\u50cf\u5ea6\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e\u300c\u4f5c\u6210\u300d\u30dc\u30bf\u30f3\u3067\u66f8\u304d\u51fa\u3055\u308c\u307e\u3059\uff0e
\n\u66f8\u304d\u51fa\u3057\u6642\u306bHTML\u30c7\u30b6\u30a4\u30f3\u306e\u4fdd\u5b58\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3082\u51fa\u6765\u307e\u3059\uff0e
\u66f8\u304d\u51fa\u3057\u305f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u898b\u308b\u3068\uff0c\u30b9\u30e9\u30a4\u30c9\u306e\u753b\u50cf\u3068\u3044\u304f\u3064\u304b\u306e.html\u30d5\u30a1\u30a4\u30eb\u3084.pl\u306a\u3069\u3082\u51fa\u529b\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\u3053\u308c\u3089\u306e\u30d5\u30a1\u30a4\u30eb\u3092cgi\u306e\u52d5\u304fsite\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\uff0e
\n\u4eca\u306fcgi\u306e\u52d5\u304f\u5834\u6240\u304c\u3068\u3066\u3082\u9650\u3089\u308c\u3066\u3044\u308b\u306e\u3067\u3053\u308c\u304c\u4e00\u756a\u96e3\u3057\u3044\u304b\u3082\u3057\u308c\u306a\u3044\u3067\u3059\u306d\uff0e
$ ls -w 80 ./slide_dir\ncommon.pl img15.png img24.png img33.png img42.png img51.png img7.png\ncurrpic.txt img16.png img25.png img34.png img43.png img52.png img8.png\neditpic.pl img17.png img26.png img35.png img44.png img53.png img9.png\nimg0.png img18.png img27.png img36.png img45.png img54.png index.html\nimg1.png img19.png img28.png img37.png img46.png img55.png picture.txt\nimg10.png img2.png img29.png img38.png img47.png img56.png poll.pl\nimg11.png img20.png img3.png img39.png img48.png img57.png savepic.pl\nimg12.png img21.png img30.png img4.png img49.png img58.png show.pl\nimg13.png img22.png img31.png img40.png img5.png img59.png slide.html\nimg14.png img23.png img32.png img41.png img50.png img6.png webcast.pl\n\u4eca\u56de\u306f\u81ea\u5b85\u306e\u9069\u5f53\u306aApache httpd\u306e\u52d5\u3044\u3066\u3044\u308b\u74b0\u5883\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\uff0e
\n$ scp -r ./slide_dir user@host:~/public_html/cgi-bin/\n\u3053\u306e\u74b0\u5883\u306f .cgi \u3057\u304bcgi\u3068\u3057\u3066\u52d5\u304b\u306a\u3044\u306e\u3067\uff0c.htaccess \u3092\u4f5c\u6210\u3057\u3066 .pl \u3082cgi\u3068\u3057\u3066\u52d5\u304f\u3088\u3046\u306b\u3057\u307e\u3057\u305f\uff0e
$ echo 'AddHandler cgi-script .pl' > ./.htaccess\n$ cat ./.htaccess\nAddHandler cgi-script .pl\n\u6b21\u306b *.pl \u30d5\u30a1\u30a4\u30eb\u306b\u5b9f\u884c\u6a29\u3092\u4ed8\u4e0e\u3057\u307e\u3059\uff0ehttpd\u306e\u30e6\u30fc\u30b6\u304c\u5b9f\u884c\u3067\u304d\u308b\u6a29\u9650\u306b\u3057\u307e\u3059\uff0e
$ chmod o+x ./*.pl\n\u6b21\u306b\u30da\u30fc\u30b8\u7ba1\u7406\u30d5\u30a1\u30a4\u30eb\u306e currpic.txt \u306b\u8aad\u307f\u66f8\u304d\u6a29\u3092\u4ed8\u4e0e\u3057\u307e\u3059\uff0ehttpd\u306e\u30e6\u30fc\u30b6\u304c\u8aad\u307f\u66f8\u304d\u3067\u304d\u308b\u6a29\u9650\u306b\u3057\u307e\u3059\uff0e
$ chmod o+rw ./currpic.txt\n\u3053\u308c\u306f\u6050\u3089\u304f\u30b5\u30fc\u30d0\u306e\u74b0\u5883\u4f9d\u5b58\u3067\u3084\u3089\u306a\u304f\u3066\u3082\u52d5\u304f\u74b0\u5883\u306e\u307b\u3046\u304c\u591a\u3044\u3068\u601d\u3046\u306e\u3067\u4e00\u65e6\u30b9\u30ad\u30c3\u30d7\u3057\u3066\u52d5\u304b\u306a\u304b\u3063\u305f\u3089\u8a2d\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\uff0eeditpic.pl, editpic.pl, savepic.pl, show.pl \u30d5\u30a1\u30a4\u30eb\u306e require \"common.pl\"; \u884c\u3092 require \"./common.pl\"; \u306b\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e
- require \"common.pl\";\n+ require \"./common.pl\";\n\u3053\u306e\u72b6\u614b\u3067\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u8996\u8074\u8005\u306f index.html \u3092\uff0c\u30d7\u30ec\u30bc\u30f3\u30bf\u30fc\u306f slide.html (html\u66f8\u304d\u51fa\u3057\u6642\u306e\u30d5\u30a1\u30a4\u30eb\u540d)\u3092\u958b\u3051\u3070OK\u306a\u306f\u305a\u3067\u3059\uff0e
\u4ee5\u4e0b\u4eca\u56de\u8a66\u3057\u305f\u30b5\u30f3\u30d7\u30eb\u3067\u3059\uff0e\u591a\u5206\u3059\u3050\u306b\u6d88\u3057\u307e\u3059\uff0e
\n\u4ed5\u7d44\u307f\u3068\u3057\u3066\u306f\u30d7\u30ec\u30bc\u30f3\u30bf\u30fc\u304c\u30da\u30fc\u30b8\u3081\u304f\u308a\u64cd\u4f5c\u3092\u3059\u308b\u3068\uff0c\u30da\u30fc\u30b8\u756a\u53f7\u306e\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b currpic.txt \u30d5\u30a1\u30a4\u30eb\u306b\u30da\u30fc\u30b8\u756a\u53f7\u3092\u683c\u7d0d\uff0e
\n\u8996\u8074\u8005\u5074\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f1\u79d2\u6bce\u306b cgi \u3092\u547c\u3073\u51fa\u3057\u3066\u3044\u3066\uff0c\u547c\u3073\u51fa\u3055\u308c\u305f cgi \u5074\u3067\u306f\u73fe\u5728\u306e\u30da\u30fc\u30b8\u756a\u53f7\u304c\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b currpic.txt \u306e\u5185\u5bb9\u304b\u3089\u8a72\u5f53\u306e\u30da\u30fc\u30b8\u3092\u8868\u793a\u3059\u308b\uff0e\u3068\u3044\u3063\u305f\u3053\u3068\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u305d\u306e\u305f\u3081\u30d7\u30ec\u30bc\u30f3\u30bf\u30fc\u304c\u64cd\u4f5c\u3057\u3066\u304b\u3089\u5b9f\u969b\u306b\u8996\u8074\u8005\u306e\u30da\u30fc\u30b8\u304c\u66f4\u65b0\u3055\u308c\u308b\u307e\u3067\u6570\u79d2\u639b\u304b\u308b\u611f\u3058\u3067\u3059\uff0e
\u4e2d\u3092\u898b\u308b\u3068\u89e3\u308a\u307e\u3059\u304c\u30e9\u30a4\u30d6\u30e9\u30ea\u3082\u540c\u68b1\u306e\u5c0f\u3055\u306a\u72ec\u81ea\u30e9\u30a4\u30d6\u30e9\u30ea1\u3064\u3060\u3051\u3067\u884c\u6570\u3082\u5c11\u306a\u304f\u3068\u3066\u3082\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u3067\u3059\uff0e\u3053\u308c\u306f\u8ab0\u3082\u4f7f\u308f\u305a\u57cb\u3082\u308c\u3066\u4f55\u5e74\u3082\u653e\u7f6e\u3055\u308c\u3066\u3044\u305d\u3046\u3067\u3059\uff0e
\n\u51fa\u6765\u308b\u3053\u3068\u306a\u3089\u6700\u8fd1\u306e\u30ae\u30b8\u30e5\u3068\u3067\u66f8\u304d\u76f4\u3055\u308c\u3066\u307b\u3057\u3044\u3051\u3069\u3053\u308c\u307e\u3067\u306e\u653e\u7f6e\u3063\u3077\u308a\u304b\u3089\u96e3\u3057\u305d\u3046\u3067\u3059\u306d\uff0e
\u3068\u308a\u3042\u3048\u305a\u306fWeb\u306b\u516c\u958b\u3057\u3066\u53e3\u982d\u3067\u30da\u30fc\u30b8\u3081\u304f\u308a\u3092\u6307\u793a\u3059\u308b\u306e\u304c\u73fe\u5b9f\u7684\u305d\u3046\u3067\u3059\uff0e
\n(\u305d\u308c\u304b\u666e\u901a\u306b\u753b\u9762\u5171\u6709)
$ dpkg-query -W libreoffice\nlibreoffice 1:6.4.4-1\n$ lsb_release -dr\nDescription: Debian GNU/Linux bullseye/sid\nRelease: unstable\n$ uname -m\nx86_64\n
$ dpkg-query -W apache2 perl\napache2 2.4.41-4ubuntu3\nperl 5.30.0-9build1\n$ lsb_release -dr\nDescription: Ubuntu 20.04 LTS\nRelease: 20.04\n$ uname -m\nx86_64\n