ConoHaのVPSでWebサーバを立てる

# はじめに

セールエンジニアをやっています。
日々提案書を作り、提案する毎日。技術力や経験がないと充実した提案になりません。

技術をつける。運用経験を持つ。そんなことを目的にWebサーバを立てて、運用してみようと思います。

# サーバを借りる

- ConoHa
    - CentOS 7.1 64bit
    - メモリ：1GB
- ドメイン
    - example.com（仮）
    - IPアドレス：x.x.x.x
- 公開鍵
	- conoha.pem（仮）

# Macに鍵認証でsshできるようにする

鍵を.ssh/に移動させる

```
$ mv key-2015-12-13-17-21.pem ~/.ssh/conoha.pem
```

鍵が移動しているか確認する

```
$ ls ~/.ssh/ | grep conoha.pem
conoha.pem
```

鍵のアクセス制御のモードを変更する

```
$ chmod 600 ~/.ssh/conoha.pem
```

鍵をコンフィグに登録する

```
$ vi ~/.ssh/config
Host conoha
	HostName example.com
	Port 22
	User root
	IdentityFile ~/conoha.pem
# fingerprintが異なっている場合があるので、注意。
```

# パッケージの更新
初期インストールパッケージの更新

```
$ sudo yum update
```

# ロケールとキーマップの変更

現在の設定を確認する

```
$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp
      X11 Layout: jp
```

設定可能な値を確認する

```
$ sudo localectl list-locales | grep ja_JP.*
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
```

ロケールの設定を`ja_JP.utf8`に設定する

```
$ localectl set-locale LANG=jp_JP.utf8
```

設定が変更されたことを確認する

```
$ sudo localectl status
   System Locale: LANG=jp_JP.utf8
       VC Keymap: jp
      X11 Layout: jp
```

設定可能なキーマップを確認する

```
$ localectl list-keymaps | grep jp*
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106
tj_alt-UTF8
```

キーマップを`jp106`に変更する

```
$ sudo localectl set-keymap jp106
```

キーマップが変更されたかを確認する

```
$ localectl status
   System Locale: LANG=jp_JP.utf8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp
```

# タイムゾーンの変更

タイムゾーンの設定を確認する

```
$ timedatectl status
      Local time: 日 2015-12-13 18:52:02 JST
  Universal time: 日 2015-12-13 09:52:02 UTC
        RTC time: 日 2015-12-13 09:52:02
        Timezone: n/a (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```

設定可能なタイムゾーンを確認する

```
$ timedatectl list-timezones | grep Asia/Tokyo
Asia/Tokyo
```

タイムゾーンを`Asia/Tokyo`に変更する

```
$ timedatectl set-timezone Asia/Tokyo 
```

タイムゾーンが変更されたか確認する

```
timedatectl status
      Local time: 日 2015-12-13 18:55:00 JST
  Universal time: 日 2015-12-13 09:55:00 UTC
        RTC time: 日 2015-12-13 09:54:59
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
```

# 不要なサービスの停止

OS起動時に読み込まれるサービスを確認する

```
$ systemctl list-unit-files --type service | grep enabled
abrt-ccpp.service                           enabled 
abrt-oops.service                           enabled 
abrt-vmcore.service                         enabled 
abrt-xorg.service                           enabled 
abrtd.service                               enabled 
atd.service                                 enabled 
auditd.service                              enabled 
chronyd.service                             enabled 
cloud-config.service                        enabled 
cloud-final.service                         enabled 
cloud-init-local.service                    enabled 
cloud-init.service                          enabled 
crond.service                               enabled 
dbus-org.fedoraproject.FirewallD1.service   enabled 
dbus-org.freedesktop.NetworkManager.service enabled 
dbus-org.freedesktop.nm-dispatcher.service  enabled 
dmraid-activation.service                   enabled 
firewalld.service                           enabled 
getty@.service                              enabled 
irqbalance.service                          enabled 
kdump.service                               enabled 
libstoragemgmt.service                      enabled 
lvm2-monitor.service                        enabled 
mdmonitor.service                           enabled 
microcode.service                           enabled 
NetworkManager-dispatcher.service           enabled 
NetworkManager.service                      enabled 
ntpd.service                                enabled 
postfix.service                             enabled 
rngd.service                                enabled 
rsyslog.service                             enabled 
smartd.service                              enabled 
sshd.service                                enabled 
sysstat.service                             enabled 
systemd-readahead-collect.service           enabled 
systemd-readahead-drop.service              enabled 
systemd-readahead-replay.service            enabled 
tuned.service                               enabled 
```

停止するサービス（Postfix）の設定状態を確認する

```
$ systemctl status postfix.service 
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
   Active: active (running) since 日 2015-12-13 17:52:06 JST; 1h 6min ago
 Main PID: 1669 (master)
   CGroup: /system.slice/postfix.service
           ├─1669 /usr/libexec/postfix/master -w
           ├─1676 pickup -l -t unix -u
           └─1677 qmgr -l -t unix -u

12月 13 17:52:06 x-x-x-x systemd[1]: Starting Postfix Mail Transport ....
12月 13 17:52:06 x-x-x-x postfix/master[1669]: daemon started -- versi...
12月 13 17:52:06 x-x-x-x systemd[1]: Started Postfix Mail Transport A....
Hint: Some lines were ellipsized, use -l to show in full.
```

対象のサービスを停止し、OS起動時に起動する設定を無効化する

```
$ sudo systemctl stop postfix.service 
$ sudo systemctl disable postfix.service 
rm '/etc/systemd/system/multi-user.target.wants/postfix.service'
```

無効化になっているか確認する

```
$ systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled)
   Active: inactive (dead)

12月 13 17:52:06 x-x-x-x systemd[1]: Starting Postfix Mail Transport ....
12月 13 17:52:06 x-x-x-x postfix/master[1669]: daemon started -- versi...
12月 13 17:52:06 x-x-x-x systemd[1]: Started Postfix Mail Transport A....
12月 13 19:04:03 x-x-x-x systemd[1]: Stopping Postfix Mail Transport ....
12月 13 19:04:03 x-x-x-x systemd[1]: Stopped Postfix Mail Transport A....
Hint: Some lines were ellipsized, use -l to show in full.
```

# Webサーバのインストール・設定

Apache (sshd) をインストールする

```
$ sudo yum install httpd
```

インストール直後のサービスの状態を確認する

```
$ systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: inactive (dead)

```

起動時に起動しない設定（disabled）になっており、現在も起動していない（dead）ので、起動し、OS起動時に起動するように設定する

```
$ sudo systemctl start httpd.service
$ sudo systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service'
```

設定されているか確認する

```
$ systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: active (running) since 日 2015-12-13 19:14:36 JST; 1min 39s ago
 Main PID: 14029 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─14029 /usr/sbin/httpd -DFOREGROUND
           ├─14030 /usr/sbin/httpd -DFOREGROUND
           ├─14031 /usr/sbin/httpd -DFOREGROUND
           ├─14032 /usr/sbin/httpd -DFOREGROUND
           ├─14033 /usr/sbin/httpd -DFOREGROUND
           └─14034 /usr/sbin/httpd -DFOREGROUND

12月 13 19:14:36 x-x-x-x systemd[1]: Starting The Apache HTTP Server...
12月 13 19:14:36 x-x-x-x httpd[14029]: AH00558: httpd: Could not reli...e
12月 13 19:14:36 x-x-x-x systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
```

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

サービスの存在を確認する

```
$ systemctl status firewalld.service
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since 日 2015-12-13 17:52:05 JST; 1h 27min ago
 Main PID: 597 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─597 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

12月 13 17:52:05 x-x-x-x systemd[1]: Started firewalld - dynamic fire....
Hint: Some lines were ellipsized, use -l to show in full.
```

ConoHaは標準でenabledかつrunningになっている。ファイアウォールの設定を確認する。

```
$ firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
```

servicesにhttp(80)を追加する。設定ファイルに反映するため、`--permanent`オプションをつける。

```
$ sudo firewall-cmd --permanent --add-service=http --zone=public
success
```

設定を反映する。

```
$ firewall-cmd --reload
success
```

設定を確認する。

```
$ firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
```

# Webサイトの動作確認

`example.com`にアクセスして動作を確認する。

# 参考文献

- [【初心者向け】CentOS 7インスタンスの初期設定手順](http://dev.classmethod.jp/cloud/aws/centos7-initial-settings/)