home / vps VPS

>>> サービス選定〜OSのインストール (05 Nov 2018)
サーバー類のインストール (12 Jun 2016)
nginx (05 Nov 2018)
さくら de Ubuntu (06 Nov 2018)
サーバーの引越 (27 Oct 2018)
05 Nov 2018 ブート時にUS配列で閉じカッコを打つ方法に追記。 OpenSUSEからUbuntuのネットワークインストールメディアを起動する方法を追記。

 固定IPでサーバー立ててると回線換えが面倒。 うちが使っているISPの場合、光にするとIPアドレスが変わるので、DNSまわりがめんどっちいことになる。 できれば1週間くらい新旧両方のIPアドレスが生きていて欲しい。 だったら、VPSでサーバーもアウトソースすればいいんちゃう? というのが発端。

home / vps 選定

 廉価VPSではさくらかAblenetかというところらしいので、安いプランで比べてみる。 2015年10/31現在。 金額はすべて消費税8%込み。

サービス名 プランコア数メモリHDD/SSD月払年払(月額)
Ablenet
VPSプラン
V010.5G50G/30G6995,924(493)
V121.5G100G/40G1,31712,096(1,008)
さくらインターネット
さくらのVPS
512プラン10.5G-/20G6857,543(628)
1Gプラン21.0G100G/30G97210,692(891)

 注意点は、Ablenetで目立つように書いてある数字は年払・税抜だということ。 さくらは月払の数字が税抜・税込併記で最初に書いてある。 ここには書いてないが、Ablenetには半年払いもある。 さくらは半年払いがない。 一番安いのはAblenetのV0年払だが、月払ではさくらの512プランの方が実は安い。

 その他の共通仕様は以下のとおり。 Windows関連は興味ないので割愛。

Ablenetさくらインターネット
回線200Mbps共用100Mbps共用
グローバルIPIPv4×1・IPv6×65,536IPv4×1・IPv6×1
転送量無制限無制限

 全体的にAblenetの方がお得感が強い。

 表に現れないものでは、さくらはDNSが強い。 5ゾーン分が付いてくる(ドメインくれるわけじゃないよ、DNSで管理できるゾーンの数だよ)ようで、さらにVPS側でDNSを立ててマスター、さくら側のDNSをスレーブにしてゾーン転送する運用も可能に見える。 これらをコントロールパネルで設定できる(この運用ではマスターの設定は自分でやるんだよ、当然)。 Ablenetはセカンダリーのみの運用はない。 逆引きはどちらもできる(どちらも無料のようだ)。 Ablenetは手で依頼、さくらはコントロールパネルでできるようだ。

 スケーラービリティではAblenetがV0以外へのプラン変更が自由なのに対し、さくらはプラン変更ができない。 ただし、さくらは同じリージョンに複数のVPSを立て、LANで結ぶことができる。 つまり、AblenetはVPS自体をスケールアップするのに対し、さくらの場合はサーバー構成をスケールアウトする形になる。

 どちらも試用期間があるが、Ablenetは制限がないのに対し、さくらは転送速度2Mbpsになり、複数VSP間のLAN設定や無料DNSが使えず、さらにOP25Bされる(SMTPがメールを送れない)。 すげー重要なところが確かめられないんですが。

 月払でとにかく安く済ませたいならさくらの512プランなのだが、このプラン、SSDの設定しかなくてストレージが20GBしかない。 さすがにこれはギリギリだと思う(手元のサーバーでdfしてみるとやっぱりギリギリ)。 HDDで50GBの設定があればさくらで決まりだと思うのだが。 AblenetのV0は使えるレベルのものが揃っていると思う。 次がさくらの1Gプラン、そしてAblenetのV1プラン。 メモリ容量が若干異なり、うまく棲み分けされた感じだ(笑)。

 とりあえず始めるならAblenetのV0、さくらのネットワーク機能が使いたいならさくらの1Gプランがよさそう。 とりあえずAblenetのV0プランで契約。 クレジットカード払い・試用ありで至って順調に契約。 あっという間に使えるようになった。 さくら面白そうだけどなー、100万PV/日いったら考えるかなー(ムリ)。

home / vps OSを入れる

 コントロールパネルは至ってシンプル。 CDROMメディアの入れ替え、起動・停止・サスペンド・リブートなどができる。 コンソールはVNCアプレットがChromeでは動かず、IEで操作することになる。 OSはとりあえず家の1万円サーバーにも入れたOpenSUSEにする。 サービス内容一覧には載ってないんだけど、コントロールパネルのインストールメディアには載っている。 ただし、ものすごく古い。 OpenSUSE 12.1が入ってた。 家の1万円サーバーだって12.3っすよ? まぁ、とりあえず入れて、あとでどうにかすることにします。

 入れるのはとりあえずさっくり。 入れたらとりあえずIPv6殺して、IPv4の設定して、ファイアウォール確認して、sshdの設定(rootログインとパスワード認証を殺す)やって、sshdのポート開けて、.ssh/authorized_keys作って、ChallengeResponseAuthentication殺して、一段落。

 続いてX11。 最初sshのX11フォワーディングができなかったけど、さっくり検索してsshdに-4付けたら動くように。 コマンドライン版のYaSTからGTK版のYaSTモジュール入れて、yast --gtkが動くことを確認。

 ここで、sshとXがやたら重いことに気づく。 VNCは重くても仕方ないかなぁ、と思っていたが、これは重すぎ。 xterm出てくるまでに10秒くらいかかる。 いろいろ悩んだが、管内の有線ホストへ一度sshでつないで、そこからさらにVPSホストにつなぐと普通に動くことに気づく。 結局、無線LANのAPを再起動したら普通になった。 元々、Xのデスクトップが遅いから買い足したAPだけど、無線LANは難しい。

 ついでなので、手元のDNSの設定もやっておきます(Aレコードの追加)。

 続いてOSのアップグレード。 OpenSUSEはリモートネットワークインストールの説明もあります。 アップグレードだと次のバージョンにしか進めないので、新規インストールで一気にOpenSUSE 13.2に上げてしまった方が早いけど、経験ということで一度やってみることにします。 サービス立ち上げてない今のうちに。 マニュアル(ちょっと探しにくい。12.3だとStart-UpのPart III、Chapter 16)にも書いてあるし、「OpenSUSE アップグレード」で検索すれば情報が出てきます。

 で、せっかくアップグレードしたところだけど、最新版をリモートネットワークインストールで入れてみることにします。

home / vps 閉じ括弧が打てない?!

 GRUB2での話。 標準で用意されていないディスクでブートする場合、GRUBのコマンドモードに入り、ルートデバイス・カーネル・initrdを指定してブートする。 このときに少なくとも1回はデバイス名を打つことになるが、GRUB2のデバイス指定は、例えば /dev/sda7 であれば(hd0,msdos7)のようになる。

 ブート直後はキー配列がUSになっており、開きカッコはSHIFT+9、閉じカッコはSHIFT+0である。 ところが、AblenetのVPS(QEMU+TightVNC)だとどういうわけかSHIFT+0が入らない。 Windows側をUS配列にしてもダメ。もっと変になる。 一応、タブ補完が効くので、(hd0,msdos7まで打ってTabを押せば)が入るが、タブ補完候補が閉じカッコ以外にもあると詰みである。

 今はAblenetパネルでVNCサーバー側のキーバインドをUS配列にし、PC側もUS配列にすれば、US配列で入力することができるようだ。 ブートしてしまえばVNC・PC側ともJIS配列に戻せば、普通にJIS配列で使える。

 ブート時にJIS配列にするなら以下の設定をする必要があるらしい。

  1. JP配列キーマップを作る。
    $ ckbcomp jp > jp.ckb
  2. GRUB2用のキーマップに変換する。
    # grub2-mklayout -o /boot/grub2/layouts/jp.gkb < jp.ckb
  3. GRUB2で以下のように設定する。
    terminal_input at_keyboard
    insmod keylayouts
    keymap 設定ファイル名
    

 grub2ディレクトリはopenSUSEの場合で、他のディストリビューションでは違うかもしれない。 grub2-mklayoutもプレフィックスが違うかもしれない。 適宜読み替えてください。

 問題はckbcompコマンドが一般的ではないこと。 Debianに入っているが、他のシステムにはたいてい入ってない。 どうするか悩んだ挙句、結局一旦Debianをインストールして、ckbcompだけ実行してjp.ckbをお持ち帰りしました。 ちなみに、GRUB2のバージョンが違うとjp.gkbは共用できない。 jp.gkbを作る作業、つまり、grub2-mklayoutの実行はopenSUSE側でやった方がよい(一度ハマったらしい)。 layoutsディレクトリはなければ作る。

 ここまで来ればあとはGRUB2の設定だけ。 いろいろなやり方があるが、/boot/grub2/custom.cfg に書くのが一番楽なようだ。 このファイルは /boot/grub2/grub.cfg から読み込まれるようになっている。 /boot/grub2/grub.cfg は grub2-mkconfig で生成されるが、このコマンドは /etc/grub.d ディレクトリをガサガサ漁ることになっている。 custom.cfg は 41_custom が grub.cfg に出力するようになっている。

 これでうまくいく、と思ったら、今度はterminal_inputをat_keyboardにしているとブート時のキー入力ができないことに気づく。 13.2にしたら若干マシになったが、ダメなときはやっぱりだめ。 consoleのままなら10回やって10回認識する。 起動時にat_keyboardを設定しなくても、insmodとkaymapさえ実行していれば、terminal_input=at_keyboardさえ実行すればJP配列になるのだが、長すぎるのでどうにかしたい。 bashならaliasにするところだが、GRUB2にはない。 が、GURB2にも関数はあるので、at という関数にしてみた。 これも custom.cfg に書ける。 結局、/boot/grub2/custom.cfg は以下のようにした。

function at {
    terminal_input at_keyboard
}
insmod keylayouts
keymap jp

 これでブート時にCを押してGRUB2のコマンドモードに入り、atと打てばJP配列になり、閉じカッコもSHIFT+9で打てるようになる。 ちなみに、お持ち帰りしたjp.ckbはこんなんでした。

file: jp.ckb.gz

home / vps ネットワークインストールメディアでの起動

 GRUB2はISOイメージから直接起動できる。 インストーラーもISOイメージを指定できるようだが、インストールメディアを丸ごとダウンロードするのもなんだかなぁ、ということで、ネットワークインストールメディアを使うことにする。 適当に空きパーティションを作っておいて(システムインストールするときにちょっとした空きを作っておくといろいろ便利だよ、5GB取ればDVDイメージ丸ごと入るし)、download.opensuse.org の distribution/13.2/iso から、openSUSE-13.2-NET-x86_64.iso を持ってくる。 そして、GURB2の /boot/grub2/custom.cfg に以下のように書く。

menuentry "install openSUSE" {
    loopback loop0 (hd0,msdos7)/openSUSE-13.2-NET-x86_64.iso
    set root=(loop0)
    linux (loop0)/boot/x86_64/loader/linux
    initrd (loop0)/boot/x86_64/loader/initrd
}

 さっきも説明したけど、/etc/grub.d 以下をごにょごにょするより、custom.cfg を直接いじくった方が楽。 デバイス名は適宜変更のこと。 ついでに、linuxの後ろにはいろいろパラメーターを書けるので、以下のようにインストール時に入力しなければならない項目をずらずら書いておくとよい。 場合によってはコピペもできるしね。 あとはブートするだけ。

menuentry "install openSUSE" {
    loopback loop0 (hd0,msdos7)/openSUSE-13.2-NET-x86_64.iso
    set root=(loop0)
    linux (loop0)/boot/x86_64/loader/linux video=800x600 hostip=192.0.2.3 gateway=192.0.2.1 nameserver=192.0.2.53 install=http://download.opensuse.org/distribution/13.2/repo/oss
    initrd (loop0)/boot/x86_64/loader/initrd
}

 video=800x600はコンソールのサイズをSVGAにする指定。 GUIインストラーは結局でかい画面で立ち上がってしまうが、インストール後のシステムにも引き継がれるようなので、指定しておいて損はない・・・かも?

 パラメーターの一覧はlinuxrcを参照。

 OpenSUSEからUbuntuのネットワークインストールメディアを起動する場合、カーネルとinitrdを持ってきて、custom.cfgを書き換える。 Ubuntuのドキュメントではカーネルはvmlinuzになっていたが、実際にダウンロードしたメディアではlinuxになっていた。

menuentry "install Ubunut-18.04-LTS" {
    insmod part_msdos
    insmod ext2
    set root=(hd0,msdos7)
    linux /ubuntu-18.04-LTS/ubuntu-installer/amd64/linux
    initrd /ubuntu-18.04-LTS/ubuntu-installer/amd64/initrd.gz
}

msdos7なのは後述するようなパーティションの切り方をしてるから。 今考えると別に/bootの下に放り込んでおいてもよかったのかも。

home / vps インストールの要点

 ここまでくればあとはインストールするだけなのだが、なんだか重い。 そして、タイムゾーン設定から先へ進めなくなってしまった。 仕方ないので、GRUB2のlinuxの指定にtextmode=1を指定してテキストモードインストーラーで作業をしてみたら、最終的な確認の時点でやっぱり止まってしまった。 おかしいなー、と思って[Alt]+[F3]だったでコンソールを切り替えて(これはテキストモードでしかできません)ログを見ると、OOMキラーが降臨してました。 生まれて初めて見たよ。 こんなところでメモリ0.5GBの弊害が(笑)。

 スワップを有効にすれば普通にインストールできる。 テキストモードならば裏のコンソールでいっぱいシェルが立ち上がっているので、適当な時点でswaponすればよい。 GUIインストーラーは裏コンソールがないので、一度「中止」でテキストモードのメニューに戻り、そこでコンソールを切り替えてswapon、テキストメニューからもう一度インストールを選ぶ。 いろいろ聞かれるが、一度GUIインストーラーが正しく立ち上がっていれば既に値が入っているはずなので、Enterを押していけばGUIインストーラーにたどり着く。 あとは普通にインストール。

パーティションは自分で切る。 今回のシステムはこんな感じ。

sda11.56GBswap
sda210GB/
sda320GB/home
sda4残り全部Extended
sda55GB/var
sda65GB/queue
sda75GB/util

 すべてEXT4ファイルシステム。 また、ボリュームラベルを設定し、ボリュームラベルによるマウントを指定。 /varはwritebackに、/queueはjournalにしてみた。 /queueはqmailのメールキュー用。 /utilは先ほどちょっと触れた「ちょっとした空き領域」。

 デスクトップはMinimal X Windowを選択。 「Minimal Server Slection (Text Mode)」だと本当に小さくて、yastの管理ツール部分が入らなかったりするので、Minimal X Windowの方が無難。

 新しいユーザーの作成では「このパスワードをシステム管理者の〜」のチェックと、「自動ログイン」のチェックを外す。 当然だ。

 最後の「インストール設定」では、Minimal X Windowを選んだせいで「既定のsystemdターゲット」が「グラフィカルモード」になっているので、「テキストモード」に変えておく。 なんか推奨されるけどんなもん知るか。 わしゃエージェント使ってsshで入るから、XDMいらんねん。

 再起動がうまく行かなくて電源が落ちてしまったが、電源入れなおしたらちゃんと起動した。 これでいいのかな?

home / vps インストール終了〜初期の設定

 sshで外からアクセスできるようにします。 外からアクセスするためにはファイアウォールをあける必要がありますが、その前に最低限のことはやっておきましょう。 とりえあずyastを立ち上げてソフトウェアアップデートします。 場合によってはパッケージシステムのアップデートの後、yastは自分自身を再実行して、もう一度アップデートになります。 2回目のアップデートでゴソゴソと必要なパッケージを更新して、さらに場合によってはリブート。

 続いてsshとファイアウォール。 とりあえず、/etc/ssh/sshd_config の PermitRootLogin を no にして、yastのSystem / Services Manager へ行って、sshd を Enable にして Start しておきます。 sshで一般ユーザーでログインできることを確かめ、さらにrootでログインできないことを確認。 続いてファイアウォール。 普通はイーサネットポートがExternal Zoneになっているはずですが、なっていなければExternal Zoneに設定しておきます。 続いて、Secure Shell Server のポートを開けます。 外部ホストからログインできることを確認し、公開鍵を ~/authorized_keys に書き込みます。 コピペでぽちっとね。 公開鍵ログインができることを確認したら、PasswordAuthentication と ChallengeResponseAuthentication を no にして、公開鍵でしかログインできないことを確認してとりあえずの設定は終了。

 これでほとんどの作業はVNCを使わずにできるようになります。 Xフォワーディング有効にしておけば、yast --qtなどでこっち側にいきなりyastのGUI画面を出すことだってできます。 icewmも動きますし、やろうと思えばKDEやGNOMEだって動きます。

 あと、ホスト名やらドメイン名やらネームサーバーやらを確認しておきます。 yastのネットワーク設定のページにあります。

home / vps ログ

 /var/log/messageがない! syslogdが動いてない! そもそもインストールされてない! と思ったら、systemdがログを取ってんですね。 journalctlでがっつり出ました。 どこでどうお片づけされるのか分かりませんが、いまのところ全部のログがひとかたまりになっています。 このままだと直近のログを見るのが面倒なので、journalctl --since=-1dのようにすると1日前(24時間前)からのログを見ることができます。

home / vps おまけ: CygwinのX

 何をインストールしたかは忘れちゃったけど、xorg-server かなぁ。 前はスタートメニューのショートカットから普通にサーバーが立ち上がってたんだけど、いつの頃からかうまく立ち上がらなくなったのと、最近のXサーバーはデフォルトでTCPをlistenしないようなので、もっぱらminttyから起動してます。 こんなaliasが作ってあります。

alias xwin='xwin -listen tcp -multiwindow'

このコマンドラインで立ち上げると、Xの窓=Windowsの窓、という状態で動きます。 ちなみにカイシャの機械はGLが腐ってるらしくて -nowgl も付けないと動かない。

 デスクトップを表示するような場合は、

$ xwin -listen tcp -screen 0 800x600 -noresize -nowinkill

とすると、Xのスクリーン=Windowsの窓になり、その中にXの窓が出ます。 alias定義している場合は xwin をフルパスで指定するとか、"xwin"などとクオートする必要があります。 -noresize はXのスクリーンとなっているWindowsの窓のサイズ変更を禁止する指定、-nowinkill は[Alt]+[F4](Windowsでウィンドウを閉じるショートカット)を無効にする指定です。 他に -keyhook や -unixkill といった指定ができます(マニュアル見てね)。

openSUSEを「Minimal X」でインストールするとicewmが使えるようです。 壁紙も何もありませんが。

 KDEやGNOMEのように広い土地が必要な場合は、

$ xwin -listen tcp -fullscreen -nowinkill

とすると、全画面モードになります。

この画像は家のデスクトップマシンでKDEを起動し、ノートPCのXサーバーにつないだもの。 気分はX端末。


Copyright (C) 2015-2018 akamoz.jp

$Id: index.htm,v 1.13 2018/11/06 03:19:24 you Exp $