ubuntu server を18.04にする
なぜかWS2016のHyper-Vでubuntu server16.04のバックアップが出来なくなったので、18.04にします。
今ある設定ファイルなどのバックアップ
ubuntu server で動いているのはwebサーバーとDNSサーバー、ルーターのログサーバーです。
/etc/nginx 以下
/etc/bind 以下
/var/cache/bind 以下
/var/www 以下
/home/ユーザー 以下
を圧縮してバックアップします。そのまま流用可能なものは設定後にコピーして利用します。
```
tar zcvf nginx.tar.gz /etc/nginx
tar zcvf bind.tar.gz /etc/bind
tar zcvf bind_cache.tar.gz /var/cache/bind
tar zcvf www.tar.gz /var/www
tar zcvf home.tar.gz /home/ユーザー
```
これらを外部にバックアップしておきます
UbuntuServer18.04 LTSのインストール
[ダウンロードページ]からISOをダウンロードして、Hyper-Vにインストールします。
Hyper-Vは仮想マシンの新規作成ウィザードに従って設定を済ませます。私の場合は
- 仮想マシンの世代は第二世代
- 起動メモリは1024MBで動的メモリ使用
- 仮想ハードディスクのサイズは64GB
としました。その後設定から「セキュアブート」を無効にし、「動的メモリの最大サイズ」を4096MBに、「プロセッサ」を2個にしました。
インストールはウィザードに従っていけば問題ないです。
インストールが終わったら `sudo apt update sudo apt upgrade`
opensshのインストール
```
# apt install openssh-server
```
ポート番号の変更とrootログインの禁止を設定します。
```
# apt -y install openssh-server
```
```
Port 334
PermitRootLogin no
```
終了したら
```
# systemctl restart ssh
```
ここから先の作業はクライアントで出来ます
パッケージのミラーサーバーを日本国内のものに変更
デフォルトではlrzszがダウンロードできなかったので、日本国内のものに変更します。
```
# perl -p -i.bak -e 's%https?://(?!security)[^ \t]+%http://jp.archive.ubuntu.com/ubuntu/%g' /etc/apt/sources.list
```
リポジトリの追加
```
# add-apt-repository main
# add-apt-repository universe
# add-apt-repository restricted
# add-apt-repository multiverse
```
Lrzszのインストール
ファイルをftpなど不要でターミナルに直接DD出来るツールです
```
# apt install lrzsz
```
ufwの起動とポート開放
```
# ufw default deny
# ufw enable
```
さらに334(SSH), http, https をポート開放しておきます。
```
# ufw allow 334
# ufw allow http
# ufw allow https
```
nginxのインストール
1. nginxサイトが配布するPGPキーを追加
```
# curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
```
2. リポジトリを一覧に追加
```
# VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` \
&& sudo -E sh -c "echo \"deb http://nginx.org/packages/ubuntu/ $VCNAME nginx\" \
>> /etc/apt/sources.list"
# VCNAME=`cat /etc/lsb-release | grep DISTRIB_CODENAME | cut -d= -f2` \
&& sudo -E sh -c "echo \"deb-src http://nginx.org/packages/ubuntu/ $VCNAME nginx\" \
>> /etc/apt/sources.list"
```
3. アップデート後、nginxをインストール
```
# apt update
# apt install nginx
```
インストール後に、サーバーのローカルアドレスで見れればインストール完了です。
4. webページの場所を変更する
```
# vi /etc/nginx/conf.d/default.conf
```
rootの場所を/var/www/htmlに変更して適用します。
5. nginx設定ファイルを元のものにする
`/etc/nginx/conf.d`の`default.conf`をバックアップしておいた`hogehoge.conf`にします
元のファイルは`default.conf.disabled`にしておきます
```
# mv default.conf default.conf.disabled
```
`/nginx`内の`nginx.conf`も同様に行います。元のファイルは`nginx.conf.disabled`にします
6. Basic認証の設定をする
webページの中にBasic認証をかませているものがあるので、この設定をします
```
# apt install apache2-utils
# htpasswd -c /etc/nginx/.htpasswd ユーザー名
```
パスワード入力をし、問題なければOKです
7. webページを移植する
バックアップしておいた`\var\www\html\`の中身をすべて移動します
Let's Encrypt でSSL証明書の取得
SSL通信を行うためにLet's Encrypt でSSL証明書の取得を行います。
1. Let's Encryptのインストール
```
# apt install letsencrypt
```
2. webページディレクトリの作成
```
# mkdir -p /var/www/html
# chown ユーザー名:グループ名 /var/www/html
```
3. 証明書の作成
```
# letsencrypt certonly --webroot -w /var/www/html -d hoge.com,www.hoge.com
```
4. 鍵生成
```
# openssl dhparam 2048 -out /etc/nginx/dhparam.pem
```
終了したら、
```
-----BEGIN DH PARAMETERS-----
長い文字列
-----END DH PARAMETERS-----
```
までをコピーして`/etc/nginx/dhparam.pem`を作成し、貼り付けます
Rsyslogの設定
詳細な内容は過去記事を参照して行います
最後にサーバーを再起動して一通り確認しましょう