VirtualBoxでUbuntu Server 20.04 LTSをLAMPサーバとして稼働させる

#はじめに
Ubuntu Sever 20.04 LTSがリリースされたので、とりあえず、VirtualBoxでLAMPサーバとして稼働させてみた。VirtualBoxのネットワーク設定は、ローカルネットワークからアクセスできるようにブリッジアダプタを使用する。（また、INTER-Mediator 6をセットアップするためのベースとしても使用する。）

#完成状態
LAMPサーバとして動作させるため次のサービスを稼働させる。ネットワーク経由でアクセスできるのは、SSH(22ポート)とHTTP(80ポート)のみ。MariaDBやPostgreSQLにアクセスしたい場合は、SSH経由でlocalhostからアクセスすること。

!!!注意!!!
ネットワークアクセスできる為、各種パスワード設定は、推測されないもの使用してください。

- SSH Server
- PHP
- Web Server (Apache)
- Database (MariaDB, PostgreSQL, SQLite)


#必要なもの (今回使用のマシンとバージョン)
- MacBook Air (macOS Mojave 10.14.6)
- VirtualBox (ver6.0.20)
- Ubuntu Server 20.04 LTS

#大まかな流れ
- Ubuntu Server 20.04 LTSのダウンロードをする。
- VirtualBoxを設定する。
- Ubuntu Sever 20.04 LTSのインストールをする。
- 基本設定をする。
    - パッケージのアップデート
    - 固定IP
    - タイムゾーン
    - ファイアウォール
    - ロケール

- パッケージをインストールする。
    - SSH Server
    - PHP
    - Apache
    - MariaDB
    - PostgreSQL
    - SQLite

#前提条件
###ネットワーク設定
（自分の環境に合わせて読み替えて必要な場合があります）
ローカルネットワークは、192.168.1.0/24でDHCPが作動している。ルータアドレスは、192.168.1.1でもちろんインターネットには接続されてる。サーバは、192.168.1.101で設定して、ローカルネットワークからはサーバにアクセスできるようにネットワーク設定をする。

| 項目 | 内容 |
| --- | --- |
| Subnet | 192.168.1.0/24 |
| Address | 192.168.1.101 |
| Gateway | 192.168.1.1 |
| Name Server | 192.168.1.1 |
| Search domains |  |


#ダウンロード
1:[Ubuntu.com](https://ubuntu.com)にアクセスして、『Download』タブから『ubuntu-20.04-live-server-amd64.iso』をダウンロードする。
<img width="1226" alt="01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/f2638f61-a3eb-b9ae-65af-b347cd0d7e56.png">

2:ダウンロードは、自動的に始まる。必要に応じてダウンロードファイルをコマンドで確認する。
<img width="1226" alt="03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/e263ee95-fe01-9ebf-ff71-d2b694f0a90f.png">

#VirtualBoxを設定する。
VirtualBoxは、6.0.20を使用する。(2020/05/12時点の最新版)

1:『Oracle VM VirtualBox マネジャー』から『新規』ボタンをクリック。
<img width="978" alt="vm01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/c8485713-afac-beb0-b8b2-7e0c12e0c4eb.png">


2:『名前とオペレーションシステム』で名前を『UbuntuServer2004LTS』にして『続きボタン』をクリック。
<img width="978" alt="vm02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/0b497bef-6704-a765-28a2-878733794306.png">


3:『メモリサイズ』では、デフォルトで『1024』MBとなっています。そのままでもインストールは可能ですが、ここでは、『2048』MBに設定して、『続き』ボタンをクリック。
<img width="978" alt="vm03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/917b2efb-8bf1-f8e6-126e-760142031506.png">


4:『ハードディスク』はデフォルトままで、『続き』ボタンをクリック。
<img width="978" alt="vm04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/fa70b2dc-e96d-a13a-912b-bc817c8953e1.png">


5:『ハードディスクのファイルタイプ』は、デフォルトままで『続き』ボタンをクリック。
<img width="978" alt="vm05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/1a1a266f-652d-1868-3b62-27e56e55b9ab.png">


6:『物理ハードディスクにあるストレージ』は、デフォルトままで『続き』ボタンをクリック。
<img width="978" alt="vm06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/74015d20-0ce9-d273-ecb2-335fee5659e0.png">


7:『ファイルの場所とサイズ』は、デフォルトままで『続き』ボタンをクリック。
<img width="978" alt="vm07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/0fa86fe2-a268-b328-54b7-c6d9f3a9452b.png">


8:仮想マシンが作成されました。
<img width="978" alt="vm08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/e4872785-03a0-30d1-53c2-b14a488663eb.png">


9:『Oracle VM VirtualBox マネジャー』で今作成した仮想マシンを選択する。『設定ボタン』をクリックし、『ネットワーク』タブ、『アダプター1』をクリック。
デフォルトで、『NAT』が設定されているので、『ブリッジアダプター』に変更する。
<img width="886" alt="vm09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/51e84dec-1c43-278b-bd73-ff5a2e0137b0.png">



10:『ストレージ』タブをクリックして、『コントローラー:IDE』の空ドライブを選択し、光学ドライブ横の、ディスクのアイコンをクリックして、ダウンロードしたisoファイルを指定する。
<img width="886" alt="vm10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/150259a3-8b13-2a72-4286-09a527e2bd75.png">




#インストール
1:仮想マシンを選択し、『起動』ボタンをクリックする。
<img width="1078" alt="01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/bfa3aa8d-6dbb-316b-c18c-21067991668d.png">


2:仮想マシンのディスプレイが小さい場合、『Oracle VM VirtualBox マネジャー』の『設定』ボタンをクリックし、『ディスプレイ』タブの表示倍率を『200%』する。
<img width="401" alt="02_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/437ee938-67fe-8bcb-99f9-b1d816bcb5cc.png">

<img width="886" alt="02_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/8feb0b07-c4f7-918b-9058-15f851e7ef05.png">

<img width="799" alt="02_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/757139e9-0d80-c39b-b3bf-52f44ecc3b51.png">


3:[Welcome! 画面] ディスプレイ上の『×』アイコンをクリックして、通知を消し、『English』を選択し、Returnキーを押す。
<img width="800" alt="03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/a3d6688c-9672-2599-fab5-810a3cc7033c.png">


4:[Installer update avaliable 画面] 『Continue without updating』を選択し、Returnキーを押す。
<img width="799" alt="04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/74b98653-4c93-c129-93b7-4f6988d3303c.png">


5:[Keyboard configuration 画面] キーホードを適宜選択したら、『Done』を選択し、Returnキーを押す。(ここでは、USキーボードを使用している為、English (US)を選択)
<img width="800" alt="05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/3d2d09b4-7128-e705-f448-173184de040e.png">

6:[Network connections 画面] ここでは、ネットワークインターフェイスを設定する。ここでは、DHCPで割り当てられているが、のちほど、固定IPに設定する。『Done』を選択し、Returnキーを押す。
<img width="800" alt="06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/163bd2f9-26bf-4a6c-d144-2bab54ad39ba.png">

(オプション) インストール時に固定IPにする。
基本設定の固定IPの手順で固定IPの設定をしますが、こちらで固定IPの設定も可能です。ご参考まで。
<img width="737" alt="06_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/2def84dc-e4bd-e8e2-9d10-6a9b0ae7574c.png">

<img width="740" alt="06_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/6b0b0257-ee0e-e89f-9ec4-9459ba043789.png">

<img width="666" alt="06_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/bbfe3298-392c-d45b-6d2f-b3ef23aa0a16.png">



7:[Configre proxy 画面] なにも変更せず、『Done』を選択し、Returnキーを押す。
<img width="799" alt="07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/26f254ae-e0c3-c53a-8c84-1cebe91ce1a2.png">


8:[Configure Ubuntu archive mirror 画面] なにも変更せず、『Done』を選択し、Returnキーを押す。
<img width="802" alt="08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/7d7ffcb1-42d6-c040-264c-990a9ec333cd.png">


9:[Guided storage configuration 画面] なにも変更せず、『Done』を選択し、Returnキーを押す。
<img width="801" alt="09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/a410eca3-ea5e-75fa-7796-76c9dd844a0d.png">


10:[Storage configuration 画面] なにも変更せず、『Done』を選択し、Returnキーを押す。
<img width="797" alt="10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/97118b0f-00ce-4c0e-c6b4-ff858931728b.png">

『Confirm destructive action』のアラートが出るので、『Continue』を選択して、Returnキーを押す。
<img width="799" alt="10_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/ec9e552b-95e3-f562-8b4c-657ca9cc43aa.png">


11:[Profile setup 画面] 名前やパスワードなど適宜入力する。入力を終えたら『Done』を選択し、Returnキーを押す。ここでは、次の通り入力する。（変更可能）

| 項目 | 内容 | 備考 |
| --- | --- | --- |
| Your Name | Developer |  |
| Your server's name | im |  |
| Pick a username | developer |  |
| Choose a password | **************** | 脆弱なパスワードにしないこと |
| Comfirm your password | **************** |  |


<img width="800" alt="11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/16036bb8-b0d0-9c5a-56ce-f7d758e98b7f.png">


12:[SSH Setup 画面] ここでは、なにも変更ぜず、『Done』を選択し、Returnキーを押す。
<img width="797" alt="12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/dbb6908e-1de0-feaa-a5e3-856bf73bb38b.png">

(オプション) インストール時にSSH Serverをインストールする。
パッケージをインストールのSSH Serverの手順でSSH Serverをインストールしますが、こちらでもインストール可能です。その場合、基本設定からSSHが利用できます。ご参考まで。
<img width="679" alt="12_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/56f16164-98b5-dbbb-6efb-c9a5c8c7a8e4.png">




13:[Featured Server Snaps 画面] ここでは、なにも変更ぜず、『Done』を選択し、Returnキーを押す。
<img width="800" alt="13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/9e2a732c-ced5-b546-e69a-a25b8341d554.png">

14:[Install complete 画面] しばらくすると、インストールが完了する。
<img width="800" alt="14_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/a9d1893b-532d-7e4d-c8c0-4a586c45fd57.png">

『Reboot』を選択し、Returnキーを押す。

15: [Roboot後 画面] CD-ROMがアンマウントされないというアラートが出ますが、アンマウントされているので、ウィンドウを閉じて終了。
<img width="912" alt="15_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/ded43151-3d9c-7e9d-76be-4496b2946910.png">
<img width="886" alt="15_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/7b944308-2c99-6a9b-6dd5-6d8d054bc992.png">
<img width="912" alt="15_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/a70f83eb-70db-af54-bf49-c32b9aac1de1.png">

#基本設定

##パッケージのアップデート

```bash:アップデート
$ sudo apt-get update
```

```bash:アップグレード
$ sudo apt-get upgrade
```


##固定IP
1: 現在のネットワークの状況を確認する。

```bash:
$ ip a
```

<img width="802" alt="static_01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/5720eea4-4566-44f1-5654-96a49405154e.png">


2: /etc/netplan/00-installer-config.yamlを確認する。

```bash:
$ cat /etc/netplan/00-installer-config.yaml
```

<img width="799" alt="static_02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/047b193b-7800-66c5-0b50-1e489222623c.png">


3: /etc/netplan/00-installer-config.yamlをを編集して固定IPにする。ここでは、DHCPから次の設定に変更する。
Static IP: 192.168.1.101/24
Gateway: 192.168.1.1
dns: 192.168.1.1

```bash:
$ sudo vi /etc/netplan/00-installer-config.yaml
```
<img width="478" alt="static_03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/3148c1c5-09de-e4b2-6bbc-2c261cf6b263.png">

```bash:/etc/netplan/00-installer-config.yamlの設定
network:
  ethernets:
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1]
  version: 2
  renderer: networkd
```
<img width="445" alt="static_04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/773da093-bb15-b581-7d27-6b67759aae7c.png">



```bash:設定を反映
$ sudo netplan apply
```

```bash:変更された現在のネットワークの状況を確認
$ ip a
```

<img width="801" alt="static_05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/3f20fe25-95ba-ae13-62df-10ae0347077e.png">


##タイムゾーン
1: タイムゾーンを確認する。

```bash:
$ timedatectl
```
<img width="518" alt="timedate_01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/9fa42ee0-73a9-3d67-1110-5a02ea562800.png">

2: タイムゾーンを変更し再確認する。

```bash:
$ sudo timedatectl set-timezone Asia/Tokyo
```
<img width="561" alt="timedate_02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/4150b0ee-0117-5cbb-3a89-13ae9daed07a.png">

## ロケール

1: 現在のロケールを確認する。

```bash:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
```

2: 設定できるロケールの一覧を確認する

```bash:
$ locale -a
```

3: ja_JP.UTF-8ロケールのインストールと設定

```bash:
$ sudo apt-get install language-pack-ja
$ locale -a
$ sudo update-locale LANG=ja_JP.UTF-8
```

```bash:/etc/default/localeファイルの内容
LANG=ja_JP.UTF-8
```

##ファイアウォール

1:現在のファイアウォールの状況を確認する。

```
$ systemctl status ufw
```
```
$ sudo ufw status verbose
```

<img width="743" alt="ufw_01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/eeda131f-3a97-7edf-0a5e-c98456446d12.png">
起動しているが、設定が無効になっている。


2:動作される

```bash:
$ sudo ufw enable
```

3:現在のルールを確認する。

```bash:
$ sudo ufw status verbose
```

<img width="516" alt="ufw_02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/5e6d034b-ae88-2262-d075-286e447efd7f.png">



4:適宜ポートを解放する。

```bash:SSHの許可(/etc/servicesを参照のこと)
$ sudo ufw allow ssh
```

```bash:httpの許可(/etc/servicesを参照のこと)
$ sudo ufw allow http
```

```bash:ステイタスを確認
$ sudo ufw status verbose
```

5: すべての設定が終わったらリブートする。

```bash:
$ sudo reboot
```


#パッケージをインストール

##SSH Server

1: SSH Serverをインストール（インストール後自動起動）

```bash:
$ sudo apt-get install ssh
```

2: 動作確認
リモートから『developer@192.168.1.101』でssh接続する。

##Apache
1: Apacheをインストール

```bash:
$ sudo apt-get install apache2
```
2: 動作確認

```bash:
$ systemctl status apache2
```

3: 動作確認
リモートからブラウザで『 http://192.168.1.101/ 』にアクセスする。
<img width="949" alt="apache_01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54439/d9bfa9f6-83fa-f6a0-fa81-4f1193e886d3.png">



##MariaDB 
1:MariaDBをインストール

```bash:
$ sudo apt-get install mariadb-server mariadb-client
```

3: セキュア設定

```bash:
$ sudo mysql_secure_installation
```

```bash:設定項目
Enter current password for root (enter for none): 

Set root password? [Y/n] y

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

```

3: 接続確認

```bash:端末から
$ sudo mysql -u root -p
```

```






##PostgreSQL
1:PostgreSQLをインストール

```bash:
$ sudo apt-get install postgresql postgresql-client
```

```bash:起動確認
$ systemctl status postgresql
```

2: postgresqlのパスワードを設定する。

```bash:
$ sudo su postgres
$ psql -c "alter user postgres with password '*******'"
```


3: 動作確認

```bash:端末から
$ psql -h localhost -U postgres
```

##SQLite
1:SQLiteをインストール 

```bash:
$ sudo apt-get install sqlite3 
```

##PHP
1:PHPをインストール 

```bash:
$ sudo apt-get install php
```

```bash:追加モジュールもインストール
$ sudo apt-get install libapache2-mod-php php-mysql php-pgsql php-sqlite3
```

```bash:
$ sudo systemctl restart apache2
```

2: 動作確認

```bash:/var/www/html/info.php作成
<?php
phpinfo();
?>
```

#リファレンス
[Welcome to the Ubuntu Server Guide!](https://ubuntu.com/server/docs)


#付録
###Quick Installメモ
Ubuntu2004LTS起動してからのインストールコマンド。インストール時にネットワーク設定及びssh serverをインストールした場合

```bash:
ssh developer@192.168.1.101
sudo apt-get update
sudo apt-get upgrade
sudo timedatectl set-timezone Asia/Tokyo
sudo apt-get install language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo reboot

sudo apt-get install apache2

sudo apt-get install mariadb-server mariadb-client
sudo mysql_secure_installation

sudo apt-get install postgresql postgresql-client
sudo su postgres
psql -c "alter user postgres with password '*******'"

sudo apt-get install sqlite3

sudo apt-get install php
sudo apt-get install libapache2-mod-php php-mysql php-pgsql php-sqlite3
```