さくらVPSの初期設定とCentOSによるWEBサーバー環境構築まとめ


少し放置していたさくらのVPSですがOSを再インストールして一からLAMP環境構築したのでサーバーの初期設定の手順をメモがてらに残しておきます。ローカルPCはMacを使っています。

Linuxのバージョン確認

とりあえず以下のコマンドでMacのターミナルからサーバーにssh接続

xx.xx.xx.xxはサーバーのIPアドレスで、サーバー契約完了時にメールで送られてくると思います。パスワードを尋ねられますがこちらもメールに記載してあります。
以下のコマンドでLinuxのバージョンを確認。

# cat /etc/redhat-release
CentOS release 6.5 (Final)

ってことでバージョンはCentOS6.5

rootのパスワード変更

まずは下記のコマンドで初期設定のrootパスワードを変更。

# passwd

yum updateと日本語化

#yum update

でサーバーに入ってるアプリケーションをすべて最新版にします。
とくに更新がなければ下記のように表示されます。

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
Setting up Update Process
No Packages marked for Update

次にCentOSの日本語化。

# vim /etc/sysconfig/i18n

で言語の設定ファイルが開かれるので、

LANG="C"

となっているところを

LANG="ja_JP.UTF-8"

に変更。

作業用ユーザーの作成と設定

作業用のユーザーを作成します。ここではadmin(好きな名前)に設定します。

# useradd  admin
# passwd   admin

で、adminユーザーの追加とパスワード設定。

#usermod -G wheel admin

でルート権限を得られるグループに追加。

# visudo

でvi(エディタ)が立ち上がるので

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

というところを探して、二行目の#を外して保存。これでwheelグループに属するユーザにsudoコマンドの実行を許可します。

これで作業用ユーザーの設定はおしまい。
一旦ログアウトして、

$ ssh admin@xx,xx,xx,xx

でパスワードが求められるのでユーザー追加に指定したものを入力して、サーバーに接続できればおっけー。

鍵認証の設定

パスワード認証だとセキュリティ的にアレなので、鍵認証に変更。
とりあえず、公開鍵を入れるディレクトリをサーバーのホームディレクトリに作成しておく。

$ mkdir ~/.ssh 

で作成して

$ chmod 700 ~/.ssh

でパーミッションの変更!

次にMac側でssh鍵ペアの作成。
Macのターミナルから

$ ssh-keygen

を実行。パスフレーズを求められるけど、なくてもいいのでリターンで押しておけばおっけー。
Macの ~/.ssh フォルダにid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます。

$ chmod 600 ~/.ssh/id_rsa.pub

で公開鍵のパーミッションを変更。

次に公開鍵をサーバーに転送。

$  scp  ~/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys

で公開鍵をauthorized_keysという名前に変えて転送。
サーバーに戻って、.ssh内にauthorized_keysがあることを確認。

これで鍵認証でssh接続できるようになりました。

ポート番号の変更、rootによるログイン禁止、パスワードでのログイン禁止

ポート番号はデフォルトで22になっているのでセキュリティを高めるために変更。
ポート番号は1024~65535ならなんでもおっけー。
今回は10022番にします。

また、rootによるログイン、パスワードでのログインも禁止にします。

下記コマンドをsudoで実行。

$ sudo vim /etc/ssh/sshd_config

設定ファイルを開いたら

#Port 22 
 ↓
Port 10022 
#PermitRootLogin yes
 ↓
PermitRootLogin no
#PasswordAuthentication yes
 ↓
PasswordAuthentication no

に変更。

変更したら、下記コマンドでsshの再起動。

$ sudo service sshd restart

ファイアーウォールの設定

$ sudo vim  /etc/sysconfig/iptables

でiptablesファイルを作成する。

デフォルトで10022番だけにオープンするように変更します。
下記をコピペして保存。


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

iptablesを再起動

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

設定の確認コマンドはこちら

$ sudo iptables -L

WEBサーバーの設定

ここからLAMP環境の構築の設定をやっていきます。

とりあえず、root権限で作業することが多くなってきたので下記のコマンドでrootユーザーに切り替えておきます。パスワードが聞かれますがrootのパスワードを入力してください。

$ su

Webサーバーはいくつかありますが、Apacheをインストール

 # yum -y install httpd

次にchkconfigの設定をしときます。
VPSが常に自動で起動するように設定します。

#  chkconfig httpd on

設定ファイルをいじってセキュリテイを高めます。
一応設定ファイルのバックアップをとっておきます。

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

設定ファイルを開く

# vim /etc/httpd/conf/httpd.conf

下記を変更

ServerTokens OS
  ↓
ServerTokens Prod
ServerSignature On
  ↓
ServerSignature Off

Options Indexes FollowSymLinks
  ↓
Options -Indexes FollowSymLinks

保存したら、下記コマンドで構文チェック。

service httpd configtest

Syntax OK

と出れば問題なし。

service httpd start 

でApacheを起動する。

IPアドレスをブラウザからたたいててテストページが表示されれば成功!

OS起動時にApacheも自動で起動されるように設定。

# chkconfig httpd on
# chkconfig --list httpd
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

のようになればおっけー。

次にPHPのインストール。

# yum -y install php php-mbstring php-mysql php-gd

完了したら以下のコマンドでバージョンを確認。

# php -v

設定ファイルをいじる前にバックアップ

cp /etc/php.ini /etc/php.ini.org

設定ファイルを開く

vim  /etc/php.ini

以下を変更

;error_logs = php_erros.log
  ↓ 
error_logs = /var/log/php_errors.log
;mbstring.language = Japanese
  ↓
mbstring.language = Japanese

;mbstring.internal_encoding = EUC-JP
  ↓
mbstring.internal_encoding = UTF-8

;mbstring.http_input = auto
 ↓
mbstring.http_input = auto

;mbstring.detect_order = auto
 ↓
mbstring.detect_order = auto
expose_php = on
↓
expose_php = off

;date.timezone = 
 ↓
date.timezone = Asia/Tokyo

保存したら、設定を反映。

# service httpd restart

次に、Mysqlの設定

# yum -y install mysql-server

インストールできたか確認します。

# rpm -qa mysql-server

設定ファイルのバックアップ

# cp /etc/my.cnf /etc/my.cnf.org

設定ファイルを開く

# vim  /etc/my.cnf 

以下を記述

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

設定を反映

# service mysqld start