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では、これだけのパッケージが入るようです。

パッケージ名 アーキテクチャ バージョン レポジトリ
apr x86_64 1.3.9-5.el6_2 base
apr-devel x86_64 1.3.9-5.el6_2 base
apr-util x86_64 1.3.9-3.el6_0.1 base
apr-util-devel x86_64 1.3.9-3.el6_0.1 base
apr-util-ldap x86_64 1.3.9-3.el6_0.1 base
autoconf noarch 2.63-5.1.el6 base
automake noarch 1.11.1-4.el6 base
compat-mysql51 x86_64 5.1.54-1.el6.remi remi
cyrus-sasl-devel x86_64 2.1.23-13.el6_3.1 base
db4-cxx x86_64 4.7.25-18.el6_4 base
db4-devel x86_64 4.7.25-18.el6_4 base
expat-devel x86_64 2.0.1-11.el6_2 base
freetype x86_64 2.3.11-14.el6_3.1 base
httpd x86_64 2.2.15-30.el6.centos updates
httpd-devel x86_64 2.2.15-30.el6.centos updates
httpd-tools x86_64 2.2.15-30.el6.centos updates
libaio x86_64 0.3.107-10.el6 base
libjpeg-turbo x86_64 1.2.1-3.el6_5 updates
libmcrypt x86_64 2.5.8-9.el6 epel
libpng x86_64 2:1.2.49-1.el6_2 base
libtool-ltdl x86_64 2.2.6-15.5.el6 base
libX11 x86_64 1.5.0-4.el6 base
libX11-common noarch 1.5.0-4.el6 base
libXau x86_64 1.0.6-4.el6 base
libxcb x86_64 1.8.1-1.el6 base
libXpm x86_64 3.5.10-2.el6 base
libxslt x86_64 1.1.26-2.el6_3.1 base
mailcap noarch 2.1.31-2.el6 base
mod_ssl x86_64 1:2.2.15-30.el6.centos updates
mysql x86_64 5.5.38-1.el6.remi remi
mysql-libs x86_64 5.5.38-1.el6.remi remi
mysql-server x86_64 5.5.38-1.el6.remi remi
openldap-devel x86_64 2.4.23-34.el6_5.1 updates
perl-DBD-MySQL x86_64 4.013-3.el6 base
perl-DBI x86_64 1.609-4.el6 base
php x86_64 5.4.30-1.el6.remi remi
php-cli x86_64 5.4.30-1.el6.remi remi
php-common x86_64 5.4.30-1.el6.remi remi
php-devel x86_64 5.4.30-1.el6.remi remi
php-gd x86_64 5.4.30-1.el6.remi remi
php-mbstring x86_64 5.4.30-1.el6.remi remi
php-mcrypt x86_64 5.4.30-1.el6.remi remi
php-mysql x86_64 5.4.30-1.el6.remi remi
php-pdo x86_64 5.4.30-1.el6.remi remi
php-pear noarch 1:1.9.4-28.el6.remi remi
php-process x86_64 5.4.30-1.el6.remi remi
php-xml x86_64 5.4.30-1.el6.remi remi
t1lib x86_64 5.1.2-6.el6_2.1 base

 

初回インストール時は以下のように証明鍵の許可をするかどうかの表示が出ますが、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-apc x86_64 3.1.15-0.4.20130912.el6.remi.5.4 remi
php-pecl-apc-devel x86_64 3.1.15-0.4.20130912.el6.remi.5.4 remi

 

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

# 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

 

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

パッケージ名 アーキテクチャ バージョン レポジトリ
atk x86_64 1.30.0-1.el6 base
avahi-libs x86_64 0.6.25-12.el6_5.1 updates
cairo x86_64 1.8.8-3.1.el6 base
ConsoleKit x86_64 0.4.1-3.el6 base
ConsoleKit-libs x86_64 0.4.1-3.el6 base
cups-libs x86_64 1:1.4.2-50.el6_4.5 base
dbus x86_64 1:1.2.24-7.el6_3 base
eggdbus x86_64 0.6-3.el6 base
fftw x86_64 3.2.1-3.1.el6 base
fontconfig x86_64 2.8.0-3.el6 base
GConf2 x86_64 2.28.0-6.el6 base
ghostscript x86_64 8.70-19.el6 base
ghostscript-fonts noarch 5.50-23.1.el6 base
gnutls x86_64 2.8.5-14.el6_5 updates
gtk2 x86_64 2.20.1-4.el6 base
hicolor-icon-theme noarch 0.11-1.1.el6 base
ilmbase x86_64 1.0.1-6.1.el6 base
ImageMagick-last-libs x86_64 6.8.9.0-1.el6.remi remi
jasper-libs x86_64 1.900.1-15.el6_1.1 base
lcms2 x86_64 2.3-2.el6 epel
libcroco x86_64 0.6.2-5.el6 base
libfontenc x86_64 1.0.5-2.el6 base
libgomp x86_64 4.4.7-4.el6 base
libgsf x86_64 1.14.15-5.el6 base
libICE x86_64 1.0.6-1.el6 base
libIDL x86_64 0.8.13-2.1.el6 base
librsvg2 x86_64 2.26.0-6.el6_5.3 updates
libSM x86_64 1.2.1-2.el6 base
libthai x86_64 0.1.12-3.el6 base
libtiff x86_64 3.9.4-10.el6_5 updates
libwebp x86_64 0.3.1-2.el6.remi remi
libwmf-lite x86_64 0.2.8.4-22.el6.centos base
libXcomposite x86_64 0.4.3-4.el6 base
libXcursor x86_64 1.1.13-6.20130524git8f677eaea.el6 base
libXdamage x86_64 1.1.3-4.el6 base
libXext x86_64 1.3.1-2.el6 base
libXfixes x86_64 5.0-3.el6 base
libXfont x86_64 1.4.5-3.el6_5 updates
libXft x86_64 2.3.1-2.el6 base
libXi x86_64 1.6.1-3.el6 base
libXinerama x86_64 1.1.2-2.el6 base
libXrandr x86_64 1.4.0-1.el6 base
libXrender x86_64 0.9.7-2.el6 base
libXt x86_64 1.1.3-1.el6 base
OpenEXR-libs x86_64 1.6.1-8.1.el6 base
ORBit2 x86_64 2.14.17-3.2.el6_3 base
pango x86_64 1.28.1-7.el6_3 base
php-pecl-imagick x86_64 3.1.2-3.el6.remi.5.4 remi
pixman x86_64 0.26.2-5.1.el6_5 updates
polkit x86_64 0.96-5.el6_4 base
sgml-common noarch 0.6.3-32.el6 base
urw-fonts noarch 2.4-10.el6 base
xorg-x11-font-utils x86_64 1:7.2-11.el6 base

 

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

 

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

パッケージ名 アーキテクチャ バージョン レポジトリ
logwatch noarch 7.3.6-52.el6 base
mailx x86_64 12.4-7.el6 base
perl-Date-Manip noarch 6.24-1.el6 base
perl-YAML-Syck x86_64 1.07-4.el6 base

 

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

# 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 では、以下のサービスを利用しています。


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