さくら VPS + CentOS のチューニングや高速化で以前試せなかった設定

はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめで一般的なサーバーの設定方法を紹介しましたが、さくらのVPS の設定の中で APC の入れ方や nginx の入れ方などは試せなかったので追記としてメモしておきます。

今回も以下の記事を参考にさせて頂きました。ここに全てがあるので私の記事では作業をシンプルに紹介していきます。ここに書いてない物についてはこの記事で書いてみます。


CentOS 5.6 へアップグレードする

さくら VPS はこのブログを書いている現時点で契約した状態だと CentOS 5.5 がインストールされています。そのため CentOS を 5,6 にアップデートします。

まず自分の環境が CentOS 5.5 なのかを調べます。

1
rpm -qa | grep centos-release

以下のように出ると CentOS 5.5 ですね。

1
2
centos-release-notes-5.5-0
centos-release-5-5.el5.centos

以下のようにしてアップデートします。

1
yum upgrade

yum のリポジトリを追加してインストールできるソフトウェアのバリエーションを増やす

wget でリポジトリをダウンロードします。それぞれ URL がなくなった場合は元の記事で新しい URL をさがす方法がありますので参考にしてみてください。

1
2
3
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/el5.x86_64/remi-release-5-8.el5.remi.noarch.rpm
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

wget でダウンロードしたリポジトリを以下のように追加します。

1
rpm -Uvh epel-release-5-4.noarch.rpm remi-release-5-8.el5.remi.noarch.rpm rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

Fedora EPEL を無効化します。

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

以下のように epel を enabled=0 にします。

1
2
3
4
5
6
7
8
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

RPMForge を無効にします。

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

以下のように rpmforge を enabled=0 にします。

1
2
3
4
5
6
7
8
9
[rpmforge]
name = RHEL $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

LAMP 環境を一発で構築する

phpMyAdmin は自分で入れるのでそれ以外をインストールします。
Apache と PHP と MySQL が自動的にインストールされます。

1
yum --enablerepo=remi,epel,rpmforge install httpd-devel php-devel php-mysql php-pear mysql-server

Apache のモジュールを停止する

Apache の設定は以下でやります。

1
sudo vi /etc/httpd/conf/httpd.conf

私もひとつずつ調べならが停止したら参考記事のようなモジュール設定になりました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#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

mod_autoindex を無効にしたので以下のように関連項目を ifModule で囲います。

592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
<IfModule mod_autoindex.c>
        IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
        #
        # AddIcon* directives tell the server which icon to show for different
        # files or filename extensions.  These are only displayed for
        # FancyIndexed directories.
        #
        AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
 
        AddIconByType (TXT,/icons/text.gif) text/*
        AddIconByType (IMG,/icons/image2.gif) image/*
        AddIconByType (SND,/icons/sound2.gif) audio/*
        AddIconByType (VID,/icons/movie.gif) video/*
 
        AddIcon /icons/binary.gif .bin .exe
        AddIcon /icons/binhex.gif .hqx
        AddIcon /icons/tar.gif .tar
        AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
        AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
        AddIcon /icons/a.gif .ps .ai .eps
        AddIcon /icons/layout.gif .html .shtml .htm .pdf
        AddIcon /icons/text.gif .txt
        AddIcon /icons/c.gif .c
        AddIcon /icons/p.gif .pl .py
        AddIcon /icons/f.gif .for
        AddIcon /icons/dvi.gif .dvi
        AddIcon /icons/uuencoded.gif .uu
        AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
        AddIcon /icons/tex.gif .tex
        AddIcon /icons/bomb.gif core
 
        AddIcon /icons/back.gif ..
        AddIcon /icons/hand.right.gif README
        AddIcon /icons/folder.gif ^^DIRECTORY^^
        AddIcon /icons/blank.gif ^^BLANKICON^^
 
        #
        # DefaultIcon is which icon to show for files which do not have an icon
        # explicitly set.
        #
        DefaultIcon /icons/unknown.gif
 
        #
        # AddDescription allows you to place a short description after a file in
        # server-generated indexes.  These are only displayed for FancyIndexed
        # directories.
        # Format: AddDescription "description" filename
        #
        #AddDescription "GZIP compressed document" .gz
        #AddDescription "tar archive" .tar
        #AddDescription "GZIP compressed tar archive" .tgz
 
        #
        # ReadmeName is the name of the README file the server will look for by
        # default, and append to directory listings.
        #
        # HeaderName is the name of a file which should be prepended to
        # directory indexes. 
        ReadmeName README.html
        HeaderName HEADER.html
 
        #
        # IndexIgnore is a set of filenames which directory indexing should ignore
        # and not include in the listing.  Shell-style wildcarding is permitted.
        #
        IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>

mod_proxy を無効にしたので以下のコマンドを実行します。

1
mv /etc/httpd/conf.d/proxy_ajp.conf /etc/httpd/conf.d/proxy_ajp.conf.stop

APC をインストールする

APC は PHP の中間コードのキャッシュや最適化を行う拡張モジュールだそうです。まず以下のコマンドでインストールします。

1
pecl install APC

いろいろ聞かれるので進めていくと以下のようなメッセージが表示されます。

Build process completed successfully
Installing ‘/usr/lib64/php/modules/apc.so’
Installing ‘/usr/include/php/ext/apc/apc_serializer.h’
install ok: channel://pecl.php.net/APC-3.1.9
configuration option “php_ini” is not set to php.ini location
You should add “extension=apc.so” to php.ini

php.ini に extension=apc.so という記述を追加しろとのころです。

1
sudo vi /etc/php.ini

どこでも良いですが末尾に記述を追加します。

1
extension=apc.so

以下のコマンドでアップグレードできます。

1
sudo pecl upgrade apc

使わないときは先ほど php.ini に追加した行を削除すれば問題ないと思います。

nginx をインストールする

Apache で動的部分を処理して、静的ファイルは nginx で処理するようにできます。

mod_rpaf のインストール

まず以下のようにしてファイルをダウンロードして展開します。

1
2
3
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xvzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6

次に Makefile を編集します。

1
vi Makefile

以下のようになっているところを。

1
APXS2=$(shell which apxs2)

以下のように変更します。

1
APXS2=/usr/sbin/apxs

以下のコマンドを実行すればインストール完了です。

1
2
make rpaf-2.0
sudo make install-2.0

nginx のインストール

epel リポジトリから yum でインストールします。

1
sudo yum --enablerepo=remi,epel,rpmforge install nginx

nginx の設定ファイルを編集します。

1
sudo vi /etc/nginx/nginx.conf

以下のようになっている部分を。

1
2
3
4
5
6
7
8
9
10
11
        listen       80;
        server_name  _;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

以下のように設定します。server_name と location の root を書き換えておきました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        listen       80;
        server_name  example.com;
 
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host            $http_host;
        proxy_redirect      off;
        proxy_max_temp_file_size    0;
 
        location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
            root    /var/www/;
            index   index.html;
            ssi     on;
            break;
        }
 
        location / {
            proxy_pass  http://127.0.0.1:8080;
            break;
        }

nginx のバーチャルホスト設定

以下のファイルを編集します。

1
sudo vi /etc/nginx/conf.d/virtual.conf

中にサンプルがありますので、それらと参考サイトを参考に以下のように書きます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
    listen       80;
    server_name  weble.org;
 
    location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
        root    /var/www/vhosts/weble.org;
        index   index.html;
        ssi     on;
        break;
    }
 
    location / {
        proxy_pass  http://127.0.0.1:8080;
        break;
    }
}

設定が終わったら nginx を起動します。

1
sudo /etc/init.d/nginx start

以下のサイトが大変参考になりました。

その他参考になるページ

コメント

コメントは受け付けていません。