SSブログ

CentOS 6.3 にWebサーバーを構築する [WEBサービス]

Perlの開発環境として準備した。

レンタルサーバーにアップする前の動作確認およびデバッグするために、CentOS 6.2上にApache とMySQLの使える環境を構築した。

各ソフトのバージョンは以下

  • Apache : 2.2.15
  • MySQL : 5.1.67
  • PHP : 5.3.3
  • Perl : 5.10.1

開発ユーザー名は”webs”として構築

1. Apache

① CentOSインストール時に導入済みなので設定のみ

/etc/httpd/conf/httpd.conf の編集

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir disable
    ↓
    #UserDir disable ← #を追加(コメントアウト)


    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    #UserDir public_html
    ↓
    UserDir public_html ← 行頭の#を削除(コメント解除)
    AliasMatch ^/centos(.*) /home/centos/public_html/$1
 ← centosユーザーのみhttp://centossrv.com/centos/のように~(チルダ)なしでアクセスできるようにする
    AliasMatch ^/userdir/([^/]+)/(.*) /home/$1/public_html/$2
 ← 全てのユーザーでhttp://centossrv.com/userdir/ユーザー名/でアクセスできるようにする
</IfModule>


#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>
以下の全行追加
<Directory /home/*/public_html>
    AllowOverride All ← .htaccessの許可
    Options IncludesNoExec ExecCGI FollowSymLinks ← CGI,SSI(Exec命令以外)の許可
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

 

② Webサーバーの設定反映と起動設定

 # /etc/rc.d/init.d/httpd reload start ←サーバー起動

 # /etc/rc.d/init.d/httpd reload stop ←サーバー停止

 # /etc/rc.d/init.d/httpd reload ←サーバー再起動

 # chkconfig httpd on ←自動起動オン


③ ユーザーディレクトリ作成(~/public_htmlディレクトリ)

 以下のスクリプトを作成、実行そして削除

 作成: # gedit userdirmake

#!/bin/bash

for user in `ls /home`
do
id $user > /dev/null 2>&1
if [ $? -eq 0 ] && [ ! -d /home/$user/public_html ]; then
mkdir -p /home/$user/public_html
chown $user. /home/$user/public_html
chmod 711 /home/$user
echo $user
fi
done

 実行: # sh userdirmake

 削除: # rm –f userdirmake

 新規ユーザー追加時にユーザーディレクトリが自動で作成されるようにする:

 # mkdir /etc/skel/public_html

④ Webページ表示確認 : http://127.0.0.1:~webs/index.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>テスト</title>
<body>
テスト
</body>
</html>

「Forbidden Forbidden You don't have permission to access …」発生時の原因

  1. そのディレクトリのトップページ(index.html など)が存在しない。

  2. そのディレクトリのアクセス許可を,制作者が設定し間違えた。

  3. 現在更新作業中で,一時公開中止している。

  4. アクセス拒否されている。

確認:

httpd.conf 設定ファイル<Directory /home/*/public_html> ~ </Directory> 間の再確認

  1. /home, /home/public_html, /home/public_html/index.html パーミッション(755)確認

  2. SELinux 停止状態
# getenforce
Enforcing の場合、無効にする
# gedit /etc/sysconfig/selinux
SELLINUX=disabled に修正

⑤ CGI確認 : http://127.0.0.1/~webs/test.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\">\n";※システムの文字コードがUTF-8の場合
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\">\n";※システムの文字コードがEUCの場合
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";

「CGIプログラムそのまま表示」時の対応

httpd.confで「#AddHandler cgi-script .cgi」の行のコメントアウトを解除する

「Internal Server Error」発生時の原因

  1. 改行コードの違い(LFのこと)

  2. Perl のパスの間違え

  3. CGIプログラムのパーミッション間違え

確認:

  1. エディターの改行コード設定の確認

  2. # which perl で場所確認 ←CentOSの場合、/usr/bin/perl が正しい

  3. パーミッション755の確認

⑥ SSI(Server Side Include)確認 : http://127.0.0.1/~webs/test.shtml

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8

<meta http-equiv="Content-Type" content="text/html; charset=euc-jp
<title>テスト</title>
<body>
SSIテスト
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>


⑦ PHP確認 : http://127.0.0.1/~webs/test.php

<?php
phpinfo();
?>

以上で環境構築は完了、これからアプリ開発を続行する。

参考サイト


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