お名前VPSにCentOS 7をインストールしてWebサイトを作ってみた



前々から[高認](http://www.mext.go.jp/a_menu/koutou/shiken/)が終わったらVPSを借りようと決めていたので借りていろいろ弄ってみました。
(ちなみに高認は寝坊して落ちました、次は来年8月です。)

こういう記事を書くのは初めてなので至らぬ点は多々あると思いますがよろしくお願いします。

##お名前VPSを選んだ理由

僕がドメインを[お名前.com](http://onamae.com)で取得していたから、というだけです。
サービスや値段を考慮して他の所のVPSを選んでも構わないと思います。

##お名前VPSの契約

[ここ](http://www.onamae-server.com/vps/?btn_id=gm_vps_1)からプラン一覧を見ることができます。
ご自身の用途に合わせたプランを選択しページの案内をよく読み契約を進めてください。

##VPSの初期セットアップ

契約が完了すると5~10分ほどでセットアップ完了のメールが届きます。
メールに記載されているログインURLをクリックしてログインし、ページ左端にある「ご利用サービス確認」をクリックします。
先ほど契約したVPSが出てくるので「コントロールパネル」の下の「vps*********[ログインする]」をクリックします。
サーバーリスト下にあるVPS名をクリックすると初期セットアップ画面が表示されます。
この時OSはCentOS 6.5しか選べないので適当にセットアップを進めてしまいましょう。

##CentOS 7のインストール

いよいよCentOS 7のインストールです。
CentOS 7はまだリリースされて日が浅く、6.xの方が情報も多くてベターっぽかったのですが僕は新しいもの好きなので7を選びました。
電源OFFをクリックしてVPSの電源を切ります。
OS再インストールから、OSは[カスタムOS]CentOS 7.0-1406(64bit)を選択し、その他はお好みで設定します(よくわからない場合はそのままをお勧めします。)
確認をクリックし、実行をクリックします。
コンソール画面へ行き、VPSを起動します。
インストールディスクが起動するのでInstall CentOS 7を選択し、Enterを押します。
言語選択画面が出てくるので日本語を選択し右下の続行をクリックします。
インストール先をクリックし、左のドライブを選択し上の完了をクリックします。
元の画面に戻るので続行をクリックします。
インストールが開始されるのでその間にrootパスワードの設定と作業用ユーザーを追加します。
画面の指示に従い好きな値を入力してください。
作業用ユーザーを作る時、「このユーザーを管理者にする」にチェックボックスを入れるのを忘れないでください。
インストールが完了すると右下に再起動ボタンが表示されるのでクリックし再起動します。

##SSH接続

ここからはローカルPCにMacを使用することを想定しています。
Windowsの場合は別途ターミナルソフト([Tera Term](http://sourceforge.jp/projects/ttssh2/)等)をインストールしてください。
Linuxの場合はOS付属のターミナルエミュレータで構いません。
準備ができたら、ターミナルで以下を実行します。

```ローカルPCでの作業
$ ssh root@(VPSのIPアドレス)
The authenticity of host '***.***.***.***' can't be established.
RSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**.
Are you sure you want to continue connecting (yes/no)? 
 ```
すると「初めての接続先ですが接続しますか？」という旨のメッセージが表示されるので「yes」と入力しEnterを押します。
次にパスワードを聞かれるのでインストール時に設定したrootパスワードを入力します。
これでSSHでの接続が完了しました。
ついでにアップデートとvimのインストール、次の作業の準備をしておきましょう。

```VPSでの作業
# yum -y update
読み込んだプラグイン:fastestmirror
base                                                     | 3.6 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
No packages marked for update
~~中略~~
完了しました!
# yum -y install vimLoading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
~~中略~~
完了しました!
# su (作業用ユーザー名)
$ cd
$ mkdir .ssh
```

##SSHの設定

SSHのセキュリティーを高める為公開鍵認証ログインを使い、パスワード認証ログインを使えないように設定していきます。

まずクライアント側で公開鍵と秘密鍵を作成します。
既に~./ssh下に鍵がある方は公開鍵のアップロードまで飛ばしていただいて結構です。
Windowsの場合は使っているターミナルソフトによって作成方法が異なるようなので調べてみてください。

```ローカルPCでの作業
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa):  #空のままEnter
Enter passphrase (empty for no passphrase):  #空のままEnter
Enter same passphrase again:  #空のままEnter
Your identification has been saved in /Users/hoge/.ssh/id_rsa.
Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:** user_name@localhost.local
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|    ~~~  ~~~     |
|     @    @      |
|       ||        |
|    ********     |
|    ********     |
+-----------------+

```

するとホームフォルダの.sshフォルダ下にid_rsa(秘密鍵)とid_rsa.pub(公開鍵)というファイルが作成されます。
このうちの公開鍵をVPSにアップロードします。

```ローカルPCでの作業
$ scp ~/.ssh/id_rsa.pub (作業用ユーザー名)@(VPSのIPアドレス):~/.ssh/
```
パスワードを聞かれるのでインストール時に設定した作業用ユーザーのパスワードを入力しEnterを押します。
次にVPSに接続します。

```ローカルPCでの作業
$ ssh (作業用ユーザー名)@(VPSのIPアドレス)
```
パスワードを聞かれるので入力します。
接続が完了したら、公開鍵の名前をSSHがデフォルトで読み込む物に変更し、アクセス権を変更します。

```VPSでの作業
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
```
次にSSHの設定ファイルを編集していきます。

```VPSでの作業
$ sudo vim /etc/ssh/sshd_config
```

```/etc/ssh/sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
↓公開鍵認証を有効
RSAAuthentication yes
PubkeyAuthentication yes
```
以上で公開鍵認証による作業用ユーザーでの接続しかできなくなりました。
設定を反映させます。

```VPSでの作業
$ sudo service sshd restart
```

これで設定は完了です。
正しく接続できるかどうかを確認します。
設定が失敗している場合もあるので先ほどの接続を切らずに新しいウィンドウやタブで実行してください。
sshクライアントはデフォルトで~/.ssh/id_rsaを読み込むので場所の指定は必要ありません。

```ローカルPCでの作業
$ ssh (作業用ユーザー名)@(VPSのIPアドレス)
```
接続が成功したら次はパスワード認証とrootログインを禁止します。

```VPSでの作業
$ sudo vim /etc/ssh/sshd_config
```

```/etc/ssh/sshd_config
#PermitRootLogin yes
↓rootでのログインを禁止
PermitRootLogin no

#PasswordAuthentication yes
↓パスワード認証ログインを禁止
PasswordAuthentication no
```
これでSSHの設定は完了です。
そこそこセキュリティーを高めれたかと思います。

##ドメインの設定

ここでは[お名前.com](http://onamae.com)で既にドメインを取得していることを前提とします。
他サイトで取得していてもほとんど同じようにできるはずですのでその場合は調べてみてください。

[ドメインNavi](https://www.onamae.com/domain/navi/domain)にアクセスしてログインします。
取得済みのドメイン一覧が表示されるので一番右の[ネームサーバー]の下の[変更する]をクリックしてください。
お名前.com各サービスを使用からVPS(KVM)の横の[設定する]をクリックしてください。
確認画面が表示されるのでもう一度[設定する]をクリックします。
しばらくすると元の画面に戻るので次は左の[▶︎DNS関連機能の設定]をクリックしてください。
設定したいドメインの横にチェックを入れ、[次へ進む]をクリックしてください。
DNSレコード設定を利用するの横の[設定する]をクリックしてください。
入力の欄のVALUEにVPSのIPアドレスを入力し、TYPEがA、状態が有効になっている事を確認したら追加をクリックしてください。
一番下のDNSレコード設定用ネームサーバー変更確認にチェックを入れて確認画面へ進むをクリックしてください。
確認画面が出てくるので設定するをクリックしてください。
次に、VPSのコントロールパネルを開き、VPSの電源を切ります。
DNS逆引き設定の変更後のホスト名にドメイン名を入力し確認をクリックします。
確認画面が表示されるので実行をクリックします。
これでドメインとVPSが結びつきました。

##Webサーバーの設定

いよいよ大詰め、Webサーバーの設定をしていきます。

VPSに接続し、サーバーソフトウェアをインストールしていきます。

```VPSでの作業
$ sudo yum -y install httpd php php-mbstring
```
インストールが完了したら次はWebサーバーの起動設定とファイアウォールの設定をしていきます。

```VPSでの作業
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
```
次にWebサーバーの設定ファイルを編集していきます。

```VPSでの作業
$ sudo vim /etc/httpd/conf/httpd.conf
```

```/etc/httpd/conf/httpd.conf
ServerName www.example.com:80
↓サーバー名の指定
ServerName (先ほど設定したドメイン名):80

AddDefaultCharset UTF-8
↓文字化け防止
AddDefaultCharset none
```
これで最低限の設定は完了しました。
この他にも色々な設定があるので興味のある方は「Apache 設定」などで調べてみてください。

##Webサイトの作成

これで最後です。
長かったですね、肩が凝ってきました。
さて、Webサーバーのドキュメントルートは/var/www/htmlになります。
いちいちアクセスするのは面倒なので作業用ユーザーのホームフォルダにシンボリックリンクを作成しましょう。
ドキュメントルートを変更してもいいですが僕はあまり好きではないのでこの方法を選びました。

```VPSでの作業
$ ln -s /var/www/html ~/html
```

これで作業用ユーザーのホームフォルダ直下にあるhtmlフォルダで/var/www/htmlにアクセスできるようになりました。
htmlファイルを追加するにはいくつか方法がありますが今回は「ローカルPCでhtmlファイルを作成してscpコマンドで転送する」という方法を使いたいと思います。
まず適当なhtmlファイルをローカルPCで作成します。

```index.html
<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<title>Test WebSite</title>
</head>
<body>
	<h1>Hello!!</h1>
</body>
```
次にこれをscpコマンドで転送します。

```ローカルPCでの作業
$ scp index.html (作業用ユーザー名)@(VPSのIPアドレス):~/html
```
これでVPSにhtmlファイルが追加されました。
念のため確認しておきましょう。

```VPSでの作業
$ cd html
$ ls -a
.  ..  index.html
```
ご自身のドメイン名をブラウザに入力してみて[Hello!!]と表示されればこれでWebサイトの作成は完了です。

##おわりに

いかがだったでしょうか、僕自身想像していたよりかなり簡単に設定ができました。
この記事を書くのに費やした時間の方が少し長いくらいです、さすがに嘘です。
今後もいろいろ作って遊びながら学んでいきたいと思います。


##参考リンク
[SSH の設定でセキュリティ強化 for お名前.com VPS](http://pubapp.hateblo.jp/entry/2014/08/22/SSH_の設定でセキュリティ強化_for_お名前.com_VPS)
[CentOS 7 でLAMP(Apache+MariaDB(MySQL)+PHP)インストールからWordPressを動かすまで(Apache編)](http://server-setting.info/blog/lamp-wordpress-centos7.html)
[CentOS 7.0 - ファイアウォール設定！](http://www.mk-mode.com/octopress/2014/08/09/centos-7-0-setting-of-firewall/)