さくらvpsにCentoOSをインストールして初期設定からLAMP環境構築まとめ

自社で放置されていたさくらvpsのOS再インストールに以外と手こずったので備忘録としてメモ
OSインストールの『標準OSインストール』からOSの再インストール
ここは公式[OS再インストール](https://help.sakura.ad.jp/app/answers/detail/a_id/2408/~/os%E5%86%8D%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参考に

参考にした記事
[さくらVPSでサーバー借りてCentOS 6をインストールして初期設定からRedmineを導入するまでメモ](http://qiita.com/nabeliwo/items/f48d9d28c1d0e6cccdb7#%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%81%AE%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C%E3%82%92%E3%81%99%E3%82%8B)
[さくらVPSの初期設定とCentOSによるWEBサーバー環境構築まとめ](http://qiita.com/junki0605/items/6ce3df1933ef6d31ddfa)

## 構築する環境
- CentOS 6.7
- Apache 2.2.15
- MySQL 5.1.73
- PHP 5.6.21


# CentOSの設定

## 接続

```
ssh root@IPアドレス	
```
※OSの再インストールをしまくるとこれが出てくる

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
～省略
```
初接続の方は無視して下さい

#### 対処法

```
ssh-keygen -R IPアドレス
```

すると接続できる

## Linuxのバージョン確認
```
cat /etc/redhat-release
```

## サーバーを最新に

```
yum update
```


## CentOSの日本語化

```
vim /etc/sysconfig/i18n	
```
vimが立ち上がるので、

```
LANG="ja_JP.UTF-8”
```
に変更


## 作業ユーザーの作成

```
useradd ユーザー名
passwd ユーザー名
```


## 作業ユーザーの追加
```
usermod -G wheel ユーザー名 
```

作業ユーザをグループに追加

```
visudo
```
vi(エディタ)が立ち上がるので、
/wheelと打ち検索、nで以下の行を探して変更する

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

保存して、閉じる
一旦ログアウトして、

```
ssh ユーザー名@IPアドレス
```
パスワードが求められるので、先程登録したパスワードでログイン出来ればOK

## sshの設定
パスワード認証方式だとセキュリティ上良くないので、SSHでの認証設定を行います。
自分のPCに公開鍵と秘密鍵がある前提で進めます。

まだの方は[Git サーバー - SSH 公開鍵の作成](https://git-scm.com/book/ja/v1/Git-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-SSH-%E5%85%AC%E9%96%8B%E9%8D%B5%E3%81%AE%E4%BD%9C%E6%88%90)から


新しくターミナルを立ち上げ、

```
mkdir ~/.ssh
chmod 755 ~/.ssh
```

自分のPCからサーバーに公開鍵を転送

```
scp ~/.ssh/id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys
```

パスワードが求められるので入力

```
id_rsa.pub                                 100%  406     0.4KB/s   00:00
```
と出れば成功

再度サーバーにsshでログインしましょう。
パスワードを聞かれずに接続できたらOKです。

僕の場合は何度もOSを再インストールした為、またもやこれがでてきた

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
～省略
```
先程の

```
ssh-keygen -R IPアドレス	
```
で解決出来ず、参考にしたサイトがこちら
[SSHサーバーが変わったら](http://www.profaim.jp/tools/soft/network/ssh/server_changed.php)
どうやらSSHサーバーの公開鍵の指紋（finger print）が原因だったみたい

## ポート、ssh接続設定の変更
sshでの接続は出来ましたがこのままだとデフォルトの22番ポートのままです。これまたセキュリティ的に良くないので変えましょう。
ポート番号を1024～65535の間の数字で変更します。
これは外部からポートのフルスキャンをされた時に時間稼ぎ＆攻撃する相手の意欲をそぐ為に重要な設定になります。
続けてrootでのログイン、パスワード認証も禁止にしましょう。

下記コマンドを実行

```
sudo vim /etc/ssh/sshd_config
```
設定ファイルが立ち上がるので、```/```で検索をかけ、変更していきます。

```
#Port 22 
　↓
Port 好きな数字 //コメントを外し、1024～65535の好きな数字に変更
```
```
#PermitRootLogin yes
　↓
PermitRootLogin no //コメントを外し、yesをnoに変更(rootでのログイン禁止)
```
```
#RSAAuthentication yes
　↓
RSAAuthentication yes //コメントを外す(鍵認証を有効化)
```
```
#PubkeyAuthentication yes
  ↓
PubkeyAuthentication yes //コメントを外す(公開鍵での認証を有効化)
```
```
#AuthorizedKeysFile      .ssh/authorized_keys
  ↓
AuthorizedKeysFile      .ssh/authorized_keys //コメントを外す(公開鍵のパスを設定)
```
```
PasswordAuthentication yes
  ↓
PasswordAuthentication no //yesをnoに変更(パスワード認証の禁止)
```

保存し、sshの再起動

```
sudo service sshd restart
```

そうして```[OK]```が出れば成功です。
再度　```exit```　でログアウトし、ポートを指定してログイン

```
ssh ユーザー名＠IPアドレス -p ポート番号
```

## ファイアーウォールの設定
iptablesを作成

```
sudo vim  /etc/sysconfig/iptables
```
以下の設定を記述

```
*filter
:INPUT   DROP   [0:0]
:FORWARD DROP   [0:0]
:OUTPUT  ACCEPT [0:0]
:SERVICES -     [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -j SERVICES
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --sport 123 --dport 123 -j ACCEPT
-A SERVICES -p tcp --dport 指定したポート番号 -j ACCEPT
-A SERVICES -p tcp --dport 80 -j ACCEPT
-A SERVICES -p tcp --dport 443 -j ACCEPT
COMMIT
```



設定を反映

```
sudo service iptables start
```

# LAMP環境の構築
ここからLAMP環境の構築をやっていきます。
root権限での作業がメインなので、権限を切り替えましょう。
```sudo -s```
パスワードを求められるので入力
すると

```
[ユーザー@xxxxxx ~]$
	↓
[root@xxxxxx ユーザー]#
```
になります。
```#```になったらroot権限中です。

## WEBサーバのインストール

Appacheのインストール

```
# yum -y install httpd
```

サーバーが常に自動起動になるように設定

```
chkconfig httpd on
```

## httpd.confの変更

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

```
#　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 
```

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



## PHPのインストール
今回はPHP5.6をインストールします。
こちらのサイトをありがたく参考にしました。
[CentOS6.7にPHP5.6をインストール](http://the2g.com/1289)
[centos6.6にPHP5.6をインストール](http://productionig.sakura.ne.jp/blog/2015/07/09/centos6-6%E3%81%ABphp5-6%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/)


epelリポジトリの追加

```
yum install epel-release
```
Remiリポジトリの追加

```
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
```


PHP5.6のインストール

```
yum --enablerepo=remi-php56 install php
```

```php -v```でバージョン確認

```
PHP 5.6.21 (cli) (built: Apr 28 2016 07:47:46)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
```

## php.iniの変更
まずはバックアップ

```
cp /etc/php.ini /etc/php.ini.org
```
php.iniを開く

```
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 install mysql-server
```
なにか聞かれたら```y```で進む

## my.cnfの変更
まずはバックアップ

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


設定ファイルを開く

```
# vim /etc/my.cnf
```
```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

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8



[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
```
こちらは[ドットインストール](http://dotinstall.com/lessons/basic_sakura_vps/8016)を参照

mysqlを起動

```
# service mysqld start
```

## rootのパスワード設定と初期設定
```
# mysql_secure_installation
```
1. rootのパスワードを聞かれる -> 未設定なので空白のままEnter
2. rootのパスワードを設定するか -> Y と入力してEnter
3. rootのパスワード入力(2回)
4. anonymousユーザを削除するか -> Y と入力してEnter
5. リモートからのrootログインを禁止するか -> Y と入力してEnter
6. テスト用の’test’データベースを削除するか -> Y と入力してEnter
7. 設定を反映するか -> Y と入力してEnter



終わったら動作確認
パスワードを聞かれるので先程設定したパスワードでログイン

```
$ mysql -u root -p
```




## まとめ
一度自分のさくらvpsを構築したことがあったが大分時が経ってて全然忘れてた。
意外と時間がかかってしまったが色々な記事を参考にしながら再構築しました。
OSの再インストールのし過ぎで大分ハマったが、散々再インストールしまくったのでもう怖くない。
次は自分の放置してたvpsを再構築しよう