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


少し放置していたさくらの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
```