使えるねっとからServersMan VPS@dtiに引越し

使えるねっとのVPSは結構安定してたんだけど、かけてる値段ほど使い切ってなかったので月額490円のdtiに引っ越すことにした。

使えるねっとでは

  1. zabbixサーバー
  2. zencartを使ったショッピングサイトのテストサーバー
  3. sendmailを使ったメール配信サービスのテストサーバー

を運用してたので、これらを移行することにする。

契約したのはServersMan VPS Entryプランのシンプルプラン

何はともあれ最新版に

yum -y update

暫定でのセキュリティ対策

後々かっちりやるけど設定が完了するまでの暫定セキュリティを。

sshdをpubkeyauthに

/etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PermitRootLogin no

puttyでキー作成はこのへん参考に。

リモートログイン用のアカウントの作成と公開鍵の登録

useradd remoteuser
passwd remoteuser
su remoteuser
cd ~
mkdir .ssh
chmod 700 .ssh
echo '<putty-genで作った公開鍵>' >id_rsa.pub
ssh-keygen -i -f id_rsa.pub >>authorized_keys
chmod 400 authorized_keys

rpmforgeリポジトリのインストール

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

/etc/yum.repos.d/rpmforge.repo のenabledは0に設定しておく。

mysqldとphpのインストール

mysqlサーバーとphpをインストール。ついでにmod_sslも。

yum install php mysql-server php-pear mod_ssl

ついでにphpアクセラレータのAPCをインストールしとく。

yum install -y pecl php-devel httpd-devel
pecl install APC
echo 'extension=apc.so' >/etc/php.d/apc.ini
mysqlの設定

mysqlサーバーの設定をしておく
/etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
default-character-set = utf8

[mysql.server]
user=mysql
basedir=/var/lib
default-character-set = utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

default-character-setを設定する。

mysqlの起動とパスワードの設定
mysqladmin -u root password 'mysqlpassword'
phpmyadminのインストールと設定
yum install --enablerepo=rpmforge -y phpmyadmin

/usr/share/phpmyadmin/config.inc.phpの$cfg['blowfish_secret']に適当な文字列を入力しておく。

sslでのみ使えるようにhttp/httpsディレクトリを分けておく。

mkdir -p /var/www/htmls
chown -R apache.apache /var/www/htmls

/etc/httpd/conf.d/ssl.conf

DocumentRoot "/var/www/htmls"

で、シンボリックリンクを。

ln -s /usr/share/phpmyadmin /var/www/htmls/phpmyadmin

このままだとsession_startでPermission deniedが出る

[Sat Aug 14 13:33:07 2010] [error] [client 202.32.230.207] PHP Warning:  session_start() [<a href='function.session-start'>function.session-start</a>]: open(/var/lib/php/session/sess_pqic2r8at6tgfmubgoinpa26t654olrt, O_RDWR) failed: Permission denied (13) in /usr/share/phpmyadmin/libraries/session.inc.php on line 87
[Sat Aug 14 13:33:07 2010] [error] [client 202.32.230.207] PHP Warning:  Unknown: open(/var/lib/php/session/sess_pqic2r8at6tgfmubgoinpa26t654olrt, O_RDWR) failed: Permission denied (13) in Unknown on line 0
[Sat Aug 14 13:33:07 2010] [error] [client 202.32.230.207] PHP Warning:  Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

これは/var/lib/php/sessionがroot.apache-770で、apacheの起動ユーザーがdaemonになっててアンマッチになってるから。

ここはapacheの起動ユーザーをいじることに。
/etc/httpd/conf/httpd.conf

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
#  . On HPUX you may not be able to use shared memory as nobody, and the
#    suggested workaround is to create a user www and use that user.
#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
#  when the value of (unsigned)Group is above 60000;
#  don't use Group #-1 on these systems!
#
User apache
Group apache

で、apache再起動。

/etc/init.d/httpd restart

httpdの設定とVirtualHost

httpdをざざっと設定していく

/etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
#httpd2以降からAllowOverrideのデフォルトがNoneになってるらしい。
    AllowOverride All
</Directory>


#virtualHost用のホスト設定
NameVirtualHost 182.163.78.148:80
NameVirtualHost 182.163.78.148:443

続いてVirtualHostを設定していく。
設定ルールとして、

  1. ドメインの追加は vhost.<ドメイン名>.confファイルに
  2. VirtualHostのルートは/var/www/vhosts/<ドメイン名>に
  3. SSLのVirtualHostのルートは/var/www/svhosts/<ドメイン名>に
  4. VirtualHostのログは/var/log/httpd/<ドメイン名>/に落とす
  5. IPアドレスや未登録ホストから来た時の設定は default.vhost.confに*1
  6. 基本NameVirtualHostで指定しワイルドカードは使用しない。

ってとこで。

まずはデフォルト設定
/etc/httpd/conf.d/default.vhost.conf

<VirtualHost 182.163.78.148:80>
    ServerAdmin qyen.org@gmail.com
    DocumentRoot /var/www/html
    ServerName v-182-163-78-148.ub-freebit.net
</VirtualHost>

<VirtualHost *:443>
        ServerName v-182-163-78-148.ub-freebit.net
        SSLEngine off
        Redirect permanent / http://182.163.78.148/
</VirtualHost>

匿名でSSLにアクセスしてきたらデフォルトにリダイレクトするように設定。

mod_sslのVirtualHostの設定を殺す
/etc/httpd/conf.d/ssl.confのVirtualHostディレクティブをまるごと消す。

次にVirtualHostを設定
/etc/httpd/conf.d/vhost.nick-ziele.info.conf

<VirtualHost 182.163.78.148:80>
        ServerName www.nick-ziele.info
        ServerAlias www.nick-ziele.info nick-ziele.info

        CustomLog /var/log/httpd/nick-ziele.info/access_log combined
        DocumentRoot "/var/www/vhosts/nick-ziele.info"
        <Directory "/var/www/vhosts/nick-ziele.info">
                AllowOverride All
                allow from all
                Options Indexes Includes ExecCGI FollowSymLinks
        </Directory>
</VirtualHost>

<VirtualHost 182.163.78.148:443>
        ServerName www.nick-ziele.info
        ServerAlias www.nick-ziele.info nick-ziele.info

        SSLEngine off
#        SSLProtocol all -SSLv2
#        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

#        SSLCertificateFile /etc/httpd/ssl/nick-ziele.info/ssl.crt
#        SSLCertificateKeyFile /etc/httpd/ssl/nick-ziele.info/ssl.key
#        SSLCACertificateFile /etc/httpd/ssl/nick-ziele.info/ca.pem
#        SSLCertificateChainFile /etc/httpd/ssl/nick-jaguar.com/sub.class1.server.pem
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

        ErrorLog /var/log/httpd/nick-ziele.info/ssl_error_log
        CustomLog /var/log/httpd/nick-ziele.info/ssl_access_log combined

        DocumentRoot "/var/www/svhosts/nick-ziele.info"
        <Directory "/var/www/svhosts/nick-ziele.info">
                AllowOverride All
                allow from all
                Options Indexes Includes ExecCGI FollowSymLinks
        </Directory>
</VirtualHost>

SSLのキーが用意できるまでSSLEngineをoffで動作させとく。

ディレクトリを作成

mkdir -p /var/www/vhosts/nick-ziele.info
mkdir -p /var/www/svhosts/nick-ziele.info
mkdir -p /var/log/httpd/nick-ziele.info

サーバーを再起動。

/etc/init.d/httpd restart

*1:最初に読み込まれたVirtualHostがデフォルトとして使用されるので、ドメインのVirtualHostよりアルファベットで若い名前にしておく