メールサーバ構築その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/perl

print "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/

以下の画面が表示される
%E3%81%97%E3%82%83%E3%81%84%E3%82%93%E3%81%AE%E3%81%B6%E3%82%8D%E3%81%90-20130704-06.png


■ 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/

以下の画面が表示される
%E3%81%97%E3%82%83%E3%81%84%E3%82%93%E3%81%AE%E3%81%B6%E3%82%8D%E3%81%90-20130704-02.png

■ Apacheが、FastCGIにて動作していることを確認する
http://padm.example.com/phpinfo.php
Server APIに CGI/FastCGIと記述があることを確認する。
%E3%81%97%E3%82%83%E3%81%84%E3%82%93%E3%81%AE%E3%81%B6%E3%82%8D%E3%81%90-20130704-03.png

■ PHPが、ユーザpadm権限で動作していることを確認する
http://padm.example.com/who.php
padmと表示されることを確認する。
%E3%81%97%E3%82%83%E3%81%84%E3%82%93%E3%81%AE%E3%81%B6%E3%82%8D%E3%81%90-20130704-04.png

■ Perlが、ユーザpadm権限で動作していることを確認する
http://padm.example.com/who.cgi
padmと表示されることを確認する。
%E3%81%97%E3%82%83%E3%81%84%E3%82%93%E3%81%AE%E3%81%B6%E3%82%8D%E3%81%90-20130704-05.png

以上でApache2.2系のVirtualHost FastCGI SuEXEC環境のインストールが完了しました。
次回は、PostfixAdminの設定を行おうかと思います。

ではです。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ