ホーム > FreeBSD Server

VultrでFreeBSDサーバーを立ち上げる

このサイトはVPS上にFreeBSD12.1+nginx1.16.1で構成されたWebサーバー上で動いています。

具体的にはVultrというVPSサービスなのですが、スナップショットという機能を使って簡単にクローンを作ることができたり、APIを使った操作(このサイトでは自動バックアップしています)できたりと、結構便利なVPSです。

Vultrを使おう

そんなVultr.comは時間課金のVPSサービス。初期費用とか不要で、VPSが存在している時間(停止中を含む)あたりいくらで課金されます。あとは規定通信量を越えるとそれに対して従量課金。

アカウントを作ってクレジットカードから幾らかチャージしたら、すぐにVPSを作ることができます。このチャージ金額を切らすとVPSが無効になっちゃう。プリペイドSIMみたいなもんだ。

チャージ金額があるうちはいくつでもVPSを立てられるので、OSをバージョンアップしたい時には一時的にふたつのVPSを立ててサイト移行なんてこともできる。

簡単VPSデプロイ

ログインしたらProductsInstances画面右上にある+ボタンをクリック。

Deploy New Instance画面でサーバーの仕様決め。普通のWebサーバーならCloud Computeで十分だと思いますが、場合によってはより高性能なHigh Frequencyを選んでもいいでしょう。Server LocationTokyoで。

下へスクロールしてServer TypeでOSを選択。

続いてServer Sizeを選択。うっかりしてるとオススメサイズの10ドルプランで作られちゃう!

Additional FeaturesとかStartup ScriptとかSSH Keysは指定せずにServer HostnameLabelを指定したら、Deploy Nowボタンを押します。

ちなみにここで指定したHostnameは/etc/hostsファイルや/etc/rc.confファイルにちゃんと反映されます。

一瞬でサーバーが作られてOSインストール開始。その後IPアドレスが割り当てられて自動で立ち上がります。

VPSを選択すると詳細情報が表示されます。ここのUsernameとPasswordを使ってコンソールログインすることになります。(マスクされているPasswordは目玉アイコンをクリックすると表示されます)

右上にあるディスプレイマークボタンをクリックするとコンソールが開きます。コンソールが出たらログインして設定を続けましょう。

タイムゾーンの問題

上記のとおりVultrの言う「Deploy in less than 60 seconds!」は本当なんですが、問題がひとつ。海外製なのでタイムゾーンがUTC協定世界時になっているということ。

なのでこれをJST日本標準時に直しましょう。FreeBSDにおけるタイムゾーンの手動設定方法|シリコンバレー 24時にあるとおり、設定ファイルを置くだけの簡単作業。シンボリックリンクを張っておきましょう。

1
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

Startup Scriptで自動化

一部の設定はStartup Scriptに登録することで自動化できます。ProductsStartup Scripts画面を選んで右上のAdd Startup Scriptボタンを押します。

Add Startup Script画面でNameに識別名を入れてTypeはBootのまま。Scriptに任意のコードを入れてAdd Scriptボタンを押して登録します。

例えば下記のようにタイムゾーンの設定やスワップファイルの作成と登録、vimとbashのインストールにシェルの変更と各種ドットファイルの登録、カーネルセキュリティレベルの設定にfreebsd-updateの実行まで入れておくと便利です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /bin/sh
test -r /etc/localtime && mv /etc/localtime /etc/localtime.org
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
dd if=/dev/zero of=/usr/swap bs=1m count=1024 && chmod 600 /usr/swap && echo 'md99 none swap sw,file=/usr/swap,late 0 0' >> /etc/fstab
swapon -aL
pkg install -y bash vim
cat <<EOF >> /root/.vimrc
set number
set shiftwidth=2
set tabstop=2
set softtabstop=2
imap <C-j> <C-[>
set laststatus=2
set statusline=%F%m%r\ \[%{&fileencoding}\]\ \[%{&fileformat}\]%=%l\,%c
EOF
cat <<EOF >> /root/.bashrc
alias ll='ls -l'
alias lla='ls -la'
EOF
cat <<EOF >> /root/.bash_profile
export HISTCONTROL=ignoreboth:erasedups
export HISTIGNORE="fg*:bg*:history*:exit:rm *:rmdir *:cd*:ls*:ll*:ps:su*:htpasswd*"
export HISTSIZE=10000
export LC_CTYPE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export EDITOR='vim'
export PAGER='less'
test -r ~/.bashrc && . ~/.bashrc
EOF
cat <<EOF >> /etc/rc.conf
kern_securelevel_enable="YES" # kernel security level (see security(7))
kern_securelevel="1" # range: -1..3 ; '-1' is the most insecure
# Note that setting securelevel to 0 will result
# in the system booting with securelevel set to 1, as
# init(8) will raise the level when rc(8) completes.
# To raise the level is to type "sysctl kern.securelevel=1".
EOF
chsh -s /usr/local/bin/bash
freebsd-update cron

サーバーデプロイ時にStartup Scriptのところでこのスクリプトを選んでやると手動設定をだいぶ端折ることができます。

https://www.junk-works.science/wp-content/uploads/2019/07/vultr-select-startup-script.png

デプロイ後にsshの設定とファイアウォール設定してfreebsd-update install後に再起動すれば立ち上げ完了しますよ。