apache(httpd)を複数起動させ、それぞれのプロセスが異なるconfファイルを読み込んで動作する。また、serviceやchkconfigに対応し、通常のapacheと同様の手順で起動/停止が行える簡単な設定方法を紹介する。OSはCentOS6.3を前提にしている。
番組予約システムepgrecでは、apacheにログインを許可させる必要があり、セキュリティが低下する*1。
公開サーバーでepgrecを導入する場合、このセキュリティの低下をどのように回避するかが課題となる。
公開サーバーのセキュリティを確保しつつ、epgrecを導入するにはいくつかの方法がある。
1は当然コストがかかる。2は低コストだが、epgrecのためだけにメモリやディスクを消費することになるため、オーバーヘッドが大きい。
3は公開用apacheの他に、もう1つプライベート用apacheを起動させる。設定をいくつか書き換えるだけで比較的簡単で、なおかつ必要なリソースはほんの少しのメモリで済むため、ここでは3の方法について説明する。
CENTOSでは、apacheの起動に以下の設定ファイルが関係している。
ここから、それぞれのファイルの設定手順を説明する。 以下、rootで作業する
$su -
#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}
#cp -p /etc/sysconfig/httpd /etc/sysconfig/phttpd
phttpdを2ヶ所編集する。
OPTIONS="-f /etc/httpd/conf/phttpd.conf" PIDFILE=/var/run/httpd/phttpd.pid
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
#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の設定は完了した。
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(phttpd)を起動してみる。
#service phttpd configtest Syntax OK <これが表示されたらphttpd.confはOK> #service phttpd start phttpdを起動中: [OK]
試しに、クライアントマシンからブラウザでサーバーに接続してみる。
接続先URL:http://192.168.1.2:8080/server-status (IPアドレスはサーバーのローカルIP)
ブラウザにApache Statusが表示されれば、サーバーは正常に稼働している。
停止させる場合は
#service phttpd stop phttpdを停止中: [OK]
init.dの中にphttpdを作ったので、自動起動にも対応可能となっている。必要に応じて自動起動の設定をしておく。
#chkconfig phttpd on
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の更新も忘れずに。
これでapacheを異なる設定で複数起動させることができる。
最新の10件を表示しています。 コメントページを参照