OSの基本設定 ~複数バーチャルホストの設定まで~

#はじめに
AWSのEC２にてインスタンス（サーバー）を建てた際にOSの基本設定をしたので、その手順を記録します。ほぼ確実にサーバー建てるたびに設定すると思うので、
**ターミナルでコマンド手打ちするのがめんどくせー！と思ったらコピペでがんがん使って下さい。**
（インスタンス再作成しまくってたとき手打ちするのがだるすぎた)

1.時間の変更 ２.言語変更  3.コマンド履歴の表示変更 おまけ.複数バーチャルホストの設定
以上の4つを行います。

#開発環境
Amazon Linux 2 AMI (HVM), SSD Volume Type (AWSアカウント登録済み)
どのサーバーでも設定方法はそれほど変わらないと思いますが、設定ファイルやディレクトリがなければ、ググって確認してみてください。

##1.時間の変更
サーバー作成後、作成したキーペアに権限を与えてssh接続します。

```ターミナル
//自分に読込・書込みの権限を与える
chmod 600 ~/Desktop/[キーの名前] 
ssh -i ~/Desktop/作成したキーペア名 ec2-user@インスタンスと紐付けたElastic IP //Elastic IPはRoute 53で紐付けた名前でも可
```
一般ユーザーでは権限を持たないので、（viコマンドなどが使えない)
全権限を持つrootユーザーに変更後、タイムゾーンを変更します。 

```
//全権限を与える
sudo su 
vi /etc/sysconfig/clock

//書き換え前
ZONE="UTC" //協定世界時間
//書き換え後
ZONE="Asia/Tokyo" //日本時間
```
シンポリックリンク(ショートカット)の作成をします。

```
ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

//紐付いてるか確認
ls -l /etc/localtime 
```
localtime->~Asia/Tokyoなら成功です。

##2.言語変更

```
vi /etc/sysconfig/i18n
```
LANG="ja_JP.UTF-8"に変更。
こちらだけでは、サーバー復元時に自動でen_US.UTF-8に戻ってしまうので下記も変更。

```
vi /etc/cloud/cloud.cfg

//最後の行に追加
locale: ja_JP.UTF-8 

//catコマンドで確認
cat /etc/cloud/cloud.cfg 
```
locale: ja_JP.UTF-8が追加されていたら成功です。

##3.コマンド履歴の表示変更

```
vi /etc/bashrc

//最後の行に２行追加
HISTTIMEFORMAT='%F %T ' //コマンド操作日時表示
HISTFILESSIZE=2000 .    //履歴の上限2000

//追加した２行の確認
tail -2 /etc/bashrc
```

1~3終了後再起動します。

```
reboot
```
1~2分後、sshで再接続。設定がうまくできてるか最終確認します。

```
date      //日時表示が日本時間・日本語化
history   //表示数・コマンド操作日時の表示
```
以上がうまく出来ていれば、OSの基本設定完了です!

##おまけ.複数バーチャルホストの設定
今回設定したのはApacheサーバーです。
使用するサーバーによって設定ファイルは異なるので注意しましょう。

Apacheサーバーの大本となる設定ファイルは
```/etc/httpd/conf/httpd.conf```なので
tailコマンドで最後の5行だけ確認します。 

```
tails -5 /etc/httpd/conf/httpd.conf

//最後の行
InclodeOptional conf.d/*.conf  //conf.d/*.confを取り込んでるのがわかる

//conf.d/*.confより上のディレクトリを確認
grep "^ServerRoot" /etc/httpd/conf/httd.conf
ServerRoot "/etc/httpd"  // "/etc/httpd"直下にあることがわかる 
```
```/etc/httpd/conf.d/*.conf``` で設定したらいいとわかったので、
サブドメインを作り、バーチャルホストを複数作成します。
今回作成したのが下記になります。

```start-aws-virtualhost.conf
//PHPファイルのバーチャルホスト作成
<VirtualHost *:80>
    ServerName attendance.www.startdns.tokyo //Route53で設定したドメイン名
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/main_attendance/public //画面表示するパスを指定

    //ディレクトリにアクセス許可を与える
    <Directory /var/www/main_attendance>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>
</VirtualHost>
//HTMLファイルのバーチャルホスト作成 2つ目以降の作成方法も同様
<VirtualHost *:80>
    ServerName introduction.startdns.tokyo //Route53で設定したドメイン名
    DocumentRoot /var/www/introduction //画面表示するパスを指定

    ErrorLog "logs/introduction-error.log" //エラーログの出力
    CustomLog "logs/introduction-access.log" combined //アクセスログの出力

    //ディレクトリにアクセス許可を与える
    <Directory /var/www/introduction>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
    </Directory>
</VirtualHost>
```
2つ目以降も同様に作成すれば、サブドメインをいくつでも作成できます。
アクセスが集中しすぎるとサーバーダウンするので、
オートスケーリングを設定するか、別でサーバーを作成しましょう。

#参考文献・参考記事
・[AWSをはじめよう](https://booth.pm/ja/items/1032590 "AWSをはじめよう")  ハンズオン形式。本はハンズオン形式のものをおすすめする。
・[バーチャルホストの例 - Apache HTTP サーバ バージョン 2.2](https://httpd.apache.org/docs/2.2/ja/vhosts/examples.html "バーチャルホストの例 - Apache HTTP サーバ バージョン 2.2") バーチャルホストに関する様々な作成方法が書いてある。