CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UbuntuにApacheを入れる(2) ~CGIを使えるように

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

UbuntuにApache2を入れる、その2。
cgiを動かすとこまで

前回はこちら

とりあえず、index.htmlを作るのがめんどくさいので、 Indexesでディレクトリを表示する。

$ w3m -dump http://localhost/me/
Forbidden

You don't have permission to access /me/ on this server.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Apache/2.2.14 (Ubuntu) Server at localhost Port 80

Forbiddenが返ってくるので、エラーログをみる。

$ tail -1 /var/log/apache2/error.log
[Sun Mar 20 16:57:44 2011] [error] [client 127.0.0.1] Directory index forbidden by Options directive: /home/username/public_html/

Optionsが足りてないか。前回、.htaccessを許可しといたんで、

$ cat > .htaccess 
Options Indexes FollowSymLinks

$ w3m -dump http://localhost/me
Index of /me

[ICO]       Name         Last modified   Size Description
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[DIR] Parent Directory                      -  
[TXT] hello.html       20-Mar-2011 03:28   32  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


Apache/2.2.14 (Ubuntu) Server at localhost Port 80

よし。
apache2.confで禁止してるので、.htaccessは見えなくなっている。
次は、CGI。

$ cat > hello.cgi 
#!/usr/bin/perl
print "Content-Type: text/plain\n\nhello\n";
$ chmod a+x hello.cgi
$ curl http://localhost/me/hello.cgi
#!/usr/bin/perl
print "Content-Type: text/plain\n\nhello\n";

CGIがそのまま表示されてしまう。
.htaccessを書き換える。

$ cat > .htaccess 
Options Indexes FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .pl
$ curl http://localhost/me/hello.cgi
hello

よし、動いた。
もしうごかなかったら error.log を見て原因をググるべし。

さて、所感。

Apacheのインストールは、ひさびさにやったけどいろいろ変わっててびっくり。
ディストリ毎に違うのかな? まぁ...いいけどさ。
Apacheの設定は比較的簡単なんだけど、慣れないころはよくハマったので、
1つずつ確かめながらの作業風にしてみたんで、誰かの役にたてばいいな。

CGIだけど、当初 /var/www を public_html にシンボリックリンクはって、
CGI使う予定だったんだけどやめた。
動かなくてエラーログ見たらExecCGIが無効になってて、
/etc/apache2/sites-available/default で無効にしてるのが原因で、
やっかいな事に /etc/apache2/apache2.conf の記述的に最後だから、
書き換える必要が出たため。

書き換えるとサーバが変わったりする度にハマりやすいので、
userdir を使うのをおすすめする。
私がそうしなかったのは、blogに書く都合上、
ユーザ名とかそういうのを間違って出しそうだったんで Alias にしました。
(別に恥ずかしい名前つけてるわけではありません)




ApacheセキュリティApacheセキュリティ
(2005/10/17)
Ivan Ristic

商品詳細を見る

Apacheポケットリファレンス (POCKET REFERENCE)Apacheポケットリファレンス (POCKET REFERENCE)
(2010/04/10)
WINGS プロジェクト 高江 賢

商品詳細を見る
スポンサーサイト

UbuntuにApacheを入れる(1)

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

Ubuntu 10.04にapache2をインストールしてみた。
長くなりそうなので、まずは htmlを取得できるようにするまで。

まず、apacheだけど、
apatchじゃなくてapacheです!
とかいうと笑われるかな。結構、長い間、間違ってたもので...(笑)

では、本題。

apache2をインストールする。
1コマンドで簡単。

$ sudo apt-get install apache2
...

httpのテスト。サーバはGUIなしの事もあるだろうし、
CUIで試せたほうがいいかな。

$ curl http://localhost/
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

これでapacheが動いてて、httpでページが取得できたと。
昔はこのページが見えてますか?とかだった気がする。
これは、var/www/index.html を表示するよう設定されていた。

curlがなくてwgetだったら、

$ wget -O - http://localhost/
--2011-03-20 15:11:55--  http://localhost/
localhost をDNSに問いあわせています... ::1, 127.0.0.1
localhost|::1|:80 に接続しています... 失敗しました: Connection refused.
localhost|127.0.0.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 177 [text/html]
`STDOUT' に保存中

 0% [                                       ] 0           --.-K/s              <html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
100%[======================================>] 177         --.-K/s   時間 0s    

2011-03-20 15:11:55 (15.8 MB/s) - stdout へ出力完了 [177/177]

apache2の制御コマンドは、/etc/init.d/apache2
statusと、設定しなおしたあとに stop、start かな。使うとしたら。

$ sudo /etc/init.d/apache2 status
Apache is running (pid 7758).
$ sudo /etc/init.d/apache2 stop
 * Stopping web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
 ... waiting    ...done.
$ sudo /etc/init.d/apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
   ...done.

apache2の設定関係。これは、/etc/apache2 にある。

$ ls -1 -F /etc/apache2/
apache2.conf    # 基本的な設定、ここは変更しないようにしたい。
httpd.conf      # 設定したければこっちに書く。けど、変更しない方針で。
conf.d/         # 細かい設定。サービス毎に書く場合は..かな。
ports.conf      # ポート毎。開いてるポート探す時に見るくらいかな。
envvars         # 環境変数。チェックしとこう。
magic
mods-available/  # モジュール毎の設定を書く。書かずに済ませたい。
mods-enabled/    # a2enmod でシンボリックリンクされる。 
sites-available/ # 仮想ホスト
sites-enabled/

次に、自分用の場所を作る。
apache2.conf読んだ限り、複数人用ならuserdir使うのが一番楽。
/var/www は sites-available で設定されてるので、
いちいち sites-available いじらなきゃいけない。

といいつつ、個人なので別解の Alias ですませる方法で。

$ sudo cat > /etc/apache2/conf.d/me
Alias /me /home/username/public_html
<Directory /home/username/public_html>
        AllowOverride All
</Directory>

$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
   ...done.
$ mkdir ~/public_html
$ cd ~/public_html
$ cat > index.html
<html><body>hello</body></html>

$ curl http://localhost/~`whoami`/hello.html
<html><body>hello</body></html>

よし。htmlまでアクセスできましたね。続く。

参考:




Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集
(2008/09/26)
Ken Coar、Rich Bowen 他

商品詳細を見る

ApacheハンドブックApacheハンドブック
(2003/09)
Ben Laurie、Peter Laurie 他

商品詳細を見る

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。