SSブログ

「apache」でチャットを動かす。 [Apache]

「apache」でチャットを動かす。

■CGIで動かすチャットを用意する。

       
[bibo-roku@centos Downloads]$ wget -O robo.zip http://www.kent-web.com/cgi/downld/downld.cgi?id=robo

[bibo-roku@centos Downloads]$ unzip robo.zip

[bibo-roku@centos Downloads]$ sudo mv robo /var/www/html/

[bibo-roku@centos robo]$ ll
合計 56
-rw-rw-r--. 1 bibo-roku bibo-roku 12472  9月 24 12:18 2011 admin.cgi ←「705」に。
-rw-rw-r--. 1 bibo-roku bibo-roku  1532  9月 24 11:37 2011 check.cgi ←「705」に。
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  9月 24 09:56 2011 data
-rw-rw-r--. 1 bibo-roku bibo-roku   451  9月 24 10:39 2011 index.html
-rw-rw-r--. 1 bibo-roku bibo-roku  4274 10月  2 11:13 2011 init.cgi ←「705」に。
-rw-rw-r--. 1 bibo-roku bibo-roku 14007 10月  2 11:13 2011 robo.cgi ←「705」に。
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  9月 24 09:56 2011 tmpl

[bibo-roku@centos data]$ ll
合計 140
-rw-rw-r--. 1 bibo-roku bibo-roku      0  9月 24 12:23 2011 deny.cgi ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku 131696  9月 24 12:23 2011 dic1.dat ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku   1712  9月 24 12:23 2011 dic2.dat ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku     32  7月 28 11:25 2007 index.html
-rw-rw-r--. 1 bibo-roku bibo-roku      0  9月 24 12:23 2011 log.cgi ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku      0  9月 24 12:23 2011 mem.cgi ←「606」に。
       
      
 掲示板のときと同様に、名前を付けつつ「wget」コマンドでダウンロードします。 「unzip」コマンドで解凍し、できあがったディレクトリを「/var/www/html」に移動します。
 パーミッションの確認をしておく。

■ファイル情報変更。

       
---間違い防止作業記録---
パーミッション変更
[bibo-roku@centos robo]$ chmod 705 *cgi ←まとめて変更。
[bibo-roku@centos robo]$ chmod 604 init.cgi ←これだけ「604」
[bibo-roku@centos data]$ chmod 606 *.cgi
[bibo-roku@centos data]$ chmod 606 *.dat

文字、改行コード変更
[bibo-roku@centos robo]$ nkf -w -Lu --overwrite *.cgi ←まとめて変更。
[bibo-roku@centos data]$ nkf -w -Lu --overwrite *.cgi
[bibo-roku@centos data]$ nkf -w -Lu --overwrite *.dat
---間違い防止作業記録---

[bibo-roku@centos Downloads]$ sudo chown -R apache:apache robo

[root@centos ~]# /etc/init.d/httpd restart

http://192.168.0.66/robo/check.cgi ←調査GOOD
http://192.168.0.66/robo/admin.cgi ←設定GOOD
http://192.168.0.66/robo/index.html ←本体GOOD
       
      
 パーミッションを変更し、改行コードと文字コードを「nkf」コマンドで変更します。(「vi」の「:set fileformat=」「:set fileencoding=」も変更には使えるのですが、トラブルの元になったので使用は避けます。)
「nkf -w -Lu --overwrite *.cgi」で正常表示されました。掲示板のCGIでは「-s」でしたが。
 ただ、サイトには「アスキー」「バイナリー」でアップロードと指示してあるので、「CentOS」に直接ダウンロードしている当方にはいまいちわかりにくい情報なんですよね。
 しかしCGI設置三個目でしたので、流石にミスは一回で済みました。
 それにしても懐かしいなーチャットって。



「apache」で掲示板を動かす。 [Apache]

「apache」で掲示板を動かす。

■CGIで動かす掲示板を用意する。

       
[bibo-roku@centos Downloads]$ wget -O wforum.zip http://www.kent-web.com/cgi/downld/downld.cgi?id=wforum

[bibo-roku@centos Downloads]$ unzip wforum.zip ←解凍。

[bibo-roku@centos Downloads]$ sudo mv wforum /var/www/html/

[bibo-roku@centos html]$ ls -l
---省略---
drwxrwxr-x.  5 apache apache 4096  5月  8 00:58 2015 dream ← カウンター確認済み。
drwxrwxr-x.  8 bibo-roku bibo-roku 4096  5月  8 10:40 2015 wforum ← 比較確認。
---省略---

[bibo-roku@centos wforum]$ ls -l ←「wforum」ディレクトリ。
合計 104
-rw-rw-r--. 1 bibo-roku bibo-roku 11032  1月 27 19:40 2013 admin.cgi ←「705」に。
-rw-rw-r--. 1 bibo-roku bibo-roku  2099  3月 13 12:35 2012 captcha.cgi ←「705」に。
-rw-rw-r--. 1 bibo-roku bibo-roku  2739  1月 13 15:55 2013 check.cgi ←「705」に。
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  9月 29 08:40 2012 css
drwxrwxr-x. 3 bibo-roku bibo-roku  4096  1月 13 15:49 2013 data ←「707」に。
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  1月 12 15:52 2013 icon
-rw-rw-r--. 1 bibo-roku bibo-roku 12105  5月 31 21:30 2013 init.cgi ←「604」に。
drwxrwxr-x. 7 bibo-roku bibo-roku  4096  1月 12 15:53 2013 lib
-rw-rw-r--. 1 bibo-roku bibo-roku 23531  5月 31 21:31 2013 regist.cgi ←「705」に。
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  1月 13 15:49 2013 tmpl
drwxrwxr-x. 2 bibo-roku bibo-roku  4096  1月 12 15:53 2013 upl
-rw-rw-r--. 1 bibo-roku bibo-roku 24507  5月 31 21:31 2013 wforum.cgi ←「705」に。

[bibo-roku@centos data]$ ls -l ←「data」ディレクトリ。
合計 16
-rw-rw-r--. 1 bibo-roku bibo-roku   32  7月 28 11:25 2007 index.html
-rw-rw-r--. 1 bibo-roku bibo-roku    2  5月 31 21:32 2000 log.cgi ←「606」に。
drwxrwxr-x. 2 bibo-roku bibo-roku 4096  1月 12 21:31 2013 past ←「707」に。
-rw-rw-r--. 1 bibo-roku bibo-roku    1 12月  5 21:00 1998 pastno.dat ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku    0  1月 13 15:49 2013 ses.cgi ←「606」に。

[bibo-roku@centos past]$ ls -l ←「past」ディレクトリ。
合計 4
-rw-rw-r--. 1 bibo-roku bibo-roku  0  8月 19 09:08 2011 0001.cgi ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku 32  7月 28 11:25 2007 index.html

[bibo-roku@centos css]$ ls -l ←「css」ディレクトリ
合計 8
-rw-rw-r--. 1 bibo-roku bibo-roku 1756  1月 13 15:33 2013 bbs.css ←「606」に。
-rw-rw-r--. 1 bibo-roku bibo-roku   32  7月 28 11:25 2007 index.html
       
      
「CGI」と言えば「カウンター」の次は「掲示板」だろう!
 というわけで、インターネットで検索し以下のサイト様の掲示板を使わせていただくことにしました。ありがとうございました。

 まずは「wget」でファイル名を付けつつダウンロードします。
「unzip」コマンドで解凍し、できあがったディレクトリを「/var/www/html」に移動します。
 パーミッション変更という同じ作業が続くので間違いが無いようにチェックしておきます。

 

■ファイル情報変更。

       
---間違い防止作業記録---
パーミッション変更
[bibo-roku@centos wforum]$ chmod 705 *cgi ←まとめて変更。
[bibo-roku@centos wforum]$ chmod 604 init.cgi ←これだけ「604」
[bibo-roku@centos wforum]$ chmod 707 data
[bibo-roku@centos data]$ chmod 707 past
[bibo-roku@centos data]$ chmod 606 log.cgi 
[bibo-roku@centos data]$ chmod 606 ses.cgi 
[bibo-roku@centos data]$ chmod 606 pastno.dat
[bibo-roku@centos css]$ chmod 606 bbs.css
[bibo-roku@centos past]$ chmod 606 0001.cgi

文字、改行コード変更
[bibo-roku@centos wforum]$ nkf -s -Lu --overwrite *.cgi ←まとめて変更。
[bibo-roku@centos css]$ nkf -s -Lu --overwrite bbs.css
[bibo-roku@centos data]$ nkf -s -Lu --overwrite *.cgi
[bibo-roku@centos data]$ nkf -s -Lu --overwrite pastno.dat
[bibo-roku@centos past]$ nkf -s -Lu --overwrite 0001.cgi
[bibo-roku@centos lib]$ nkf -s -Lu --overwrite *.pl
[bibo-roku@centos lib]$ nkf -s -Lu --overwrite Jcode.pm 
---間違い防止作業記録---

[bibo-roku@centos Downloads]$ sudo chown -R apache:apache wforum

[root@centos ~]# /etc/init.d/httpd restart

http://192.168.0.66/wforum/check.cgi ←調査GOOD
http://192.168.0.66/wforum/admin.cgi ←設定GOOD
http://192.168.0.66/wforum/wforum.cgi ←本体GOOD
       
      
 

間違えないように、飛ばさないようにパーミッションを指定の数値に変更していきます。

この段階でブラウザで「check.cgi」にアクセスするとエラーがでました。(所有者はそのときapacheに変更して)

これはカウンター設置の時に学びましたが、「改行コード(フォーマット)」のが「dos」であるからです。

前回のカウンターのときは「:set fileencoding=utf-8」などといじってしまうとその後「nkf」コマンドで上書き出来ない状態になってしまったので、今回は注意します。

といいながら、実は今回も苦労しました。

前回の教訓から初めから「nkf -w -Lu --overwrite check.cgi」としたところ、カウンターの時は文字化けしなかったのに、文字化けが発生してしまいました。



色々いじった結果、「vi」コマンドの「:set fileformat=unix」だけ実行することにより正常表示しました。その時の文字コードは「latin1」でした。

これだと、一つ一つファイルを開けて修正しなくてはならないので、面倒です。
 続けていじっていると、「nkf -s -Lu --overwrite check.cgi」で正常表示されました。


つまり、カウンターと掲示板では文字コードが「utf-8」と「shift-jis(またはlatin1)」と異なることになります。この辺はまだ勉強が足りなくわからないですね。



最後に、「wforum」ディレクトリを「chown」コマンド「-R」オプションでまとめてapacheにして、「apache」を再起動してアクセスします。



学べたのは、前回の上手くいった手段がそのまま使えるとは限らないと言うことで、毎回初心で望まないといけないということ。ですね。

あと、所有者が異なる所有者のファイルを編集したりするときに「root」権限が必要になるときが多々あるのですが、色々チェックしつつ進めているときは面倒になりますね。

修正することで所有者が変わってしまっていることを失念し、進まなくなってしまったりしました。

注意不足と言えばそうなんですが、「apache」ユーザーでコマンドを打てるようにするか、「bibo-roku」を「apache」グループに追加することで解決できるかな。

 あ、あと文字コードやら改行コードの修正が面倒なんですが、「FTPサーバ」を立ててWidowsから「FTPクライアント」でアップロードした方が楽かなぁ。






「apache」でカウンターを動かす。 [Apache]

「apache」でカウンターを動かす。

■CGIで動かすカウンターを用意する。

       
[bibo-roku@centos Downloads]$ wget -O dream.zip http://www.kent-web.com/cgi/downld/downld.cgi?id=dream ←名前付きダウンロード。

[bibo-roku@centos Downloads]$ unzip dream.zip ←解凍。

[bibo-roku@centos Downloads]$ sudo mv dream/ /var/www/html/ ←ディレクトリ移動。

[bibo-roku@centos html]$ chmod 705 dream/ ←パーミッション変更。
[bibo-roku@centos dream]$ chmod 705 dream.cgi 
[bibo-roku@centos dream]$ chmod 705 admin.cgi 
[bibo-roku@centos dream]$ chmod 705 check.cgi 
[bibo-roku@centos dream]$ chmod 604 init.cgi
[bibo-roku@centos dream]$ chmod 604 lib ←間違い。
[bibo-roku@centos lib]$ chmod 604 gifcat.pl 
[bibo-roku@centos lib]$ chmod 604 magick.pl
[bibo-roku@centos dream]$ chmod 707 data
[bibo-roku@centos data]$ chmod 606 index.dat
 
[bibo-roku@centos html]$ sudo chown -R apache:apace dream/ ←所有者変更。
 
[bibo-roku@centos dream]$ vi init.cgi ←変更。

$cf{password} = '0123'; ←原文。
$cf{password} = 'bibo-roku'; ←変更後。

$cf{ip_chk} = 0; ←原文。
$cf{ip_chk} = 1; ←変更後。

[bibo-roku@centos dream]$ sudo /etc/init.d/httpd restart ←「apache」再起動。

http://192.168.0.66/dream/check.cgi ←「チェックモード」アクセス。
Internal Server Error

[bibo-roku@centos dream]$ vi check.cgi
:set fileformat? ←ファイルのフォーマット調査。
  fileformat=dos ←「DOS」
:set fileencoding? ←ファイルのエンコーディング調査。  
  fileencoding=latin1 ←「latin1」

***********************下記 禁止事項***********************
:set fileformat=unix ←変更後。
:set fileencoding=utf-8 ←変更後。
***********************上記 禁止事項***********************

[bibo-roku@centos ~]$ sudo yum install nkf ←文字、改行コード変更に。
インストール:
  nkf.i686 1:2.0.8b-6.2.el6                                             
完了しました!

[bibo-roku@centos dream]$ sudo nkf -s -Lu --overwrite check.cgi ←文字、改行コード変更。「-s」でShift-JISに。
[bibo-roku@centos dream]$ sudo nkf -s -Lu --overwrite admin.cgi 
[bibo-roku@centos dream]$ sudo nkf -s -Lu --overwrite dream.cgi 
[bibo-roku@centos dream]$ sudo nkf -s -Lu --overwrite init.cgi

http://192.168.0.66/dream/check.cgi ←GOOD

http://192.168.0.66/dream/admin.cgi ←NG
「Internal Server Error」

[bibo-roku@centos dream]$ sudo yum install perl-CGI ←不足分。
インストール:
  perl-CGI.i686 0:3.51-136.el6_6.1                                               
完了しました!

http://192.168.0.66/dream/admin.cgi ←GOOD

http://192.168.0.66/index.html ←テキストのみ表示、カウンターNG

[root@centos dream]# ls -l
---省略---
drw----r--. 2 apache apache 4096  8月 17 13:02 2008 lib ←パーミッション「604」

[root@centos dream]# chmod 707 lib ←パーミッション変更。
[root@centos dream]# ls -l
---省略---
drwx---rwx. 2 apache apache 4096  8月 17 13:02 2008 lib ←「707」に。

       
      
「CGI」と言えば「カウンター」だなぁと10年以上前のホームページ全盛の頃を思い出しますね。というわけで、設置が一番簡単そうかなと思いカウンターを選びました。
 インターネットで検索し以下のサイト様のカウンターを使わせていただくことにしました。ありがとうございました。

http://www.kent-web.com/count/dream.html

 まずはダウンロードしましたが、「wget」コマンドで少し手間取ってしまいました。
「wget http://www.kent-web.com/cgi/downld/downld.cgi?id=dream」を実施するとダインロードされるファイルは「downld.cgi?id=dream」となってしまっています。
 確認もせずに捨てていましたが、実はこれがファイルでした……。これを「mv」コマンドで変名しても良いのでしょうが、「-O」オプションを付けて初めからファイル名を付けることが出来ました。
 次にファイルを「unzip」コマンドで解凍し出来上がった「dream」ディレクトリを説明にあるとおり「public_html」に設置します。
 といっても、「public_html」というディレクトリはありません。調べてみると、

 レンタルサーバーでホームページファイルをアップロードする場所は、ファイルマネージャーの「public_html」というフォルダになります。
 また、この「public_html」は「www」のフォルダとなっていることもあります。

 とのこと。つまり文字通りの意味で、公開するHTMLファイルを入れるディレクトリで一番浅いディレクトリというところでしょうかね。当方の場合は「html」でしょう。

 ダウンロードして解凍したディレクトリを指定の場所に設置し、各ファイルの所有権を指定通りに設定します。
 ※当方は今回間違って変更している部分があります。後半で気がつき修正しています。

 次に各「cgi」ファイルに「#!/usr/local/bin/perl」を記入(当方と同じだったので変更無し)するためにファイルを「vi」コマンドで開いたのですが、英数字文字以外は全部文字化けしておりコメントアウトしてある説明文は全く読めません。
 しかし、いじるところは英数字のところばかりなので問題なく変更。

「apache」を再起動し、説明にあるとおりブラウザでチェックモードの「check.cgi」に直接アクセスするも「Internal Server Error」発生。
「パーミッション」を「755」にするも変化なし。
 先日調べた「Internal Server Error」発生の原因リストには、
  1.ディレクトリのパーミッション
  2.CGI ファイルのパーミッション
  3.Perl のパスの違い
  4.改行コード
  5.UTF-8 の BOMコード
  6.文法エラー
  7.「モジュール」の不足
  8..htaccess の問題
  9.Perl のバージョン
 これらがあるようなので、当てはまるところを修正していきます。
 問題なさそう→1.3.6.9
 問題ありそう→4
 わからない→5.7.8


 ということで、改行コードについて調べてみました。
 Unix=LF
 Windows=CR+LF
   Mac=CR
 うーん。よく見かける情報ですが、コピペとか手動でいい加減に修正して其の場凌ぎで対処してきたから全然わかりませんねぇ。
 でもまぁつまり「check.cgi」の現状の改行コードを調べて、それが「Unix(CentOS)」用の「LF」であれば良いと言うことですよね。
 現状の改行コードを調べてみます。
「vi」コマンドで「check.cgi」を開き、「set fileformat?」とついでに「set fileencoding?」コマンドで調べてみると「fileformat=dos」と「fileencoding=latin1」表示されました。
 これはつまりWindowsで「CR+LF」ということですよね。なるほど、こりゃだめです。

***********************下記 禁止事項***********************
 ならば、改行コードを「LF」にエンコーディングを「utf-8」にしてやれば良いはずです。
 変更後、「apache」を再起動して再度アクセスするも「Internal Server Error」発生。

 実はここではまりました。

「vi」コマンドで「set:fileformat=unix」を実施したところ、「check.cgi」にブラウザで直接アクセスしたところ、文字化けは起こすものの「Internal Server Error」が出なくなりました。
 じゃぁ、あとは文字化けだけだと、「set:fileencoding=utf-8」を初め色々変えてみたのですが、文字化けは直りません。
 調べを進めたところ「nkf」コマンドという文字コートや改行コードを変換してくれるコマンドが存在しました。
「vi」で上手くいかないので「nkf」で変換したところ、やはり文字化けは直りませんでした。
 仕方ないので、最初からやり直そうとスナップショットを遡って今度はまず「nkf」コマンドで改行コードと文字コードを変更しました。
「nkf -w -Lu --overwrite check.cgi」そして「apache」を再起動させアクセスすると問題なく動いてくれました。文字化けも直っていました。
 その後「vi」のコマンドも使用してみたのですが、はじめに「vi」で「set:fileencoding=」を行ってしまうと、あとで「nkf」を使っても文字化けが直らない現象が起きることが解りました。(多分ですが。自分の環境だけかも。)
 つまり、「vi」コマンドでは文字、改行コードは変更せず「nkf」コマンドだけインストールして変更してやれば良いことになります。
 大変時間をかけてしまいました。
---追記--- 「vi」の「set: fileformat=unix」は有効でした。実行することにより「Internal Server Error」がなくなり文字化けではあるけど正しいページが表示されます。
 次に「文字コード」を直そうと「set:fileencoding=utf-8」を使用するのが間違いとわかりました。(utf-8以外でもだめ)
「文字コード」の修正には「nkf -w --overwrite check.cgi」とします。その前に「set:fileencoding=utf-8」を実行してしまうと。「nkf -w --overwrite check.cgi」が効かなくなってしまうので注意です。(当方の場合では)

改行コード変更=「vi set:fileformat=unix」と「nkf -Lu --overwrite」有効
文字コード変更=「nkf -w --overwrite」有効
「vi」と「nkf」どちらも「改行」「文字」コードをいっぺんに変更できますが、1つずつ変更すると不具合の場合の原因が特定しやすくなると思います。

 当方の理解度が低いための現象かも知れませんので悪しからず。
***********************上記 禁止事項***********************

 次に「admin.cgi」を自信を持ってアクセスしたのですが、「Internal Server Error」でした。
 サイトを巡りまくってようやく「perl-CGI」というモジュールが「掲示板」などのCGIに必要だという記述を見つけました。そして一応入れてみることにして、たまたま解決することができました。まだまだ駄目ですねぇ。

 最後にHTMLファイルにカウンターを設置しちゃんと動作するか確認すべく、HTMLファイルに「<img src="dream/dream.cgi?id=index">」を記述し、「apache」の再起動後アクセスするも、テキストは表示されるもののカウンターは表示されず。
「admin.cgi」「check.cgi」という直接接続するCGIには問題なく接続ができるようになったので、気楽に構えていたのですがこれまたはまってしまいました。

 結局はパーミッションの問題でした。しかも完全に自分が行った設定が間違いでした。  ディレクトリ「lib」がパーミッション「604」になっていたのです。(今回のびぼーろくの初めにちゃんと間違いが残っている!)  他のパーミッション変更と流れ作業的に行ったのが敗因ですね。お恥ずかしい限りです。
 でこれを「707」とか「755」などに変更してカウンターが表示されるようになりました!

 このレベルで長時間苦しんで情けない限りです。が、基本的には「パーミッション」「所有権」「モジュールの不足」がトラブルの原因だった。ということを知れたのは収穫でした。次回に生かせると尚良いのだけれど。



「apache」でCGIを動かしてみる。 [Apache]

「apache」でCGIを動かしてみる。

■「apache」の設定変更。

 
        
[bibo-roku@centos ~]# sudo vi /etc/httpd/conf.modules.d/00-mpm.conf

# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so ←「#」外す。


[bibo-roku@centos ~]# sudo vi /etc/httpd/conf.modules.d/01-cgi.conf

# This configuration file loads a CGI module appropriate to the MPM
# which has been configured in 00-mpm.conf.  mod_cgid should be used
# with a threaded MPM; mod_cgi with the prefork MPM.

<IfModule mpm_worker_module>
   LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_event_module>
   LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module> ←これ。
   LoadModule cgi_module modules/mod_cgi.so
</IfModule>

[bibo-roku@centos modules]$ ls | grep mod_cgi
mod_cgi.so ←両方共に存在。
mod_cgid.so ←両方共に存在。

[bibo-roku@centos /]$ sudo vi /etc/httpd/conf/httpd.conf

# Further relax access to the default document root:
<Directory "/var/www/html">
---省略---
Options Indexes FollowSymLinks ←原文。
Options Includes ExecCGI FollowSymLinks ←変更後。

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ←エイリアスと実際の場所。

#AddHandler cgi-script .cgi ←原文。
AddHandler cgi-script .cgi .pl ←コメントアウト解除、追記。


       
       
 MPMは当方の環境では「prefork」を選ぶ必要があるそうですので、「prefork」のコメントアウトを解除します。「worker」「event」はコメントアウトします。

「/etc/httpd/conf.modules.d/01-cgi.conf」を確認すると、「prefork」=「mod_cgi.so」で「event」と「worker」は「mod_cgid.so」ということのようです。
「/etc/httpd/modules」を確認すると両方のモジュールが確認できました。

「/etc/httpd/conf/httpd.conf」の<Directory "/var/www/html">の設定を「ExecCGI」を追記することでこのディレクトリでも「CGI」を利用することができるようになります。
 意味はSSIの許可(コマンドExec含む)、CGIの許可、シンボリックリンク許可。

「ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"」は本来「CGI」を置くディレクトリである「/var/www/cgi-bin/」をエイリアスにより「/cgi-bin/」と表記できるようにしています。
 アドレスは「http://192.168.0.66/cgi-bin/test.cgi」となります。
 コメントアウト解除します。

「AddHandler cgi-script .cgi .pl」と追加して、使用できる拡張子を増やします。

■「apache」でCGIを動かす準備。

       
[bibo-roku@centos modules]$ whereis perl ←「perl」の確認。
perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz

[bibo-roku@centos modules]$ sudo ln -s /usr/bin/perl /usr/local/bin/perl ←シンボリックリンク作成。

[bibo-roku@centos modules]$ whereis perl ←「perl」の再度確認。
perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz

[bibo-roku@centos ~]$ ll /var/www/
合計 8
drwxr-xr-x. 2 root root 4096  4月 21 00:51 2015 cgi-bin
drwxr-xr-x. 4 root root 4096  5月  4 22:01 2015 html ←所有者確認。

[bibo-roku@centos ~]$ sudo chown apache:apache /var/www/html/ ←所有者変更。
[bibo-roku@centos ~]$ ll /var/www/ ←所有者再確認。
合計 8
drwxr-xr-x. 2 root   root   4096  4月 21 00:51 2015 cgi-bin
drwxr-xr-x. 4 apache apache 4096  5月  4 22:01 2015 html ←確認。

       
      
「perl」にシンボリックリンクを張るために現状の場所を確認し、/usr/local/bin/perlにリンクを張ります。
「/var/www/html」ディレクトリの所有者を「apache」に変更します。

■「apache」でCGIを動かす。

       
[bibo-roku@centos ~]$ sudo vi /var/www/html/index.html ←テスト用HTMLファイル作成。

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>テストページ</title>
  </head>

  <body>
    HTML(html)表示テスト
  </body>
</html>


[bibo-roku@centos ~]$ sudo vi /var/www/html/index.shtml ←テスト用SHTMLファイル作成。
<html>
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>テストページ</title>
  </head>
  
  <body>
  SHTML(SSI)表示テスト<BR>
  <!--#echo var="DATE_LOCAL" -->
  </body>
</html>


[bibo-roku@centos ~]$ sudo vi /var/www/html/test.cgi ←テスト用CGIファイル作成。
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
print "<title>テストページ</title>\n";
print "</head>\n";
print "<body>\n";
print "CGI表示テスト\n";
print "</body>\n";
print "</html>\n";

[bibo-roku@centos ~]$ sudo chown apache:apache /var/www/html/index.html ←作成ファイルの所有者変更。
[bibo-roku@centos ~]$ sudo chown apache:apache /var/www/html/index.shtml 
[bibo-roku@centos ~]$ sudo chown apache:apache /var/www/html/test.cgi
[bibo-roku@centos ~]$ ll /var/www/html/ ←確認。
合計 24
-rw-r--r--.  1 apache apache  199  5月  5 23:11 2015 index.html
-rw-r--r--.  1 apache apache  233  5月  5 23:14 2015 index.shtml
-rw-r--r--.  1 apache apache  326  5月  5 23:19 2015 test.cgi


http://192.168.0.66/
HTML(html)表示テスト ←GOOD

http://192.168.0.66/index.shtml
SHTML(SSI)表示テスト
Tuesday, 05-May-2015 23:46:43 JST ←GOOD

http://192.168.0.66/test.cgi
Internal Server Error ←NG

[bibo-roku@centos html]$ sudo chmod 755 test.cgi ←パーミッションを変更。
[bibo-roku@centos html]$ ls -l
合計 40
-rw-r--r--.  1 apache apache   199  5月  5 23:11 2015 index.html
-rw-r--r--.  1 apache apache   233  5月  5 23:14 2015 index.shtml
-rwxr-xr-x.  1 apache apache   326  5月  5 23:19 2015 test.cgi ←755に。

http://192.168.0.66/test.cgi ←再度確認。
CGI表示テスト ←GOOD
       
      
 テスト用のファイル「HTML」「SHTML」「CGI」を作成し、所有者を「apache」に変更し、「apache」の再起動を行いブラウザで開いてみます。

 しかし「HTML」と「SHTML」は表示されたものの「CGI」はエラーが出てしまいました。前者は表示されるのですから「apache」は一応動いていると思います。
 となると、「CGI」を実現させる何かが間違っているのでしょう。「パッケージ」「モジュール」「設定」「所有者」というところでしょうか。
 インターネットで検索してみると

ディレクトリのパーミッション
CGI ファイルのパーミッション
Perl のパスの違い
改行コード
UTF-8 の BOMコード
文法エラー
「モジュール」の不足
.htaccess の問題
Perl のバージョン

 などがあるようです。調べていきますと、「test.cgi」のパーミッションが「644」でした。「755」に変更します。
 表示できました!


 表示は出来ましたが、理由が解らないのでこれを機に調べてみます。
 パーミッションは以下の表のようになっています。
オーナー グループ それ以外
読み込み 書き込み 実行 読み込み 書き込み 実行 読み込み 書き込み 実行
r w x r w x r w x
4 2 1 4 2 1 4 2 1



まずは「index.html」ですがこれは「644」ですから

「オーナー」→「読み込み」「書き込み」

「グループ」→「読み込み」

「それ以外」→「読み込み」

HTMLファイルは読み込むだけですから、「644」のままでも表示できたということでしょうか。



次に「index.shtml」ですがこれは「644」ですから

「オーナー」→「読み込み」「書き込み」

「グループ」→「読み込み」

「それ以外」→「読み込み」

SHTMLファイルは動的なページと言えるようですが、HTMLに埋め込むだけで使用できるとのことですから、パーミッションも読み込むだけで「644」のままでも表示できたということでしょうか。時間を表示しているので、情報を引き出して(実行して)いるようにも思えるのですが……。



まずは「test.cgi」ですがこれは「644」でしたから

「オーナー」→「読み込み」「書き込み」

「グループ」→「読み込み」

「それ以外」→「読み込み」

CGIはSHTMLと同様に動的なページを作成できますが、埋め込みのタイプではなく、perlに渡して実行し、HTMLを生成する必要があるため、「読み込み」と「実行」が必要なのではないでしょうかね。

そのため、「perl」のパスを間違えたままでアクセスすると、ソースだけ表示されますが、これは「読み込み」だけだからでしょう。



 その後色々試してみました。結局のところ「オーナー」は「apache」なので当方の状況でブラウザを見る場合「グループ」と「それ以外」は無関係かもしれません。

 ブラウザで見るという行為は「それ以外」が「読み込み」をする物だと思ったのですが。「770」にしても見られるので間違いのようですね。

 そして「オーナー」を「1」にしても「Internal Server Error」発生。実行はできても「読み込み」ができていないからでしょう。

 「オーナー」を「5」にしてみると案の定表示されました。ただ、HTMLファイルに書き込むようなプログラムの場合「書き込み」も必要となり「7」にしなければならないのではないでしょうか。それとも単にHTMLファイルの編集する権限のことかな。



 ちょっと話が逸れてしまいますが、「cat /etc/passwd」にて「apache」のユーザーIDが48ということがわかりました。

 次に「ps alx」で「httpd」の付くプロセスのユーザーIDを見てみると「48」でした。

 やはりプロセスを動かしている「オーナー」に「7」を付与するのが正しいみたいですね。






apache2.4.12のファイル配置。 [Apache]

apache2.4.12のファイル配置。

■「yum」でインストールしたapache2.4.12のファイル配置。

files_location.png  ざっと書き出してみたのですが、書籍やサイトで紹介されているファイル配置が異なる気がするんですが……。
 コンフィグも1000行位あると書かれていますがそんなにありません。コンフィグを分割してあちこちに配置しているような印象を受けます。
「yum」でインストールしたから?
 とりあえず出来るところまで進めてみようと思います。


apache2.4.12の起動確認。 [Apache]

apache2.4.12の起動確認。

■「apache」の状態確認。

       
[bibo-roku@centos ~]$ service httpd status
httpd status unknown due to insufficient privileges.

[bibo-roku@centos ~]$ sudo service httpd status ←「sudo」が必要。
[sudo] password for bibo-roku: 
httpd は停止しています
       
      
以下
http://westbird.blog.so-net.ne.jp/2015-04-23-1
にて「apache2.4.12」のインストールが完了したので、これが起動しているか「service」コマンドで確認したところ、初めは「sudo」が無いため権限が不足と言われてしまいました。
 修正後の結果は「停止」とのことなので起動してみます。

■「apache」を起動。

       
[bibo-roku@centos ~]$ chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

[bibo-roku@centos ~]$ sudo /etc/init.d/httpd start
httpd を起動中:                                            [  OK  ]
       
      
 前項目でhttpdが「停止」だったので、サービスの確認「chkconfig --list httpd」を実施すると、ランレベル3(フルマルチユーザモード(テキストコンソール))と5(フルマルチユーザモード(グラフィカル環境))で「on」なので問題はなさそうです。
「# chkconfig サービス名 on[off]」で設定可能。
「sudo /etc/init.d/httpd start」コマンドで起動させることが出来ました。
 以下アドレスに、ホストOS(Windows8.1)のブラウザ、ゲストOS(CentOS)の「X-Window」の「FireFox」いずれからもアクセス不可。
URL:
 http://192.168.0.66/ ←66がホストアドレス。
 http://centos/ ←「ホスト名の変更」にて設定。
 http://www/ ←「ホスト名の変更」にて設定。
 次にホストOSからゲストOSに「ping」を打って確認。
 C:\Users\xxxxx>ping 192.168.0.66
 双方向からのPINGに問題なし。

■「iptables」の編集。

       
[bibo-roku@centos ~]$ sudo vi /etc/sysconfig/iptables

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT ←追記。
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

[bibo-roku@centos ~]$ sudo /etc/init.d/iptables restart
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]

iptables: ファイアウォールルールを消去中:                  [  OK  ]

iptables: モジュールを取り外し中:                          [  OK  ]

iptables: ファイアウォールルールを適用中:                  [  OK  ]

 全てのアドレスで「It works!」確認。
       
      
 ホームページが表示されないので、ウェブ検索すると「iptables」なるコマンドがあることがわかりました。
 これはルータで言うところの「フィルター」の役目をするファイルのようです。
「-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT」
 が確認できました。
 書式はさっぱりわかりませんが「22」がSSHのポート番号であることはピンときました。
 なので、丸ごとコピーしてポートをウェブ用の「80」に変更して追記しました。
「sudo /etc/init.d/iptables restart」で再起動させることにより、全てのURLで確認が取れました!


最新のApache 2.4.12-5 を yum でインストールする。 [Apache]


■リポジトリの一時的「有効」と「無効」。

       
[bibo-roku@centos ~]$ sudo yum install --disablerepo=base,extras,updates --enablerepo=ius httpd ←リポジトリ「IUS」を一時的に有効にする。

エラー: パッケージ: httpd24u-2.4.12-5.ius.centos6.i686 (ius)
             要求: /etc/mime.types ←「mime.types」をインストールする必要あり。
       
      
 最新の「apache」を提供しているリポジトリは「CentALT」という情報を見かけたのですが、「FireFox」で訪れてみると警告が発せられたのでパスしました。
 リポジトリ「IUS」で最新のパッケージを確認したのでこれを利用することにしました。
 が、現在
 http://westbird.blog.so-net.ne.jp/2015-04-20
 で設定したとおり、デフォルトで利用できるリポジトリはID「base」「extras」「updates」だけです。
 そしてこれらは今回不要なので、「yum」のオプション「--disablerepo=base,extras,updates」とし無効化します。
 次に必要なリポジトリ「IUS」を「--enablerepo=ius」で有効化します。これでインストールを実施します。  するとエラーが発生したので下記でこれに対処します。

■必要なファイルを「yum provides」コマンドで検索する。

       
エラー: パッケージ: httpd24u-2.4.12-5.ius.centos6.i686 (ius)
             要求: /etc/mime.types ←「mime.types」をインストールする必要あり。

[bibo-roku@centos ~]$ sudo yum provides /etc/mime.types ←含まれるパッケージを検索。
---省略---
base                                                     | 3.7 kB     00:00
mailcap-2.1.31-2.el6.noarch : Helper application and MIME type associations for
                            : file types
リポジトリー        : base
一致          :
ファイル名    : /etc/mime.types

[bibo-roku@centos ~]$ sudo yum install mailcap
---省略---
インストール:
  mailcap.noarch 0:2.1.31-2.el6

完了しました!
       
      
 CentOS6.6がminimalインストールなので、インストールするために必要な依存関係のあるパッケージが不足している状態です。
 ゆえに、今後も何かインストールするたびに要求されることと思いますが、そのパッケージが名前の通りのものであれば楽ですが、何かのパッケージ内にしか存在しない場合などもあるようで、その場合にパッケージを検索するのに「yum」のオプション「provides」が使えます。
 今回は「mailcap」をインストールすることで「mime.types」もインストールされました。

■最新の「apache 2.4.12-5」を「yum」でインストールする。

       
[bibo-roku@centos ~]$ sudo yum install --disablerepo=base,extras,updates --enablerepo=ius httpd ←先ほど失敗したので再度インストール。

インストール:
  httpd24u.i686 0:2.4.12-5.ius.centos6

依存性関連をインストールしました:
  apr15u.i686 0:1.5.1-3.ius.centos6
  apr15u-util.i686 0:1.5.4-3.ius.centos6
  httpd24u-filesystem.noarch 0:2.4.12-5.ius.centos6
  httpd24u-tools.i686 0:2.4.12-5.ius.centos6

完了しました!
       
      
 ここでは実際にインストールした順で記載しているのでエラーもそのまま書き記しておりますが、「httpd(apache)」をインストールする前に「mailcap」をインストールして置いても良いと思います。

■「httpd-devel」をインストールする。

       
[bibo-roku@centos ~]$ sudo yum install --disablerepo=base,extras,updates --enablerepo=ius httpd-devel

エラー: パッケージ: apr15u-util-devel-1.5.4-3.ius.centos6.i686 (ius)
             要求: expat-devel(x86-32) ←含まれているパッケージを調べる。
エラー: パッケージ: apr15u-util-devel-1.5.4-3.ius.centos6.i686 (ius)
             要求: openldap-devel(x86-32) ←含まれているパッケージを調べる。
エラー: パッケージ: apr15u-util-devel-1.5.4-3.ius.centos6.i686 (ius)
             要求: db4-devel(x86-32) ←含まれているパッケージを調べる。

[bibo-roku@centos ~]$ sudo yum provides expat-devel
---省略---
expat-devel-2.0.1-11.el6_2.i686 : Libraries and header files to develop

[bibo-roku@centos ~]$ sudo yum provides openldap-devel
---省略---
openldap-devel-2.4.39-8.el6.i686 : LDAP development libraries and header files

[bibo-roku@centos ~]$ sudo yum provides db4-devel
---省略---
db4-devel-4.7.25-18.el6_4.i686 : C development files for the Berkeley DB

[bibo-roku@centos ~]$ sudo yum install expat-devel openldap-devel db4-devel ←必要と言われたファイルをまとめてインストール。
---省略---
インストール:
  db4-devel.i686 0:4.7.25-18.el6_4        expat-devel.i686 0:2.0.1-11.el6_2
  openldap-devel.i686 0:2.4.39-8.el6

依存性関連をインストールしました:
  cyrus-sasl-devel.i686 0:2.1.23-15.el6_6.2    db4-cxx.i686 0:4.7.25-18.el6_4

依存性を更新しました:
  cyrus-sasl.i686 0:2.1.23-15.el6_6.2  cyrus-sasl-lib.i686 0:2.1.23-15.el6_6.2

完了しました!

[bibo-roku@centos ~]$ sudo yum install --disablerepo=base,extras,updates --enablerepo=ius httpd-devel ←再度インストール。
---省略---
インストール:
  httpd24u-devel.i686 0:2.4.12-5.ius.centos6

依存性関連をインストールしました:
  apr15u-devel.i686 0:1.5.1-3.ius.centos6
  apr15u-util-devel.i686 0:1.5.4-3.ius.centos6

完了しました!
       
      
 前項目と同様、依存関係で必要な物をインストールしてあげます。

■最新の「httpd-manual」をインストールする。

       
[bibo-roku@centos ~]$ sudo yum --disablerep=base,update,extra --enablerepo=ius install httpd-manual
---省略---
インストール:
  httpd24u-manual.noarch 0:2.4.12-5.ius.centos6

完了しました!
       
      
 マニュアル関係のファイルなのでしょうかね。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。