Edited at

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

More than 3 years have passed since last update.

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


Linuxのバージョン確認

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

$ ssh  root@xx.xx.xx.xx

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 admin@xx.xx.xx.xx:~/.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