blog/content/post/2009/05/24/2009-05-24-00001160.md

219 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: apache2でcgiの作成まずはhello world
author: kazu634
date: 2009-05-24
wordtwit_post_info:
- 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4615;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}'
categories:
- cgi
- Perl
---
<div class="section">
<p>
Webアプリの勉強用にcgiを作成してみました。
</p>
<h4>
apache2の設定を見てみる
</h4>
<p>
Ubuntuでapache2をインストールすると「/etc/apache2/sites-available/default」に設定が書いてあります。
</p>
<blockquote>
<p>
<VirtualHost *:80>
</p>
<p>
ServerAdmin webmaster@localhost
</p>
<p>
DocumentRoot /var/www
</p>
<p>
<Directory />
</p>
<p>
Options FollowSymLinks
</p>
<p>
AllowOverride None
</p>
<p>
</Directory>
</p>
<p>
<Directory /var/www/>
</p>
<p>
Options Indexes FollowSymLinks MultiViews
</p>
<p>
AllowOverride None
</p>
<p>
Order allow,deny
</p>
<p>
allow from all
</p>
<p>
</Directory>
</p>
<p>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
</p>
<p>
<Directory &#8220;/usr/lib/cgi-bin&#8221;>
</p>
<p>
AllowOverride None
</p>
<p>
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
</p>
<p>
Order allow,deny
</p>
<p>
Allow from all
</p>
<p>
</Directory>
</p>
<p>
ErrorLog /var/log/apache2/error.log
</p>
<p>
# Possible values include: debug, info, notice, warn, error, crit,
</p>
<p>
# alert, emerg.
</p>
<p>
LogLevel warn
</p>
<p>
CustomLog /var/log/apache2/access.log combined
</p>
<p>
Alias /doc/ &#8220;/usr/share/doc/&#8221;
</p>
<p>
<Directory &#8220;/usr/share/doc/&#8221;>
</p>
<p>
Options Indexes MultiViews FollowSymLinks
</p>
<p>
AllowOverride None
</p>
<p>
Order deny,allow
</p>
<p>
Deny from all
</p>
<p>
Allow from 127.0.0.0/255.0.0.0 ::1/128
</p>
<p>
</Directory>
</p>
<p>
</VirtualHost>
</p>
</blockquote>
<p>
この設定ファイルの「ScriptAlias」の部分に設定が書かれています。「ScriptAlias△CGIにアクセスするためのURL△CGIが格納されているディレクトリ」という設定です。
</p>
<h4>
CGIを書いてみる
</h4>
<p>
まずはとにかくHello Worldだ
</p>
<pre class="syntax-highlight">
<span class="synPreProc">#!/usr/bin/perl</span>
<span class="synStatement">print</span> <span class="synConstant">&#34;Content-type: text/html</span><span class="synSpecial">\n\n</span><span class="synConstant">&#34;</span>;
<span class="synStatement">print</span> <span class="synConstant">&#34;Hello, World.&#34;</span>;
</pre>
<p>
Content-typeをはき出すようにして上げないと、Internal Server Errorになるから注意してね
</p>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4873111501/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4873111501/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51TABRVHV3L._SL160_.jpg" class="hatena-asin-detail-image" alt="Apacheハンドブック" title="Apacheハンドブック" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4873111501/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4873111501/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'Apacheハンドブック');">Apacheハンドブック</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/Ben%20Laurie" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/Ben%20Laurie', 'Ben Laurie');" class="keyword">Ben Laurie</a>,<a href="http://d.hatena.ne.jp/keyword/Peter%20Laurie" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/Peter%20Laurie', 'Peter Laurie');" class="keyword">Peter Laurie</a>,<a href="http://d.hatena.ne.jp/keyword/%C2%E7%C0%EE%B2%C2%BF%A5" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C2%E7%C0%EE%B2%C2%BF%A5', '大川佳織');" class="keyword">大川佳織</a>,<a href="http://d.hatena.ne.jp/keyword/%C5%C4%CA%D5%CC%D0%CC%E9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C5%C4%CA%D5%CC%D0%CC%E9', '田辺茂也');" class="keyword">田辺茂也</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A5%B8%A5%E3%A5%D1%A5%F3" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A5%AA%A5%E9%A5%A4%A5%EA%A1%BC%A5%B8%A5%E3%A5%D1%A5%F3', 'オライリージャパン');" class="keyword">オライリージャパン</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2003/09
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 単行本
</li>
<li>
<span class="hatena-asin-detail-label">クリック</span>: 73回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4873111501" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4873111501', 'この商品を含むブログ (40件) を見る');" target="_blank">この商品を含むブログ (40件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>