さくらVPSでWebサーバを構築するテンプレ


さくらインターネットのVPSでWebサーバ(LAMP)を構築する際のテンプレートを公開します。VPSは高負荷でないサイト運用でしか使ってないので、アプリケーションの導入はyumで簡単に済ませています。

管理者アカウントの作成

$ useradd -G wheel userName
$ passwd userName

suをwheelグループに限定
$ vi /etc/pam.d/su

以下の行のコメントアウトを外す

# auth required pam_wheel.so use_uid


SSH設定
$ mkdir .ssh

クライアント側で公開鍵を作成し、サーバに公開鍵を転送
$ ssh-keygen -t rsa
$ scp .ssh/id_rsa.pub userName@host:/home/userName/.ssh

再びサーバ側の処理
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/*
$ vi /etc/ssh/sshd_config

Port sshPortNumber (標準の22だと危ないので、10022とか何か別の番号で)
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no


$ /etc/init.d/sshd restart

接続元ホストの許可・拒否

$ vi /etc/hosts.allow

ALL: 127.0.0.1
sshd: .jp (hogehoge.ne.jpみたいに使ってるプロバイダで指定する方がより安全)


$ vi /etc/host.deny

sshd: ALL


iptablesの設定

$ vi /etc/sysconfig/iptables

*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
-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 sshPortNumber -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

  • コンテンツの転送にはSFTPを使うので、FTPポートは空けない
  • sshPortNumberは、SSH設定で設定したポート番号を指定

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

Apacheの導入

$ yum install httpd
$ ln -s /usr/bin/perl /usr/local/bin/perl
$ chown -R apache:apache /var/www
$ chmod 2775 /var/www/cgi-bin
$ rm -f /etc/httpd/conf.d/welcome.conf
$ rm -f /var/www/error/noindex.html
$ rm /etc/httpd/conf.d/welcome.conf
$ vi /etc/httpd/conf/httpd.conf

ServerTokens Prod (「OS」のままだと危ないので、必ず変更)
ServerName serverName

<Directory "/var/www/html">
Options FollowSymLinks
AllowOverride All
</Directory>

DirectoryIndex index.php index.html
ServerSignature Off (「On」のままだと危ないので、必ず変更)


リポジトリの変更
MySQLやPHPなど、新しいバージョンが使えるようリポジトリを変更

$ cd /etc/yum.repos.d
$ wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
$ wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
$ rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

MySQLの導入

$ yum --enablerepo=remi,epel install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64 (64ビットOSの場合)
$ vi /etc/my.cnf

以下の行を追加

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

  • セキュリティ上望ましくないので、skip-character-set-client-handshakeは使っちゃダメ

$ /sbin/chkconfig mysqld on
$ /etc/init.d/mysqld start

MySQLの初期設定
$ mysql_secure_installation

PHPの導入

$ yum --enablerepo=remi,epel install php
$ yum --enablerepo=remi,epel install php-mbstring php-mcrypt php-mysql php-pear php-pecl-apc

$ vi /etc/php.ini

expose_php = off (「On」のままだと危ないので、必ず変更)
error_log = /var/log/php-errors.log

mbstring.language = Japanese (コメントアウトを解除)
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off (コメントアウトを解除)


$ pear channel-update pear.php.net
$ pear upgrade --force PEAR
$ pear upgrade-all

PEAR:Cache_Liteの導入(使うなら)

$ pear install Cache_Lite
$ mkdir /tmp/cache
$ chown -R apache:apache /tmp/cache
$ chmod 777 /tmp/cache

APCの設定

$ mkdir /var/www/apc
$ cp /usr/share/doc/php-pecl-apc-version/apc.php /var/www/apc/apc.php

$ vi /var/www/apc/apc.conf.php

<?php
defaults('ADMIN_USERNAME','user');
defaults('ADMIN_PASSWORD','password');


$ vi /etc/httpd/conf.d/apc.conf

Alias /apc "/var/www/apc"
<Location "/apc">
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from .jp(hogehoge.ne.jpみたいに使ってるプロバイダで指定する方がより安全)
</Location>


$ /etc/init.d/httpd restart

このブログの人気の投稿

oh-my-zshの導入とか、zshとvimの環境をナウでヤングでシンプルな感じにした

Pagesの差し込み印刷が便利すぎて、Officeが完全に要らなくなった