[PR]

[PR]


#contents
*はじめに [#f39fdd7f]
このページでは、httpdサービス(apache)を異なる設定で複数起動させる方法を紹介する。また、serviceやchkconfigに対応し、通常のapacheと同様の手順で起動/停止が行える簡単な設定方法も紹介する。OSはCentOS6.3を前提にしている。

*背景 [#lcd93c8f]
番組予約システムepgrecでは、apacheにシェルのコマンド実行権限を与える必要があり((タイマー予約にatコマンドを使用するため))、セキュリティが低下する((PHPやCGIの脆弱性を突かれた場合、コマンド実行権限が簡単に奪取されてしまうため))。&br;
公開サーバーでepgrecを導入する場合、このセキュリティの低下を回避する対策が必要となる。

*対策方法 [#x2ff4706]
公開サーバーのセキュリティを確保しつつ、epgrecを導入するにはいくつかの方法がある。
+公開サーバーと録画サーバーを分ける
+epgrecを仮想サーバーで運用する
+apacheを異なる権限で複数起動する

1は当然コストがかかる。2は低コストだが、epgrecのためだけにメモリやディスクを消費することになるため、オーバーヘッドが大きい。&br;
1はシンプルな方法で、2台目サーバーの調達コストや電気代が必要になり、また、管理の手間も増えるし、これができるならば何も悩む必要はない。2は低コストだが、epgrecのためだけに仮想サーバー1台分のメモリとディスクを消費することになるため、少しもったいない。&br;
3は公開用apacheの他に、もう1つプライベート用apacheを起動させる。設定をいくつか書き換えるだけで比較的簡単で、なおかつ必要なリソースはほんの少しのメモリで済むため、ここでは3の方法について説明する。

*プライベート用apacheを起動する方法 [#if3fabf4]
CENTOSでは、apacheの起動に以下の設定ファイルが関係している。
-/etc/init.d/httpd
-/etc/sysconfig/httpd
-/usr/sbin/apachectl
-/etc/httpd(ディレクトリ配下。httpd.conf等)

ここから、それぞれのファイルの設定手順を説明する。
以下、rootで作業する
 $su -

**init.d内の設定ファイルの作成 [#lf3fed20]
 #cp -p /etc/init.d/httpd /etc/init.d/phttpd
phttpdを編集する。
 if [ -f /etc/sysconfig/phttpd ]; then <httpdをphttpdに>
         . /etc/sysconfig/phttpd    <httpdをphttpdに>
 fi
 
 apachectl=/usr/local/sbin/apachectl </usr/sbinを/usr/local/sbinに>
 httpd=${HTTPD-/usr/sbin/httpd}
 prog=phttpd             <httpdをphttpdに>
 pidfile=${PIDFILE-/var/run/httpd/phttpd.pid} <httpdをphttpdに>
 lockfile=${LOCKFILE-/var/lock/subsys/phttpd} <httpdをphttpdに>
 RETVAL=0
 STOP_TIMEOUT=${STOP_TIMEOUT-10}

**sysconfig内の設定ファイルの作成 [#dbf77564]
 #cp -p /etc/sysconfig/httpd /etc/sysconfig/phttpd
phttpdを2ヶ所編集する。
 OPTIONS="-f /etc/httpd/conf/phttpd.conf"
 PIDFILE=/var/run/httpd/phttpd.pid

**apachectlの作成 [#u9fe41f6]
apachectlを/usr/local/sbinにコピーする。
 #cp -p /usr/sbin/apachectl /usr/local/sbin/
コピーしたapachectlを編集する。
 STATUSURL="http://localhost:8080/server-status" <":8080"を追加>
 if [ -r /etc/sysconfig/phttpd ]; then <httpdをphttpdに>
    . /etc/sysconfig/phttpd <httpdをphttpdに>
 fi

**httpd.confの作成 [#m1d0cee3]
 #cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/phttpd.conf
phttpd.confは使用者によって様々な設定になるので、ここではepgrecに関する項目だけピックアップする。
 PidFile run/phttpd.pid
 Listen 8080 <ポートは公開用apacheと違う番号に設定する>
 Include conf.d/php.conf <不要な設定ファイルは読み込まず、php.confだけを指定>
 User jack <ここで一般のログインユーザーを指定する。無い場合はユーザーを作る>
 Group jack
 DocumentRoot "/var/www/phtml" <外部用apacheと異なるフォルダを指定する>
 ErrorLog logs/error2_log     <ログファイルの名前を変える>
 CustomLog logs/access2_log   <ログファイルの名前を変える>
 #epgrecファイルの設定
 <Directory "/var/www/phtml/epgrec">
    #AuthType Basic <パスワードをかける場合はこの4行の#を消す。公開用サーバーでは必ずパスワードをかける事>
    #AuthName "Private"
    #AuthUserFile /etc/httpd/conf/htpasswd
    #Require valid-user
    AddHandler php5-script .php <phpファイルの動作を指定>
    AddType text/html .php <phpファイルの動作を指定>
    DirectoryIndex index.php
    Options FollowSymLinks
    AllowOverride None
 </Directory>
これでapacheの設定は完了した。

*ついでにphpのセキュリティも高くする [#fdcb2611]
CENTOSのデフォルト設定ではWebで公開している全ディレクトリに対して、PHPファイルの実行を許可している。PHPが必要なディレクトリで個別の設定が必要になるが、セキュリティを確保するためPHPの実行を制限する。
 #vi /etc/httpd/conf.d/php.conf
 #AddHandler php5-script .php <この3行をコメントアウトする>
 #AddType text/html .php
 #DirectoryIndex index.php

*apacheの試運転 [#w237d601]
これまでの設定で問題が無いかどうかの確認のため、プライベート用apache(phttpd)を起動してみる。
 #service phttpd configtest
 Syntax OK <これが表示されたらphttpd.confはOK>
 #service phttpd start
 phttpdを起動中:     [OK]
試しに、クライアントマシンからブラウザでサーバーに接続してみる。&br;
接続先URL:http://192.168.1.2:8080/server-status (IPアドレスはサーバーのローカルIP)&br;
ブラウザにApache Statusが表示されれば、サーバーは正常に稼働している。&br;
停止させる場合は
 #service phttpd stop
 phttpdを停止中:     [OK]

*自動起動設定 [#j50b563c]
init.dの中にphttpdを作ったので、自動起動にも対応可能となっている。必要に応じて自動起動の設定をしておく。
 #chkconfig phttpd on

*epgrecの配置 [#gdce28d8]
apacheの設定が完了したので、この環境に沿ってepgrecを配置する。
phttpd.confに指定したとおりの場所にepgrecを配置させる。
 #mkdir /var/www/phtml
これまでepgrecを運用していた場合は、epgrecをフォルダごと移動させる。
 #mv /var/www/html/epgrec /var/www/phtml/
epgrecフォルダの所有者を設定する。
 #chown -r jack:jack /var/www/phtml/epgrec
これからepgrecを構築する場合は、phtmlフォルダ配下にepgrec環境を構築させる。番組取得用cronの更新も忘れずに。&br;&br;

これでapacheを異なる設定で複数起動させることができる。
----
*コメント欄 [#k37f2665]
#pcomment_nospam(,10,avobe)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS