メールサーバ構築その5(Apache編)
2013.07.04 Author: 443
どうもです。443 です。
**独り事**
イギリスGP終わりました。
最大旋回Gが5Gもの高速コーナーを走る、
F1を見られるのは、もう最後かもしれません。
ところで、ピレリタイヤ、どんどこ爆発しまくりです。
レース中にハミルトン、マッサ、ベルニュ、ペレス、グティエレスの
主に左リアタイヤが爆発しました。
※グティエレスは左フロントとのこと
ドイツGPではどのドライバーのタイヤが爆発するのでしょうか。
**独り事**
さて、今回は、メールサーバ構築と言いながら、
PostfixAdminにてWebサーバが必要になるため、
Apache2.2系のVirtualHost FastCGI SuEXEC環境のインストールを行いたいと思います。
■ VirtualHostについて
Apacheシステムへ複数の名前ベースのウェブサイトを構築する設定です。
■ FastCGIについて
CGIはユーザから要求があるたびに生成され、要求が終了すると破棄される。
FastCGIはプロセスを大量に生成、破棄を繰り返す事なくメモリ上に永続化させ、
生成、破棄に時間をかけず、動作向上が可能となる仕組みです。
■ SuEXECについて
ApacheにてWebサーバのプロセスIDとは異なるユーザIDで、CGIプログラムを実行する方式です。
CGIプログラムのファイルオーナ権限でプロセスが実行されるため、
他のユーザ権限へのファイルアクセスを防ぎ、セキュリティ上の危険を減らすことが可能です。
■ Apacheのインストール
# yum install httpd
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig --level 2345 httpd on
# chkconfig --list | grep httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
■ PHPのインストール
# yum install php
■ mod_fcgidのインストールに必要となる epel リポジトリインストール
# cd /root
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
■ epel リポジトリ設定ファイルの変更し、yumコマンド時にデフォルト不使用の設定を追加する
# vi /etc/yum.repos.d/epel.repo
---6行目を以下に変更-----------
enabled=0
-------------------------------
■ PHP用 FastCGIモジュール mod_fcgidのインストール
# yum --enablerepo=epel install fcgi mod_fcgid
■ CPAN のインストール
# yum install perl-CPAN perl-YAML gcc make
■ CPANから Perl用 FastCGI モジュール FCGIとCGI::Fastをインストール
# perl -MCPAN -e 'install FCGI'
# perl -MCPAN -e 'install CGI::Fast'
■ PostfixAdmin用のグループとユーザの追加をする
# groupadd -g 1000 www
# useradd -u 1000 -g 1000 -d /var/www/padm.example.com -m -s /bin/bash padm
# chmod 701 /var/www/padm.example.com
# mkdir -p /var/www/padm.example.com/htdocs
# mkdir -p /var/www/padm.example.com/logs
# mkdir -p /var/www/padm.example.com/bin
# mkdir -p /var/www/padm.example.com/php-session
# chown -R padm:www /var/www/padm.example.com
# passwd padm
ユーザー padm のパスワードを変更。
新しいパスワード: padm_パスワード
新しいパスワードを再入力してください: padm_パスワード
■ php-cgiを設置する
# vi /var/www/padm.example.com/bin/php-cgi
-------------------------------------------------------------
#!/bin/sh
export PHP_FCGI_CHILDREN=8# Maximum requests before a process is stopped and a new one is launched
export PHP_FCGI_MAX_REQUESTS=5000
# Launch the PHP CGI binary
# This can be any other version of PHP which is compiled with FCGI support.
exec /usr/bin/php-cgi
-------------------------------------------------------------
■ php-cgiのファイルオーナー・パーミッション権限の変更をする
# chown padm:www /var/www/padm.example.com/bin/php-cgi
# chmod 744 /var/www/padm.example.com/bin/php-cgi
# ls -l /var/www/padm.example.com/bin/php-cgi
-rwxr--r-- 1 padm www 273 2013-07-04 22:07 /var/www/padm.example.com/bin/php-cgi
■ /var/www/padm.example.com/htdocs/.user.iniを作成
# vi /var/www/padm.example.com/htdocs/.user.ini
--------------------------------------------------------------------------
session.save_path = "/var/www/padm.example.com/php-session"
--------------------------------------------------------------------------
■ .user.iniのファイルパーミッション変更
# chown padm:www /var/www/padm.example.com/htdocs/.user.ini
# ls -l chown padm:www /var/www/padm.example.com/htdocs/.user.ini
-rw-r--r-- 1 padm www 59 2013-07-04 22:10 /var/www/padm.example.com/htdocs/.user.ini
■ Apacheの設定ファイル /etc/httpd/conf/httpd.conf の編集をする
# cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig
# vi /etc/httpd/conf/httpd.conf
---44行目を以下に変更----------
ServerTokens Prod
-------------------------------
---276行目を以下に変更---------
ServerName testserver:80
----------------------------------505行目に以下を追加---------
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
----------------------------------537行目を以下に変更---------
ServerSignature Off
----------------------------------991行目を以下に変更---------
NameVirtualHost *:80
----------------------------------1011行目(最終行)に以下を追加----------
Include conf.d/vhosts/padm.example.com.conf
-------------------------------
■ /etc/httpd/conf.d/vhosts/padm.example.com.conf の編集をする
# mkdir /etc/httpd/conf.d/vhosts/
# vi /etc/httpd/conf.d/vhosts/padm.example.com.conf
----------------------------------------------------
<VirtualHost *:80>
SuexecUserGroup padm www
ServerAdmin webmaster@example.com
DocumentRoot "/var/www/padm.example.com/htdocs"
ServerName padm.example.com
ErrorLog /var/www/padm.example.com/logs/error_log
CustomLog /var/www/padm.example.com/logs/access_log combined env=!nolog
<Directory "/var/www/padm.example.com/htdocs">
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
AddHandler cgi-script .cgi
</Directory>
<IfModule mod_fcgid.c>
FCGIWrapper /var/www/padm.example.com/bin/php-cgi .php
</IfModule>
</VirtualHost>
----------------------------------------------------
■ /etc/httpd/conf.d/fcgid.conf の編集をする
# cp -p /etc/httpd/conf.d/fcgid.conf /etc/httpd/conf.d/fcgid.conf.orig
# vi /etc/httpd/conf.d/fcgid.conf
---最後尾に以下を追加-------------
FcgidMaxRequestLen 128000000
FcgidMaxRequestsPerProcess 2500
----------------------------------
■ /etc/httpd/conf.d/php.conf の編集をする
# cp -p /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.orig
# vi /etc/httpd/conf.d/php.conf
---15-16行目を以下に編集--------------------
#AddHandler php5-script .php
#AddType text/html .php
--------------------------------------------
■ PHPの状態を確認するため phpinfoの設置を行う
# vi /var/www/padm.example.com/htdocs/phpinfo.php
--------------------------
<?php phpinfo() ?>
--------------------------
■ phpinfo.phpのファイルオーナ権限を変更する
# chown padm:www /var/www/padm.example.com/htdocs/phpinfo.php
# ls -l /var/www/padm.example.com/htdocs/phpinfo.php
-rw-r--r-- 1 padm www 19 2013-07-04 22:13 /var/www/padm.example.com/htdocs/phpinfo.php
■ PHPの実行ユーザを表示する who.phpの設置を行う
# vi /var/www/padm.example.com/htdocs/who.php
-------------------------
<?php
echo exec('whoami');
?>
-------------------------
■ who.phpのファイルオーナー権限を変更する
# chown padm:www /var/www/padm.example.com/htdocs/who.php
# ls -l /var/www/padm.example.com/htdocs/who.php
-rw-r--r-- 1 padm www 30 2013-07-04 22:13 /var/www/padm.example.com/htdocs/who.php
■ Perlの実行ユーザを表示する who.cgiの設置を行う
# vi /var/www/padm.example.com/htdocs/who.cgi
-------------------------
#!/usr/bin/perlprint "Content-type: text/plain", "\n\n";
print `whoami`;
-------------------------
■ who.cgiのファイルオーナー・パーミッション権限を変更する
# chown padm:www /var/www/padm.example.com/htdocs/who.cgi
# chmod 744 /var/www/padm.example.com/htdocs/who.cgi
# ls -l /var/www/padm.example.com/htdocs/who.cgi
■ Apacheを起動する
# service httpd start
Starting httpd: [ OK ]
■ iptablesの設定変更
# vi /etc/sysconfig/iptables
---10-11行目に以下を追加--------------------------------------------
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
--------------------------------------------------------------------
■ iptablesの再起動を実施する
# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
■ Webブラウザにて閲覧
http://padm.example.com/
以下の画面が表示される
■ 403エラーにてApache 2 Test Pageを表示する設定を削除する
# cp -p /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.orig
# vi /etc/httpd/conf.d/welcome.conf
---9行目を以下に変更------------------------
# ErrorDocument 403 /error/noindex.html
--------------------------------------------
■ Apacheを再起動する
# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
■ Webブラウザにて閲覧
http://padm.example.com/
以下の画面が表示される
■ Apacheが、FastCGIにて動作していることを確認する
http://padm.example.com/phpinfo.php
Server APIに CGI/FastCGIと記述があることを確認する。
■ PHPが、ユーザpadm権限で動作していることを確認する
http://padm.example.com/who.php
padmと表示されることを確認する。
■ Perlが、ユーザpadm権限で動作していることを確認する
http://padm.example.com/who.cgi
padmと表示されることを確認する。
以上でApache2.2系のVirtualHost FastCGI SuEXEC環境のインストールが完了しました。
次回は、PostfixAdminの設定を行おうかと思います。
ではです。
名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ