1からレンタルサーバーみたいなWebサーバーをつくる。

#はじめに

Webサイトを作って公開するにはWebサーバーが必要です。
そのWebサーバーはレンタルすることができますが、自分で用意したいという勉強熱心な人たち向けにこの記事を書きます。
私自身も勉強中なので、やり方を忘れないようにするために書いてますが、細かい部分まで書きますので、初心者の方にもわかりやすいようになっています。 たぶん

###この記事でできること

OSのインストールからウェブサイトの公開までの手順が分かちます。

###この記事での仕様

OS : ubuntu server 20.04 LTS
HTTP Server : Apache
FILE UPLOAD : FTP

###目次

* OS のインストール
* Webサーバーのインストール
* FTPサーバーのインストール
* 接続の確認

#1. OS のインストール
サーバーのOSをインストールします。
サーバーのOSはWindows serverとUNIX系があり、Windows serverは試用版は無料で180日間使えますが、 ライセンスに期限があって製品版は死ぬほど高いのでおとなしくubuntu serverを使います。
###1. インストールUSBを作る。
ubuntu server 20.04 LTSをダウンロードしてインストール用USBを作ります。
####1. OSのダウンロード
OSをダウンロードします。下記サイトのUbuntu Serverの欄のLTSと書いてあるものをダウンロードしましょう。
LTSは長期間サポートされているので、よほどのことがない限り大丈夫でしょう。
ファイルは5GBくらいあるので、気長に待ちましょう。

[Ubuntu Server](Ubuntu Server)

####2. USB Writerのダウンロード
USBで起動ディスクを作成するためのソフトをダウンロードします。
私が使ってきたUSBWriterの中で一番UIがきれいでシンプルなソフトを上げます。

[balenaEtcher](https://www.balena.io/etcher/)

インストーラファイルを起動して適当にインストールします。
####3. USB起動ディスクを作る。
上のソフトでUSB起動ディスクを作ります。
焼くUSBは中のデータが全部消えるのでデータが入っている場合はどこかに退避させておきましょう。

1. Flash from fileをクリックしてOSファイルを選択する。
* Select targetで焼く対象のUSBを選択する。
* Flash！で起動ディスクを作成する。

これでUSBの作成は終了です。
###3. OSをインストールする
できたUSBを使ってOSをインストールします。
対象のPCのストレージは何も入っていないものの仕様を推奨します。
BIOSの設定や起動ディスク選択でUSBから起動するように設定してUSBから起動します。
選択肢に表示されなかったり起動しなかったりした場合は、usb legacy support 的な項目が有効になっているかを確認してください。

* 言語選択 : 日本語はないので英語にします。
* キーボード選択 : 自分のキーボードの種類を選びます。
* IPの設定 : 何も触らず次へ
* プロキシ : 何も触らず次へ
* Ubuntuのリンク : 何も触らず次へ
* ディスクの選択と初期化 : ディスクをいじるのであればここでいじります。特になければ次へ行きます。
* ユーザー設定 : ユーザー名とサーバー名、パスワードを設定します。Pickのほうのユーザー名はログインの時に使います。
* SSH : 一応チェックだけ入れて次へ
* snap : 何も触らず次へ
* インストールの開始 : 結構長いので気長に待ちましょう。

インストールが終わると"Reboot Now"と出てきます。
次にUSBを抜いてEnterを押すように促されるので従います。
これでOSのインストールが終わりました。

#2. Webサーバーのインストールと設定
ここからコマンド操作です。
Webサーバーソフトウェアはいろいろありますが、今回は広く使われているApacheサーバーをインストールします。
###1. Apacheのインストール
以下のコマンドをたたいてApacheをインストールします。

```
sudo apt -y install apache2
```

`-y`引数は同意などの入力が出た場合はすべて`Yes`で通過するための引数です。
インストールが終わったら起動しているかを確認しましょう。

```
sudo systemctl status apache2
```

`Active: active(running)`とあれば正常です。

"Q"を押して終了しましょう
###2. 許可の設定
Apacheの公開ディレクトリは許可がないと直接編集できないのでディレクトリの所有権を以下のコマンドで取得します。

```
sudo chown -R $USER:$USER /var/www/html
```

これでApacheの設定は終了です。

#3. FTPサーバーのインストールと設定
FTPサーバーをインストールして外部からいじれるようにします。
今回は`vsftpd`をインストールして設定します。
###1. vsftpdのインストール
以下のコマンドをたたいてvsftpdをインストールします。

```
sudo apt -y install vsftpd
```

インストールが終わったら起動しているかを確認しましょう。

```
sudo systemclt status vsftpd
```

Active: active(running)とあれば正常です。

###2. vsftpdの設定

* 既存の設定ファイルの設定

vsftpdの設定ファイルをいじって直接apacheの公開ディレクトリをいじれるようにします。
viで設定ファイルを編集します。

```
sudo vi /etc/vsftpd.conf
```

viはコンソールでのテキストエディタです。
`I`を押して編集モード、`Esc`を押してコマンドモードと切り替えます。
編集モードの場合は最下部に`--INSERT--`と表記が出ます。
保存して終了する場合は、コマンドモードで`:wq`と入力して保存して終了します。
変更を破棄して終了する場合は`:q!`と入力すると保存せず終了します。

設定ファイルを開いたら、以下の行のコメントアウトを削除します。(先頭の#を削除してください。)

```
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
```

次にvsftpdでユーザーの接続ディレクトリを設定できるように以下の行を追加して保存します。

```
user_config_dir=/etc/vsftpd/conf
```

* 設定ファイルの作成

ユーザーに接続ディレクトリを割り当てます。
以下のコマンドを実行して設定ディレクトリを作成します。

```
sudo mkdir /etc/vsftpd && cd $_ ; sudo mkdir /etc/vsftpd/conf && cd $_
```

次に設定ファイルを作成します。ubutnuのユーザー名でファイルを作成します。

```
sudo vi /etc/vsftpd/conf/ユーザー名
```

viテキストエディタが開くので以下を入力して保存します。

```
local_root=/var/www/html
```

これで設定は完了しました。
###3. vsftpdの再起動
以下のコマンドを使用してvsftpdを再起動して設定を適応します。

```
sudo systemctl restart vsftpd
```

#4. 接続の確認
すべて設定が完了したので、接続の確認をします。
###1. Serverから
サーバーコンソールで以下のコマンドを入力してFTPサーバーにアクセスします。
NameとPasswordは同じです。
`ftp>`と出てきたら`bye`と入力して終了します。

```
ftp localhost
```

successfulと出ていれば正常動作しています。
###2. LAN内PCから
既存のFTPソフトウェアを使用してログインします。今回は`FFFTP`を使って送受信をします。

[FFFTP](https://forest.watch.impress.co.jp/library/software/ffftp/)

1. FFFTPを開き、ホスト一覧のウィンドウで新規ホストを選択します。
* 基本に表示されている項目の入力 : アドレスにはサーバーのローカルIPアドレス、ユーザー名 パスワード はUbuntuのユーザーのものを入力します。ローカルの初期フォルダ、ホストの設定名は任意のものを入力してください。
* 接続
* 
接続が完了し、右の欄に`index.html`が表示されていれば成功です。
任意のWebサイトをアップロードして公開しましょう。

#以上

これで完了です。
注意点ですが、この記事ではセキュリティ面は全く考慮していません。インターネット上に公開する場合はポート開放設定やFTPの参照制限設定などを設定してから公開することを推奨します。

#参考サイト一覧
https://blackbird-blog.com/ubuntu-ftp-setup

https://qiita.com/takahashi-kazuki/items/b695a66f3a951c2df261