はじめに †このページでは、httpdサービス(apache)を異なる設定で複数起動させる方法を紹介する。また、serviceやchkconfigに対応し、通常のapacheと同様の手順で起動/停止が行える簡単な設定方法も紹介する。OSはCentOS6.3を前提にしている。 背景 †番組予約システムepgrecでは、apacheにシェルのコマンド実行権限を与える必要があり*1、セキュリティが低下する*2。 対策方法 †公開サーバーのセキュリティを確保しつつ、epgrecを導入するにはいくつかの方法がある。
1はシンプルな方法で、2台目サーバーの調達コストや電気代が必要になり、また、管理の手間も増えるし、これができるならば何も悩む必要はない。2は低コストだが、epgrecのためだけに仮想サーバー1台分のメモリとディスクを消費することになるため、少しもったいない。 プライベート用apacheを起動する方法 †CENTOSでは、apacheの起動に以下の設定ファイルが関係している。
ここから、それぞれのファイルの設定手順を説明する。 以下、rootで作業する $su - init.d内の設定ファイルの作成 †#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内の設定ファイルの作成 †#cp -p /etc/sysconfig/httpd /etc/sysconfig/phttpd phttpdを2ヶ所編集する。 OPTIONS="-f /etc/httpd/conf/phttpd.conf" PIDFILE=/var/run/httpd/phttpd.pid apachectlの作成 †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の作成 †#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のセキュリティも高くする †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の試運転 †これまでの設定で問題が無いかどうかの確認のため、プライベート用apache(phttpd)を起動してみる。 #service phttpd configtest Syntax OK <これが表示されたらphttpd.confはOK> #service phttpd start phttpdを起動中: [OK] 試しに、クライアントマシンからブラウザでサーバーに接続してみる。 #service phttpd stop phttpdを停止中: [OK] 自動起動設定 †init.dの中にphttpdを作ったので、自動起動にも対応可能となっている。必要に応じて自動起動の設定をしておく。 #chkconfig phttpd on epgrecの配置 †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件を表示しています。 コメントページを参照 |