はじめてのさくら VPS + CentOS の初期設定からチューニングなどの作業まとめ

今まで共用サーバーしか使ったことがありませんでしたが多くのサービスを作る上で専有サーバーを使ったりさくらのVPS を使ったりできるようになれば行けないと思ったので、丸1日かけて勉強しました。CUI でのサーバー管理は初めてなので、間違っているところがあったら教えてください。

この記事では実用としては問題ないサーバーの構築をまとめています。さらに高速化やカスタマイズについては今後の記事を参考にしてください。

今回メインで参考にさせて頂いた記事は以下です。

追記: この記事に書いてある通りの設定で良ければVPSの設定代行など承ります。その後の調整等や維持管理はご自分でできる方に限ります。料金についてや詳しいお話についてはお問い合わせください。


root 権限では危ないのでユーザーを作成する

ここでは hoge というユーザーを作成します。

1
2
adduser hoge
passwd hoge

以下のように2回パスワードを求められます。

Changing password for user hoge.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

以下のサイトが参考になりました。
Linuxのお勉強(CentOSとApache):CentOSでユーザーを追加・削除する(LINUX) – livedoor Blog(ブログ)

.bashrc を設定する

以下のように作業がしやすいように .bashrc を設定しておきます。エイリアスの設定などありましたらここで設定しておきます。

1
vi ~/.bashrc

.bashrc の変更が終われば以下のようにして再読込をします。

1
source .bashrc

以下のページが参考になりました。
.bashrc が反映されない件 – たつこの部屋

vim をインストールする

SSH で作業をする際に個人的にはカラフルな方が楽しいです。ヘテムルなどは vi で作業をすると最初からいろが付いていましたが、実は vim をインストールしてくれて vi にエイリアスをかけてくれていたからみたいです。なのでカラフルで作業したいなら自分で vim をインストールします。

1
yum -y install vim-enhanced

終わったら .bashrc などに以下のようにしてエイリアスを設定しておきます。

1
alias vi='vim'

その次に自分で作った .vimrc などを ~/.vimrc などに置きます。

1
scp -P 22 ~/.vimrc hoge@example.com:~/.vimrc

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

SSH のポート番号を変更する

以下のコマンドで SSH の設定ファイルを編集します。

1
2
su
vim /etc/ssh/sshd_config

#Port 22 というところがありますので、そこのコメントアウトを外して Port 10022 などに変更します。

1
2
#Port 22
Port 10022

その後以下のようにして SSH を再起動し反映します。

1
/etc/init.d/sshd restart

以下のツイートが参考になりました。
Twitter / @樋口 彰久: $ /etc/init.d/sshd restart …

公開認証鍵で SSH 接続できるようにする

自分のパソコンのターミナルで ssh-keygen を実行する。

1
2
3
4
5
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): // ファイル作成場所
Enter passphrase (empty for no passphrase): // パスフレーズを入力する
Enter same passphrase again: // パスフレーズをもう一度入力する

~/.ssh ディレクトリに以下のようにファイルが生成されます。

1
2
3
-rw-------   1 hoge  staff  1743  5 14 16:29 id_rsa
-rw-r--r--   1 hoge  staff   402  5 14 16:29 id_rsa.pub
-rw-r--r--@  1 hoge  staff  3911  5 11 02:28 known_hosts

id_rsa.pub をサーバのユーザーディレクトリの .ssh/ フォルダの中に authorized_keys という名前で保存する。フォルダがなければ、まずは以下のようにサーバー側に必要なディレクトリの作成から始めます。

1
2
cd ~
mkdir .ssh

次にローカルから .ssh フォルダの中に対して以下のようにしてファイルを転送します。

1
scp -P 10022 ~/.ssh/id_rsa.pub hoge@example.com:~/.ssh/authorized_keys

転送が終わったらサーバー側でパーミッションを調整します。

1
2
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

この段階で公開認証鍵を使ったログインができる状態になります。
これを公開認証鍵のみでのログインできる状態に変更します。
以下のファイルを編集します。ついでにいろいろ設定しましょう。

1
2
su
vim /etc/ssh/sshd_config

PermitRootLogin を no にすることで root によるログインを禁止することができます。without-password を設定すればパスワードによるログインを禁止することができます。

1
PermitRootLogin no

PasswordAuthentication を no にすることで root のみならず全てのユーザーでパスワードによるログインを禁止することができます。これで認証鍵を持っていなければログインすることができなくなります。

1
PasswordAuthentication no

PermitEmptyPasswords を no に設定することで空のパスワードでのログインを禁止することができます。

1
PermitEmptyPasswords no

設定が完了したら SSH の設定を反映させましょう。

1
/etc/init.d/sshd restart

認証鍵の設定ですが、きちんと設定が反映されているかをチェックする際はこの段階でログアウトせずに別のウィンドウでログインできるかを試すべきです。万が一設定に問題があった場合、一度ログアウトしてしまうと二度とログインできなくなります。私はこれで1度サーバーを初期化しなければいけなくなりました。

以下のサイトが少し参考になりました。
Mac,SSH,Terminal,ssh-keygen,publickey,gssapi-with- || memblog

ファイアーウォールを構築する

まず以下のファイルを作成します。

1
vi /etc/sysconfig/iptables

詳しくない場合は以下のコードを使うと良さそうです。主にカスタマイズするとしたら18行目から23行目を変更します。SSH と HTTP のみを使う、MySQL は localhost で使うし FTP は使わないならば、それに応じて塞ぎます。

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
*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
 
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT
 
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
 
COMMIT

コピーする場合に改行のところにスペースがあるとエラーになります。無駄なスペースが入っていないか調べるようにしましょう。問題がなさそうでしたら、以下のコマンドで iptables を再起動します。

1
/etc/rc.d/init.d/iptables restart

以下のサイトがひと通り探したサイトの中で最も参考になりました。
さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ

利用されていないデーモンを終了する

bluetooth など通常は使わないサービスが起動しているので、それを終了します。

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
/sbin/chkconfig auditd off
/sbin/chkconfig autofs off
/sbin/chkconfig avahi-daemon off
/sbin/chkconfig bluetooth off
/sbin/chkconfig cups off
/sbin/chkconfig firstboot off
/sbin/chkconfig gpm off
/sbin/chkconfig haldaemon off
/sbin/chkconfig hidd off
/sbin/chkconfig isdn off
/sbin/chkconfig kudzu off
/sbin/chkconfig lvm2-monitor off
/sbin/chkconfig mcstrans off
/sbin/chkconfig mdmonitor off
/sbin/chkconfig messagebus off
/sbin/chkconfig netfs off
/sbin/chkconfig nfslock off
/sbin/chkconfig pcscd off
/sbin/chkconfig portmap off
/sbin/chkconfig rawdevices off
/sbin/chkconfig restorecond off
/sbin/chkconfig rpcgssd off
/sbin/chkconfig rpcidmapd off
/sbin/chkconfig smartd off
/sbin/chkconfig xfs off
/sbin/chkconfig yum-updatesd off

各サービスについては以下のページが参考になります。
CentOSをサーバーとして活用するための基本的な設定 – さくらインターネット創業日記

要らないコンソールを無効にする

参考記事に /etc/inittab から無効にするとありましたが既に無効になっていました。

1
2
3
4
5
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

selinuxを無効にする

参考記事に /etc/sysconfig/selinux から無効にするとありましたが既に無効になっていました。

1
SELINUX=disabled

サーバーの設定変更を反映させる

全ての設定が完了したらサーバーを再起動させます。

1
reboot

再起動する前には free コマンドで現在のメモリ使用量などを確認しておきます。

1
free

私の環境ではメモリ使用量が235MBから160MBまで減らすことができました。
これでセキュリティとパフォーマンスの最低限の設定は完了しました。

これから細かい設定などを進めていきます。

sudo コマンドにユーザーを追加する

Mac や Ubuntu には su で root にならなくても sudo でその都度管理者権限でコマンドを実行することができます。まず visudo コマンドを実行して /etc/sudoers を編集します。

1
/usr/sbin/visudo

開いたファイル内の一番下で良いので以下のように記述します。

1
hoge ALL=(ALL) ALL

以下のページが参考になりました。
CentOS:sudo を設定する – 日々のメモ

CentOS の環境を日本語に設定する

日本語にするメリットはあまり無いですが試しに設定します。

1
sudo vi /etc/sysconfig/i18n

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

1
2
LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

以下のページが参考になりました。
さくらのVPS を使いはじめる 5 – MySQL のインストールと初期設定 | アカベコマイリ

yum をアップデートする

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

1
sudo yum update

Apache をインストール・設定する

以下のコマンドで Apache をインストールする。

1
sudo yum install httpd

Apache を起動する。

1
sudo /etc/rc.d/init.d/httpd start

Apache を自動起動に設定する。

1
sudo /sbin/chkconfig httpd on

以下の記事が参考になります。
さくらVPSでPHPを動かすまで – web探検隊

PHP をインストール・設定する

PHP の5.3系をインストールします。yum でインストールできるようにリポジトリを追加します。

1
2
3
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-8.el5.remi.noarch.rpm
sudo rpm -Uvh remi-release-5-8.el5.remi.noarch.rpm epel-release-5-4.noarch.rpm

remi を有効にするそうです。enabled=1 にするそうです。

1
sudo vi /etc/yum.repos.d/remi.repo

PHP のインストールを実行します。

1
yum install php-devel php-mbstring php-mysql php-gd php-mcrypt php-pear

Apache を再起動して PHP を使えるようにします。

1
sudo /etc/rc.d/init.d/httpd restart

以下の記事が参考になります。
さくらVPSに lighttpd + PHP 5.3 + MySQL 5.1 をインストール : dogmap.jp

eAccelerator をインストール・設定する

アクセラレータはスクリプトを解析した結果を中間コード(バイトコード)の状態で共有メモリ上にキャッシュします。スクリプトの2回目以降の実行は構文解析を行わずに, キャッシュされた中間コードをダイレクトに読み込むことで処理を高速化しています。巨大なソースファイルや多数のファイルをインクルードしているケースでは, アクセラレータは絶大な威力を発揮します。

PHP:eAccelerator で PHP 高速化 – Y-110's Wiki

参考にしていたページで導入していたので私も入れてみることにしました。

1
2
3
4
5
6
7
wget http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator%200.9.6.1/eaccelerator-0.9.6.1.zip/download
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
make
sudo make install

php.ini を編集します。

1
sudo vi /etc/php.ini

以下を末尾に追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[eaccelerator]
zend_extension="/usr/lib64/php/modules/eaccelerator.so"
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/var/cache/eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys     = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content  = "shm_and_disk"

他にも APC などがありますが、これは導入が少しだけ面倒なので別記事で紹介させて頂きます。

以下のページがとても詳しく説明していて参考になりました。
さくらVPSに lighttpd + PHP 5.3 + MySQL 5.1 をインストール : dogmap.jp

MySQL をインストール・設定する

MySQL がインストールされているのかチェックをして、もしインストールされていなければ以下のようにしてインストールをします。

1
sudo yum -y install mysql-server

次に MySQL の設定ファイルを編集します。

1
sudo vi /etc/my.cnf

以下のように設定ファイルを編集します。

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
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
 
# character-set
default-character-set=utf8
skip-character-set-client-handshake
 
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqldump]
default-character-set=utf8

追記: MySQL5.5なら [mysqld] のところは default-character-set の代わりに character-set-server を使います。

以下のコマンドで MySQL を自動起動するように設定します。

1
sudo /sbin/chkconfig mysqld on

MySQL を起動します。初回は初期化が始まります。

1
sudo /etc/rc.d/init.d/mysqld start

root ユーザのパスワードを設定する。

1
sudo mysqladmin -u root password 'パスワード'

以下のページが物凄く詳しく説明しています。本当に参考になります。
さくらのVPS を使いはじめる 5 – MySQL のインストールと初期設定 | アカベコマイリ

バーチャルホストを設定して Web サイトを公開する

最後に Web サイトを公開するためにバーチャルホストを設定します。Web サイトの公開ディレクトリの場所は個人的には /var/www/example.com/web がカッコイイと思います。

バーチャルホストの細かい設定についてはローカルで開発環境を作るのとそんなに変わりませんので、ぜひ以下の記事を参考にしてみてください。
Mac でバーチャルホストを XAMPP や MAMP に頼らず設定する方法 | ウェブル

面白いアプリケーションなど

Prompt, nice SSH for iOS

あのパニックが SSH のクライアントを作ってくれたみたいで、今まで変なソフトでやっていた人はこれに変えると良さそうです。

パニック・ジャパン – Prompt, nice SSH for iOS – サポート

GNU Screen

1台の端末や接続したリモートの端末から、全く別々の複数の端末へと同時に接続する事が出来る。コマンドライン上で複数のプログラムを実行したり、シェル上でプログラムを実行させたまま接続を解除したりする時等に非常に役に立つソフトウェアらしい。

GNU Screen – GNU Project – Free Software Foundation

コメント

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