219 lines
5.8 KiB
Markdown
219 lines
5.8 KiB
Markdown
|
---
|
|||
|
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 “/usr/lib/cgi-bin”>
|
|||
|
</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/ “/usr/share/doc/”
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<Directory “/usr/share/doc/”>
|
|||
|
</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">"Content-type: text/html</span><span class="synSpecial">\n\n</span><span class="synConstant">"</span>;
|
|||
|
<span class="synStatement">print</span> <span class="synConstant">"Hello, World."</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>
|