AWS EC2でサーバを構築 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)

## 概要

サーバアプリケーションを中心に各種インストールを行います。

設定は次回以降の記事で行います。

## ApahceとSSL

**<font color="#dd4444">ウェブサーバにNginxを使用する場合は読み飛ばしてください。</font>**

 SSL証明書取得用にLet's Ecnryptの`certbot`もインストールします。

```bash
yum install httpd mod_ssl certbot
systemctl enable httpd
```

## NginxとSSL

**<font color="#dd4444">ウェブサーバにApacheを使用する場合は読み飛ばしてください。</font>**

EPELにもNginxはありますが、AWSなのでamazon-linux-extraからインストールします。

SSL証明書取得用にLet's Ecnryptの`certbot`もインストールします。

```bash
amazon-linux-extras install nginx1
yum install certbot
systemctl enable nginx
```

## PHP-FPMとモジュール

Apache Event MPM、またはNginxで動かすためモジュール版PHPは使いません。

```bash
amazon-linux-extras install php7.3
yum install php-opcache php-apcu php-mbstring php-xml php-xmlrpc php-intl php-gd php-pecl-mcrypt php-pecl-imagick-devel php-pecl-imagick php-pecl-zip ImageMagick-devel
systemctl enable php-fpm
```

## MySQL

 RHEL系でデフォルトのMariaDBは使いません。コミュニティのリポジトリからMySQLをインストールします。

```bash
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum install mysql-community-server
systemctl enable mysqld
```

## phpMyAdmin

EPELからのyumインストールは依存関係で失敗するため公式サイトのソースからインストールします。

```bash
cd /var/www/html/dev.netartz.com/public_html
wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.tar.gz
tar zxf phpMyAdmin-5.0.2-all-languages.tar.gz
rm -f phpMyAdmin-5.0.2-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpmyadmin
```

## Postfix

インストールしなくても最初から入っています。有効化しておきます。

```bash
systemctl enable postfix
```

## Dovecot

インストールして有効化します。

```bash
yum install dovecot
systemctl enable dovecot
```

## Node.js

EPELのNode.jsは6系と古いので、[NodeSource](https://github.com/nodesource/distributions)からLTSな12系をインストールします。

```bash
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum install nodejs
```

有効化して使用する場合は以下を実行しておきます。

```bash
systemctl enable nodejs
systemctl start nodejs
```

## Docker

ローカルで使用することが多いですが、自分の場合はサーバ側にも必要だったため一応インストールおきます。

不要な場合はインストールしなくてOKです。インストールだけして有効化しない手もあります。

```bash
yum install docker
```

有効化して使用する場合は以下も実行しておきます。

```bash
systemctl enable docker
systemctl start docker
```

### docker-compose

amazon-linux-extraのリポジトリからdocker-composeをインストールできないので手動でインストールします。

```bash
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compo
se-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

```bash
chmod +x /usr/local/bin/docker-compose
```

> バージョンを1.25.4と指定しているのは、ローカルの開発環境と合わせるためです。


## Fail2ban / Logwatch

ログ監視とセキュリティ対策のためにインストールします。

```bash
yum install fail2ban logwatch
systemctl enable fail2ban
```