AWS EC2でサーバを構築 1 - Amazon Linux 2 準備編

## 記事一覧

- [AWS EC2でサーバを構築 1 \- **Amazon Linux 2 準備編**](https://qiita.com/ryu-blacknd/items/23b86d9ad768d58ff161)
- [AWS EC2でサーバを構築 2 \- 各種インストール編](https://qiita.com/ryu-blacknd/items/36ccfcf96da7b0c981cf)
- [AWS EC2でサーバを構築 3 \- Apache \+ Let's Ecnrypt \+ PHP\-FPM編 \(脆弱性診断「A\+」を狙う\)](https://qiita.com/ryu-blacknd/items/77eebe43a18a69e7c1e5)
- [AWS EC2でサーバを構築 4 \- Nginx \+ Let's Ecnrypt \+ PHP\-FPM編 \(脆弱性診断「A\+」を狙う\)](https://qiita.com/ryu-blacknd/items/4049f04e445eb1d60e4d)
- [AWS EC2でサーバを構築 5 \- MySQL \+ phpMyAdmin](https://qiita.com/ryu-blacknd/items/03030d11eeef65e3cf67)
- [AWS EC2でサーバを構築 6 \- PostfixとDovecot \(SSL対応とSPAM対策\)](https://qiita.com/ryu-blacknd/items/8e0c28065af3f9b8a06d)
- [AWS EC2でサーバを構築 7 \- セキュリティ対策](https://qiita.com/ryu-blacknd/items/20e5540195501e16e90e)

## 概要

本記事ではAmazon Linux 2の初期設定を行います。

ユーザー`ec2-user`でSSHログインして作業します (ダウンロードした鍵ファイルを使用)。

## 文字コードとキーボード

日本の環境に合わせます。

```bash
sudo timedatectl set-timezone Asia/Tokyo
sudo localectl set-locale LANG=ja_JP.UTF-8
sudo localectl set-keymap jp106
```

設定反映のため一旦切断して再接続します。

### 反映を確認

設定が正しく反映されているか確認します。

```bash
date
```

以下のように日本時間が日本語で表示されていればOKです。

```bash
2020年  4月 14日 火曜日 10:03:39 JST
```

## 初回アップデート

パッケージのアップデートと再起動を行っておきます。

```bash
sudo yum update
sudo reboot
```

## ログイン関連

rootユーザーでSSHログインしたいので鍵ファイルの用意をします。

**/root/.ssh/authorized_key**

`ssh rsa`より前の部分が不要なので削除してから保存します。

### sshdの設定

パスワード認証を排除します。

**/etc/ssh/sshd_config**

```bash
PermitRootLogin without-password
```

sshdを再起動します。

```bash
systemctl restart sshd
```

`ec2-user`切断後、`root`でSSHログインします (`ec2-user`と同じ鍵ファイルを使用)。

## ユーザー関連

新規ユーザー作成時のデフォルトを設定します。

```bash
useradd -D -s /sbin/nologin
mkdir -p /etc/skel/Maildir/{new,cur,tmp}
chmod -R 700 /etc/skel/Maildir/
```

## シェルとVimの設定

- デフォルトのエディタをVimにする
- プロンプトのカラーを変更する
- `cp`や`mv`でワイルドカード`*`を使う際、ドットファイルがスルーされないようにする
- ターミナルで [Ctrl + S] した際に応答しなくなる問題に対処する

**~/.bashrc**

```bash
alias vi='vim'

PS1='\[\033[32m\][\u@\h \W]\$\[\033[0m\] '

export EDITOR=vim

shopt -s dotglob
stty stop undef
```

設定の反映を行います。

```bash
source ~/.bashrc
```

## EPELリポジトリ追加

標準で用意されていないパッケージをインストールするために、EPELリポジトリを使うよう設定します。

```bash
amazon-linux-extras install epel
```

## ツール類インストール

今後の作業に必要となる各種ツール類をインストールします。

```bash
yum install git curl wget nmap finger htop jwhois
```

## Vim環境設定(例)

個人の好み通りに設定すればOKです。わからなければ以下をコピペして使ってください。

ターミナル内でのコピペが不便なので、行番号は表示していません。`:set nu`、`:set nonu`で切り替えられます。

**~/.vimrc**

```vim
set nocompatible

set encoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
set fileformats=unix,dos,mac

set runtimepath+=~/.vim/dein/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/.vim/dein'))

call dein#add('Shougo/dein.vim')
call dein#add('scrooloose/nerdcommenter')
call dein#add('chriskempson/vim-tomorrow-theme')
call dein#add('chr4/nginx.vim')

call dein#end()
call dein#save_state()

filetype plugin indent on
syntax enable

autocmd BufRead,BufNewFile /etc/php.ini set syntax=dosini
autocmd BufRead,BufNewFile /etc/php-fpm.conf set syntax=dosini
autocmd BufRead,BufNewFile /etc/php-fpm.d/*.conf set syntax=dosini

set t_Co=256
autocmd ColorScheme * highlight Normal ctermbg=none
autocmd ColorScheme * highlight LineNr ctermbg=none
colorscheme Tomorrow-Night-Bright

set autoindent
" set number
set nobackup
set paste
set tabstop=4
set shiftwidth=4

set pastetoggle=<C-e>

let NERDSpaceDelims = 1
nmap ,, <Plug>NERDCommenterToggle
vmap ,, <Plug>NERDCommenterToggle

if dein#check_install()
  call dein#install()
endif
```

プラグイン管理ツールのdeinをインストールします。

```bash
mkdir -p ~/.vim/dein/repos/github.com/Shougo/dein.vim
git clone https://github.com/Shougo/dein.vim.git ~/.vim/dein/repos/github.com/Shougo/dein.vim
```

次回Vim起動時にdeinによるプラグインのインストールが行われます。