GUiLZ Project Personal & Experimental Blog



GMOクラウド VPS 設定記事一覧

 

前回記事、GMOクラウド VPSを借りてまず行う初期設定内容 から間が空いてしまったけれど、今回はWebとメールサーバーの設定編を。

とはいえ、自分の場合メールサービスとしてGoogle Appsを利用しているため、VPS上では問い合わせやログ等を送れればいいだけなので、そっちは超簡単な設定だけで終わらせてますが……。

ということで、続きは以下から。割と長いです。

スポンサードリンク

 

インストール前のレポジトリ追加設定

ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) 様を参考に、Webサーバー環境を構築します。既に 先の記事 でCentOSのアップグレードは行っているため、まず

# yum check-update

して、

# yum update

で、各パッケージのアップデートをしておきます。

 

その後レポジトリを追加します。現時点でCentOS 6系の最新版は

  • epel
    http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • remi
    http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
  • RPMForge
    http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

のようです。

 

全てのデータをダウンロードしてきます。

# cd /usr/local/src
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

 

各レポジトリを追加します。

# rpm -Uvh epel-release-6-8.noarch.rpm remi-release-6.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

 

これまた 参考サイト様 の記事通り、レポジトリの無効化をしておきます。

# vi /etc/yum.repos.d/epel.repo

として

[epel]

~省略~

#enabled=1
enabled=0

~省略~

 

epelを無効化した後、

# vi /etc/yum.repos.d/rpmforge.repo

として

### Name: RPMforge RPM Repository for RHEL 6 - dag
### URL: http://rpmforge.net/
[rpmforge]

~省略~

#enabled = 1
enabled = 0

~省略~

 

rpmforgeも無効化します。remiはデフォルトで無効になっているので、これでレポジトリの追加は完了です。

 

Apache・PHP・MySQLのインストール

Web環境のインストールを行います。phpMyAdminだけは最新版を手動で入れたいので、ここではインストールしません。そうするといくつかのライブラリが自動で入らないので、以下のように指定して入れます。

# yum --enablerepo=remi,epel,rpmforge install httpd-devel php php-devel php-pear php-mcrypt php-mbstring php-mysql php-pdo php-gd mod_ssl mysql-server

 

とすると、うちのGMOクラウドVPSでは、これだけのパッケージが入るようです。

パッケージ名アーキテクチャバージョンレポジトリ
aprx86_641.3.9-5.el6_2base
apr-develx86_641.3.9-5.el6_2base
apr-utilx86_641.3.9-3.el6_0.1base
apr-util-develx86_641.3.9-3.el6_0.1base
apr-util-ldapx86_641.3.9-3.el6_0.1base
autoconfnoarch2.63-5.1.el6base
automakenoarch1.11.1-4.el6base
compat-mysql51x86_645.1.54-1.el6.remiremi
cyrus-sasl-develx86_642.1.23-13.el6_3.1base
db4-cxxx86_644.7.25-18.el6_4base
db4-develx86_644.7.25-18.el6_4base
expat-develx86_642.0.1-11.el6_2base
freetypex86_642.3.11-14.el6_3.1base
httpdx86_642.2.15-30.el6.centosupdates
httpd-develx86_642.2.15-30.el6.centosupdates
httpd-toolsx86_642.2.15-30.el6.centosupdates
libaiox86_640.3.107-10.el6base
libjpeg-turbox86_641.2.1-3.el6_5updates
libmcryptx86_642.5.8-9.el6epel
libpngx86_642:1.2.49-1.el6_2base
libtool-ltdlx86_642.2.6-15.5.el6base
libX11x86_641.5.0-4.el6base
libX11-commonnoarch1.5.0-4.el6base
libXaux86_641.0.6-4.el6base
libxcbx86_641.8.1-1.el6base
libXpmx86_643.5.10-2.el6base
libxsltx86_641.1.26-2.el6_3.1base
mailcapnoarch2.1.31-2.el6base
mod_sslx86_641:2.2.15-30.el6.centosupdates
mysqlx86_645.5.38-1.el6.remiremi
mysql-libsx86_645.5.38-1.el6.remiremi
mysql-serverx86_645.5.38-1.el6.remiremi
openldap-develx86_642.4.23-34.el6_5.1updates
perl-DBD-MySQLx86_644.013-3.el6base
perl-DBIx86_641.609-4.el6base
phpx86_645.4.30-1.el6.remiremi
php-clix86_645.4.30-1.el6.remiremi
php-commonx86_645.4.30-1.el6.remiremi
php-develx86_645.4.30-1.el6.remiremi
php-gdx86_645.4.30-1.el6.remiremi
php-mbstringx86_645.4.30-1.el6.remiremi
php-mcryptx86_645.4.30-1.el6.remiremi
php-mysqlx86_645.4.30-1.el6.remiremi
php-pdox86_645.4.30-1.el6.remiremi
php-pearnoarch1:1.9.4-28.el6.remiremi
php-processx86_645.4.30-1.el6.remiremi
php-xmlx86_645.4.30-1.el6.remiremi
t1libx86_645.1.2-6.el6_2.1base

 

初回インストール時は以下のように証明鍵の許可をするかどうかの表示が出ますが、yを押して許可します。

warning: rpmts_HdrFromFdno: Header V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Importing GPG key 0x00F97F56:
 Userid : Remi Collet <RPMS@FamilleCollet.com>
 Package: remi-release-6.5-1.el6.remi.noarch (installed)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Is this ok [y/N]: y

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
 Userid : EPEL (6) <epel@fedoraproject.org>
 Package: epel-release-6-8.noarch (installed)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Is this ok [y/N]: y

 

Apacheの設定

さて、ここからはhttpdの設定を詰める作業に入るわけですが、使用環境によって内容は大幅に変わってくることもありますし、私の場合は既に作成したレシピがあるので、そちらをコピーして利用します。httpdの最適化については、参考サイト様 に設定のヒントがあるため、そちらをご確認ください。

参考までに、自分の httpd.confのモジュール読み込み設定は、

LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
#LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

 

こんな感じにしています。そのままコピペしてきたので見づらいですが、安全寄りで不要な物を少しだけコメントアウトしています。

また、preforkの値は、メモリ2GBの環境なので、ちょっと大きめの設定にしています。

<IfModule prefork.c>
StartServers      10
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       100
MaxRequestsPerChild  1000
</IfModule>

 

最適化以外の部分については、気休めですがセキュリティ対策としてApacheから出す情報を減らします。

# vi /etc/httpd/conf/httpd.conf

 

として、

ServerTokens ProductOnly
ServerSignature Off 

 

を設定します。両方ともデフォルト値が設定されているので、検索して書き換えてください。

また、VirtualHostで動作させることを前提としているため、IPアドレス直にアクセスしてくる接続を拒否します。(IPアドレスに直に叩いてくるのは、脆弱性を探しているbotなどがほとんどですし)

/etc/httpd/conf/httpd.conf の末尾辺りに

<VirtualHost *:80>
    ServerName any
    DocumentRoot /tmp
</VirtualHost>

 <Directory /tmp>
 order deny,allow
 deny from all
 </Directory>

 

と記載します。これとは別に、例えば

<Directory "/home/user/public_html">
    Options Includes FollowSymLinks ExecCGI MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    DocumentRoot /home/user/public_html
    ServerName example.com
    ServerAlias www.example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log combined env=!no_log
</VirtualHost>

 

のように、VirtualHostでアクセスするドメイン設定を書いておきます。これでIPアドレスを入力してアクセスした時、どんなアドレスを入力しても403 ForbiddenになればOKです。

 

PHPの設定

# vi /etc/php.ini

 

として、設定を変更します。自分が変更する内容としては

memory_limit = 256M
post_max_size = 128M
upload_max_filesize = 128M
max_file_uploads = 100
mysql.cache_size = 4000
mysqli.cache_size = 4000

 

とするくらいです(全てデフォルト値が設定されているので検索して書き換えてください)。mbstring設定は、最近のCMS等ではあまり設定する必要がないので、ここでは変更しません。

 

MySQLの設定

通常ならデフォルト設定のままで問題ないとは思いますが、パフォーマンス調整として、以下の内容を /etc/my.cnf の [mysqld] セクション末尾あたりに追加しています。

# vi /etc/my.cnf

 

query_cache_size=128M
query_cache_limit=1M
query_cache_min_res_unit=4k
query_cache_type=1
tmp_table_size=128M
max_heap_table_size=128M
table_cache=128
max_allowed_packet=16M
sort_buffer=1M
read_buffer_size=1M
read_rnd_buffer_size=1M
join_buffer_size=1M
key_buffer_size=32M

 

その後は 参考サイト様 のように初期設定を行うか、当ブログ記事 のようにデータベースのインポートを行います。

 

phpMyAdminのインストールと設定

http://www.phpmyadmin.net/home_page/downloads.php

から、使用するPHP・MySQLのバージョンにあわせたものを選びます。remiパッケージでインストールされるバージョンはPHP 5.4系・MySQL 5.5系なので、現時点で最新の 4.2.5のbz2圧縮版をダウンロードしました。

ファイルをサーバーに転送して、解凍ならびにディレクトリ名を変更します。phpMyAdminを狙った攻撃も多いので、気休め程度ですが名前は分かりづらくしておきます。(deathtrap は例ですので、実際の運用時は別の分かりづらい名前にすることをお勧めします)

# cd /usr/local/src
# tar xvjf phpMyAdmin-4.2.5-all-languages.tar.bz2
# mv phpMyAdmin-4.2.5-all-languages deathtrap

 

その後、ServersMan@VPS(CentOS)に phpMyAdmin をインストールする。 様を参考に、設定ファイルをサンプルからコピーし、blowfish_secretを設定します。

# cd deathtrap
# cp config.sample.inc.php config.inc.php
# vi config.inc.php

 

として、17行目の

$cfg['blowfish_secret'] = 'a8b7c6d'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

 

内の a8b7c6d を、64文字までのランダムな文字列に変更します。

さらに自分の場合、自宅の固定IPからの接続のみ許可するよう、.htaccessファイルを作成します。

# vi .htaccess

 

内容はこんな感じ。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow
allow from 許可するIPアドレス
deny from all 

 

固定IPを使っていない場合は、BASIC認証あたりを追加するといいでしょう。

ここまで終わったら、Webサーバーのある場所にディレクトリを移動します。(移動先は例です)

# cd ..
# mv deathtrap /home/user/public_html

 

APCのインストールと設定

高速化のため、APCをインストールします。

# yum --enablerepo=remi,epel,rpmforge install php-pecl-apc-devel

 

パッケージ名アーキテクチャバージョンレポジトリ
php-pecl-apcx86_643.1.15-0.4.20130912.el6.remi.5.4remi
php-pecl-apc-develx86_643.1.15-0.4.20130912.el6.remi.5.4remi

 

が入ります。その後設定ファイルを編集します。

# vi /etc/php.d/apc.ini

 

自分の場合は余裕を持たせて、apc.shm_size を128MBに設定します。

apc.shm_size=128M

 

管理用のスクリプトが

/usr/share/doc/php-pecl-apc-3.1.15/apc.php

 

にあるので、Webからアクセスできる場所にコピーします。(以下は例)

# mkdir /home/user/public_html/apc
# cp /usr/share/doc/php-pecl-apc-3.1.15/apc.php /home/user/public_html/apc

 

同じディレクトリに、管理者機能を使うための設定ファイルを作成します。

# cd /home/user/public_html/apc
# vi apc.conf.php

 

内容はこんな感じです。

<?php
defaults('ADMIN_USERNAME','ユーザー名を入力');
defaults('ADMIN_PASSWORD','パスワードを入力');
?>

 

こちらもphpMyAdmin同様、固定IPアドレスからのみアクセスするため、

# vi .htaccess

 

として、以下のようにアクセス制限をします。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
Options -Indexes
order deny,allow
allow from 許可するIPアドレス
deny from all 

 

ImageMagickのインストール

だいたいはGDで事足りることが多いですが、たまに使うこともあるので、ImageMagickもインストールしておきます。

# yum --enablerepo=remi,epel,rpmforge install php-pecl-imagick

 

これ一発で全て入るので便利。

パッケージ名アーキテクチャバージョンレポジトリ
atkx86_641.30.0-1.el6base
avahi-libsx86_640.6.25-12.el6_5.1updates
cairox86_641.8.8-3.1.el6base
ConsoleKitx86_640.4.1-3.el6base
ConsoleKit-libsx86_640.4.1-3.el6base
cups-libsx86_641:1.4.2-50.el6_4.5base
dbusx86_641:1.2.24-7.el6_3base
eggdbusx86_640.6-3.el6base
fftwx86_643.2.1-3.1.el6base
fontconfigx86_642.8.0-3.el6base
GConf2x86_642.28.0-6.el6base
ghostscriptx86_648.70-19.el6base
ghostscript-fontsnoarch5.50-23.1.el6base
gnutlsx86_642.8.5-14.el6_5updates
gtk2x86_642.20.1-4.el6base
hicolor-icon-themenoarch0.11-1.1.el6base
ilmbasex86_641.0.1-6.1.el6base
ImageMagick-last-libsx86_646.8.9.0-1.el6.remiremi
jasper-libsx86_641.900.1-15.el6_1.1base
lcms2x86_642.3-2.el6epel
libcrocox86_640.6.2-5.el6base
libfontencx86_641.0.5-2.el6base
libgompx86_644.4.7-4.el6base
libgsfx86_641.14.15-5.el6base
libICEx86_641.0.6-1.el6base
libIDLx86_640.8.13-2.1.el6base
librsvg2x86_642.26.0-6.el6_5.3updates
libSMx86_641.2.1-2.el6base
libthaix86_640.1.12-3.el6base
libtiffx86_643.9.4-10.el6_5updates
libwebpx86_640.3.1-2.el6.remiremi
libwmf-litex86_640.2.8.4-22.el6.centosbase
libXcompositex86_640.4.3-4.el6base
libXcursorx86_641.1.13-6.20130524git8f677eaea.el6base
libXdamagex86_641.1.3-4.el6base
libXextx86_641.3.1-2.el6base
libXfixesx86_645.0-3.el6base
libXfontx86_641.4.5-3.el6_5updates
libXftx86_642.3.1-2.el6base
libXix86_641.6.1-3.el6base
libXineramax86_641.1.2-2.el6base
libXrandrx86_641.4.0-1.el6base
libXrenderx86_640.9.7-2.el6base
libXtx86_641.1.3-1.el6base
OpenEXR-libsx86_641.6.1-8.1.el6base
ORBit2x86_642.14.17-3.2.el6_3base
pangox86_641.28.1-7.el6_3base
php-pecl-imagickx86_643.1.2-3.el6.remi.5.4remi
pixmanx86_640.26.2-5.1.el6_5updates
polkitx86_640.96-5.el6_4base
sgml-commonnoarch0.6.3-32.el6base
urw-fontsnoarch2.4-10.el6base
xorg-x11-font-utilsx86_641:7.2-11.el6base

 

ここまでで一通りの設定は終わったので、サービスを再起動します。(起動してなかった場合は停止に失敗しますが、その後起動していればOK)

# service httpd restart
# service mysqld restart

 

問題なく立ち上がり、動作に問題がなければ、ApacheとMySQLをサーバー起動時に自動起動されるように設定します。

# chkconfig httpd on
# chkconfig mysqld on

 

Postfixの設定

Postfixはデフォルトでインストールされているため、特に追加パッケージを入れたりする必要はありません。設定内容としては、冒頭でも書いた通りサーバー内部からのメールを送るためだけに利用するので、外部中継も行わず(よってポートも開けない)、POP3・IMAPサーバーも立てません。

# vi /etc/postfix/main.cf

 

として、以下の辺りを変更します。(myhostnameやmydomainはご自身のドメインを適切に設定しておいてください)

smtpd_banner = $myhostname ESMTP unknown
mydestination = localhost

 

mydestinationは、GMOクラウド VPS 以外で、逆引きやドメイン設定をある程度自由に変更できるところならあまり気にしなくても問題ないのですが、Google Apps利用ドメイン名と全く同じだったりすると、デフォルトでは自分宛ドメインのメールを全て受け取ってしまうため、localhostのみとします。

また、次の記事で書く予定ですが、FUSIONの月額無料050電話番号+Asteriskで構築するFAXサーバーのため、1通あたりのメール容量制限を緩和しておきます(こんなに大きくしなくてもいいとは思いますが)。不要な方は飛ばしてください。

message_size_limit = 25600000

 

その後、メール転送の設定をしておきます。

# vi /etc/aliases

 

として、末尾辺りに転送先を追加します。(内容は例です)

root:      root@example.com
FaxMaster: root

 

FaxMaster は例によってFAXサーバー用の設定ですので、不要な方は書かなくても大丈夫です。ちなみに、このアドレス宛にFAX受信通知が届きます。

設定が終わったら、

# service postfix restart

 

としてサービスを再起動しておきます。(reloadでもいいとは思いますが、念のために)

 

Logwatchの設定

ログ監視ツール logwatch のインストールと設定 ~ CentOS6 様サイトを参考に、

# yum --enablerepo=remi,epel,rpmforge install logwatch

 

として、パッケージをインストールします。

パッケージ名アーキテクチャバージョンレポジトリ
logwatchnoarch7.3.6-52.el6base
mailxx86_6412.4-7.el6base
perl-Date-Manipnoarch6.24-1.el6base
perl-YAML-Syckx86_641.07-4.el6base

 

こんな感じでパッケージがインストールされたら、

# vi /etc/logwatch/conf/logwatch.conf

 

として、以下の2行を末尾に追加します。

Archives = Yes
Detail = High

 

これで圧縮されたログファイルも対象とし、より詳細な情報が記載されたメールが届くようになります。

設定を確認するため、

# logwatch --print > /root/testlogwatch.log

 

などとしてログを出力して、

# less /root/testlogwatch.log

 

で内容を確認し、ちゃんと出力されているか確認してください。

 

さいごに

かなり長い記事となりましたが、最後までお読みいただきありがとうございました。読むのも嫌になりそうですが、メモからこれだけ書き起こすのも嫌になりそうでしたw (Asterisk編はメモ段階でこの記事に近いぐらい長いので、書き起こすのも読むのも大変になりそうな気が)

内容としては、一部例を交えてたり設定ファイルの内容をはしょった部分もあるとはいえ、ほぼこんな設定を行っています。細かい所で記述抜けがあったりなどするかもしれませんが、動かないなどの問題があればコメント等からお知らせいただければ幸いです。

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。

当サイトのコメント欄は承認制となっております。また、日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

スポンサードリンク

Twitter
利用中のサービス

GUiLZ Project では、以下のサービスを利用しています。


巡回先サイト様
アーカイブ