2013年2月4日月曜日

CloudInitでWebサーバ(Apache)を構築

スズキです。

下記のNATインスタンスの構築に引き続き、Webサーバ(Apache)の構築も試してみました。
CloutInitでNATインスタンス(iptables)を構築
初期構築スクリプトは下記となります。
#!/bin/sh
set -e
trap 'echo "NG: $?"' ERR
yum -y install httpd mod_extract_forwarded
if [ ! -L /etc/httpd/conf/httpd.conf ]; then
    mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
    ln -s /opt/suz-lab/etc/apache/httpd.conf /etc/httpd/conf/httpd.conf
fi
if [ ! -f /etc/httpd/conf/virtual_host.conf ]; then
    cat << EOT > /etc/httpd/conf/virtual_host.conf
NameVirtualHost *:80
<VirtualHost *:80>
#    DocumentRoot /var/www/html
#    ServerName   www.example.com
</VirtualHost>
EOT
fi
service httpd restart
chkconfig httpd on
exit 0

このスクリプトを使って下記のようにEC2を起動します。

#include-once
https://raw.github.com/suz-lab/suz-lab-centos-ami/master/share/cloud-init/suz-lab_apache

サーバにログインすると、下記のようにApacheがインストールされ、設定ファイルも
調整されていることがわかります。
# pwd
/etc/httpd/conf
# ls -1
httpd.conf -> /opt/suz-lab/etc/apache/httpd.conf
httpd.conf.org
magic
virtual_host.conf

ちなみに設定ファイル(httpd.conf)は、次のようにしています。
Listen          80
DocumentRoot    "/var/www/html"
DirectoryIndex  index.html
CustomLog       logs/access_log combined
LogFormat       "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Timeout               60
KeepAlive             on
MaxKeepAliveRequests   0
KeepAliveTimeout     120

<IfModule prefork.c>
    StartServers            8
    MinSpareServers         5
    MaxSpareServers        20
    ServerLimit           256
    MaxClients            256
    MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
    StartServers            4
    MaxClients            300
    MinSpareThreads        25
    MaxSpareThreads        75
    ThreadsPerChild        25
    MaxRequestsPerChild     0
</IfModule>

LoadModule log_config_module        modules/mod_log_config.so
LoadModule setenvif_module          modules/mod_setenvif.so
LoadModule mime_magic_module        modules/mod_mime_magic.so
LoadModule mime_module              modules/mod_mime.so
LoadModule proxy_module             modules/mod_proxy.so
LoadModule dir_module               modules/mod_dir.so
LoadModule rewrite_module           modules/mod_rewrite.so
LoadModule headers_module           modules/mod_headers.so
LoadModule extract_forwarded_module modules/mod_extract_forwarded.so

TypesConfig     /etc/mime.types
ServerRoot      "/etc/httpd"
MIMEMagicFile   conf/magic
PidFile         run/httpd.pid
User            apache
Group           apache
ServerTokens    ProductOnly
TraceEnable     off
FileETag        None
LogLevel        warn
ErrorLog        syslog
MEForder        refuse,accept
MEFrefuse       all
MEFaccept       all
SetEnvIf        X-Forwarded-Proto https HTTPS=on
SetEnvIf        X-Forwarded-For   ".+"  forwarded
RewriteEngine   on
RewriteRule     ^(.*) - [E=CLIENT_ADDR:%{REMOTE_ADDR},L]
RequestHeader   set X-Forwarded-For "%{CLIENT_ADDR}e" env=!forwarded

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

Include conf/virtual_host.conf
上記の設定ファイルは、基本的なセキュリティやELBの利用などを考慮しつつ、
できるだけ最低限のものにしたつもりですが、改めて精査しておこうと思います。

あとは、本ブログのノウハウをスクリプトにするだけ...
--------
http://www.suz-lab.com

0 コメント: