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

219 lines
5.8 KiB
Markdown
Raw Normal View History

2019-03-31 11:00:21 +00:00
---
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>