はじめに
ねらい
業務にて自前サーバが必要となり、さくら VPS を使うことにしました。Qiita 的に新しい情報はありませんが、自分のためのメモとして残します(環境の再現性の確保)。
経緯
これまでに個人として ConoHa VPS で遊んできました(例えば こちら や こちら や こちら の記事)。しかし ConoHa VPS は「請求書払い」ができないため、業務では手続き面で使いにくいのでした(個人のカードで立て替え払いする必要がある)。そこで、請求書払い(年間一括)が可能な さくら VPS を使うこととしました。
ついでに、個人用の ConoHa VPS とは少し異なる環境で運用することにしました。
- HTTP サーバ: Apache --> nginx
- デスクトップ: GNOME --> Xfce
- ドメイン取得: ムームードメイン --> さくら
やったこと
- さくら VPS の契約
- ドメインの取得と設定
- CentOS 7 のインストール(LetsEncrypt スタートアップスクリプト利用)
- SSH の各種設定
- Xfce と tigervnc-server のインストールと各種設定
- Mondo Rescue によるイメージバックアップ
さくら VPS の契約
さくらの VPS のページ から申し込むだけ。
プラン(スペック)
今回契約したプランは以下(2G プラン)。
- CPU: 仮想 3 Core
- メモリ: 2 GB
- ストレージ: 50 GB SSD
- リージョン: 大阪第3
- VPS バージョン: v4
費用
費用は以下(2019年4月現在)。
- 月払いなら: 1,706 円 / 月
- 年払いなら: 18,770 円 / 年
- 初期費用: 2,160 円 / 初回のみ
クレジットカード払いの場合は、申込み後すぐに使えて、2週間の無料お試しができるが、
請求書払いの場合は、請求書が郵送され、入金確認後まで使えない(振込はコンビニまたは郵便局)。無料お試し期間はない。追加で請求書発行手数料が 324 円かかる。
もろもろコミコミの費用は 21,254 円だった。
ドメインの取得と設定
ドメイン取得
業務の目的上 SSL が必須なので、Let's Encrypt で SSL 化できるように、まずはドメインを取得。運用面でシンプルになるように、さくらのドメイン で取得した。
ほしいドメイン名が取得可能かを検索して、購入手続きをするだけ。
.com, .net, .org などは 1,852 円 / 年 だった(2019年4月現在)。上記 VPS とあわせて導入費用の総額は 23,106 円だった。
ドメインの設定
ドメインの設定は VPS のコントロールパネルではなく「会員メニュー」から行う。
- 会員メニューのトップから「> ドメインの確認」をクリック
- 契約ドメインの一覧で「▶ドメインメニュー」をクリック
- 「管理ドメインとネームサーバの一覧」にて「ゾーン編集」をクリック
- 「さくらインターネットのネームサーバに設定する」にて VPS の IPv4 アドレスを入力して「送信する」をクリック
- 基本的にこれだけで OK、以下のように自動で設定された
- @ NS ns1.dns.ne.jp
- @ NS ns2.dns.ne.jp
- @ A {VPS の IPv4 アドレス}
- @ MX 10 @
- www CNAME @
- mail CNAME @
- ftp CNAME @
CentOS 7 のインストール
OS は CentOS 7 をインストールした。CentOS_LetsEncrypt というスタートアップスクリプトを利用することで、nginx のインストールと、Let's Encript による SSL 化までを一気にやってもらえた。
インストール作業
VPS への OS のインストール等の作業は「コントロールパネル」から行う。
- コントロールパネルで対象のサーバを選択
- 右上の「各種設定▼」メニューから「OS インストール」を選択
- オプションは以下を選択
- 標準OS
- CentOS7 x86_64
- root のパスワードを2回入力
- スタートアップスクリプトで「CentOS_LetsEncrypt」を選択
- ドメイン名(上記で取得済)を入力
- メールアドレスを入力
おそらく不要な作業
CentOS_LetsEncrypt スタートアップスクリプトを使ってセットアップすると、「通常必要な90日ごとの更新作業も自動的に行われます」と書かれている。しかし、なんだか不安だったので、certbot をインストールして、タイマー設定しておいた。おそらく不要。
$ su
# yum install certbot
# systemctl enable --now certbot-renew.timer
# systemctl list-timers
SSH で各種設定
OS のインストール終了後、定番の、以下の諸設定を実施した。
- パッケージの更新(yum update)
- パッケージ更新の自動化(yum install yum-cron)
- 一般ユーザの追加(+ sudoers へ追加)
- 鍵交換方式による認証
- パスワード認証の不能化
- root でのログインの不能化
このあたりは、こちら(私の記事) や こちら(さくらのVPS講座) を参考にすることとして、ここでは詳細は割愛。
Xfce と tigervnc-server のインストールと各種設定
なにかと GUI かつ日本語環境があると安心する性分。GNOME よりも軽量だという Xfce をインストールして、VNC できるようにした。
前準備
日本語化のために iBus (Intelligent Input Bus) や日本語フォントをインストール
$ su
# localectl set-locale LANG=ja_JP.utf8
# yum install ibus-kkc vlgothic-* ipa-*-fonts
Xfce のインストール
まずは Xfce 本体のインストール
$ su
# yum groupinstall Xfce
tigervnc-server のインストールと諸設定
VNC サーバの tigervnc-server をインストールする。
$ su
# yum install tigervnc-server
VNC 用のポートを開ける。
$ su
# firewall-cmd --add-service=vnc-server --zone=public --permanent
VNC 用パスワードの設定。ログインするユーザにて…
$ vncpasswd
(VNC 用のパスワードを2回入力)
(view-only password? という質問には n と答える(VNC 経由で操作もできるように))
VNC サーバの自動起動の設定。まずは vncserver@:1.service を作る。
$ su
# cp -p /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
vncserver@:1.service を編集する。2箇所ある <USER> という部分を実際のユーザ名(例:hoge)に変える。
# nano /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l hoge -c "/usr/bin/vncserver %i" # この行にあった <USER> を hoge に
PIDFile=/home/hoge/.vnc/%H%i.pid # この行にあった <USER> を hoge に
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
[Install]
WantedBy=multi-user.target
systemctl で vncserver@:1.service の自動起動を設定。
# systemctl daemon-reload
# systemctl start vncserver@:1.service
# systemctl enable vncserver@:1.service
Xfce の起動設定
/home/hoge/.vnc/xstartup に1行追加(ユーザ名は例えば hoge)。
# nano /home/hoge/.vnc/xstartup
以下の1行を追加、/etc/X11/xinit/xinitrc の行はコメントアウト。
exec xfce4-session &
# /etc/X11/xinit/xinitrc
あとは VNC クライアントでよしなに接続する。
Xfce で日本語入力を設定
当初は入力メソッド(ibus)が自動で起動しないようなので、以下を設定。
- 「アプリケーション」メニューから「設定」→「セッションと起動」
- 「自動開始アプリケーション」タブを選択
- 「入力メソッドのスターター」にチェック
Xfce にゴミ箱を設置
当初はゴミ箱が無いようなので(アイコンが無いという意味ではなく、機能自体がない)、以下を設定。
$ su
# yum install gvfs
ちなみにゴミ箱の実体は ~/.local/share/Trash/ の中。
各種アプリケーションをインストール
Xfce にはアプリケーションがほとんど入っていないので、以下をインストール。
- Web ブラウザ Firefox
- テキストエディタ gedit
$ su
# yum install firefox
# yum install gedit
Visual Studio Code も本家ページの通りに以下を実行してインストール。
$ su
# rpm --import https://packages.microsoft.com/keys/microsoft.asc
# sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
# yum check-update
# yum install code
Mondo Rescue によるイメージバックアップ
システムが固まってきたら、もしもに備えてイメージバックアップしたいところ。しかしながら、さくら VPS にはイメージバックアップ機能が無い ので、Mondo Rescue でイメージをバックアップした。
(ConoHa VPS はイメージバックアップ機能が標準で使える)
Mondo Rescue のインストール
Mondo Rescue リポジトリを追加して、Mondo Rescue 本体と、圧縮ツールの lzop をインストール。
$ su
# cd /etc/yum.repos.d/
# wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
# yum install mondo lzop
仮想メモリの設定
デフォルトのままだとバックアップに失敗するので、/etc/mindi/mindi.conf を編集。
$ su
# nano /etc/mindi/mindi.conf
以下の2行を追記。
EXTRA_SPACE=320152
BOOT_SIZE=100000
EXTRA_SPACE は 240000 とする情報が多かったが、私の環境では上記 320152 で成功。
バックアップ先ディレクトリの準備
バックアップ先となる任意のディレクトリを作る。TeraCLOUD などの WebDAV ストレージでもよいが、ここでは VPS の一般ユーザのディレクトリ内に作る。あとからイメージをダウンロードする前提。
$ mkdir /home/hoge/backup
イメージバックアップ
例えば以下のコマンドで実行。
$ su
# mondoarchive -O -i -N -L -s16g -E /home/hoge/backup -d /home/hoge/backup -p Backup_yyyymmdd -g
各オプションの意味は以下。
- -O バックアップする
- -i ISO として保存
- -L lzo 圧縮を使用
- -N ローカルファイルのみ(ネットワークは除外)
- -s 最大ファイルサイズ(未指定だと約 680MB の CD サイズ)
- -E バックアップから除外するディレクトリ(バックアップ先そのものは除外)
- -d バックアップ先ディレクトリ
- -p バックアップファイル名(このあとに "-1.iso" が自動で追加される)
- -g GUIモード(任意、経過の見やすさのため)
最後に、できあがった iso ファイルを任意の場所(WebDAV ストレージや、ローカル PC 等)にダウンロードして保管しておく。
まとめ
VPS を立てるのは2回めで、自分で過去にメモを残しておいたこともあり、スムーズに構築できました。誰かのお役には立てないかもしれませんが、なにがしかのご参考になれば。
なお、今後もなにかあれば随時追記していく予定です。