wktk's diary

日記やメモ

VPS を引っ越した

引っ越し先は DigitalOcean。最近よく DigitalOcean の良い評判を耳にしていて、希望の価格帯である $5 前後のプランもあったので移ることに決めた。

最小課金単位が 1 時間で、簡単にインスタンスを作成・破棄できるので、金額を気にせず気軽に遊べて便利。

今までの VPS は 日本ラッド の Osukini サーバー の LT プランを使っていた。

現行のサーバーには特に不満があるわけではないけど、強いて言えば回線が実測 1 MB/s くらいしか出てないこと、サーバーのサブネットが BBQ 規制リストに載ってしまっていてプロキシ扱いされることがあるのは気になっていた。

新しいサーバー名は、現在のサーバーの名前の macaron を 連想検索エンジン reflexa に入れて出てきたエクレアからとって、eclair.wktk.jp にした。

OS は Arch Linux にした。今まで通り Ubuntu でも良かったんだけど、Arch Linux を使ったことがないので試してみることにした。

セットアップでやったことを自分用にメモしておく。

# パッケージのアップデート
pacman -Syu --ignore filesystem
pacman -Su

# とりあえず入れるパッケージ
pacman -S git wget nginx whois dnsutils vim ntp ufw unbound zsh

# ログイン用ユーザー
useradd -m -g users -G wheel wktk
visudo  # %wheel の有効化

# /root/.ssh/authorized_keys をログイン用ユーザーに移動、所有者をユーザーにする

# root ログインの無効化
## これやって Web コンソールが使えなくならないか試してない
usermod -L root

# sshd の設定
## Port, PermitRootLogin, PasswordAuthentication を編集
vim /etc/ssh/sshd_config
systemctl reload sshd

# DNS サーバーの設定
## デフォルトで入ってた 4.2.2.1 はときどき調子が悪く、DigitalOcean 側で NS サーバーが用意されているわけでもなく、Google Public DNS を使うのも嫌だったため、ローカルにキャッシュサーバーを置くことにした。
wget ftp://FTP.INTERNIC.NET/domain/named.cache -O /etc/unbound/root.hints
vim /etc/unbound/unbound.conf
## root-hint: "/etc/unbound/root.hints" を追加
systemctl enable unbound
systemctl start unbound
vim /etc/network.d/ethernet-static
## DNS を 127.0.0.1 に変更する
## 最初は /etc/resolv.conf.head に設定してたけど、再起動すると無視されるようになったのでこっちを書き換えた。

# タイムゾーンを Asia/Tokyo に
timedatectl set-timezone Asia/Tokyo

# locale の設定
vim /etc/locale.gen
locale-gen
locale > /etc/locale.conf
vim /etc/locale.conf
## LC_COLLATE=en_US.utf8

# 時刻を聞きにいく NTP サーバーの設定
vim /etc/ntp.conf
systemctl enable ntpd
systemctl start ntpd

# デフォルトの umask を変える
vim /etc/profile

# ufw の設定
## SSH が締め出されないように気をつける
## ufw で充分なので iptables から移行した
ufw limit (SSH のポート)/tcp
ufw default deny
ufw allow 25/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 3000/tcp
## ... 他のポートも適宜
ufw enable
systemctl enable ufw
systemctl start ufw

# nginx の設定
## /etc/nginx 以下を適宜編集する
systemctl enable nginx
systemctl start nginx

# スワップファイル
## "How to Add a Swap File on an Arch Linux Cloud Server | DigitalOcean"
## https://www.digitalocean.com/community/articles/how-to-add-a-swap-file-on-an-arch-linux-cloud-server

fallocate -l 1024M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap defaults 0 0" >> /etc/fstab

# Postfix
## /etc/postfix 以下を適宜編集
systemctl enable postfix
systemctl start postfix

# crond
systemctl enable cronie
systemctl start cronie

# あとは rbenv 周りとか

ruby の管理を rbenv に移行した

自分用メモです

背景

Ubuntu に apt-get からの ruby 1.8, 1.9.3 とソースからインストールした ruby 2.0.0-p0 を入れてあった。
それぞれの ruby のバージョンの住み分けが面倒な感じになってしまった。
よって rbenv (と ruby-build) を system-wide にインストールして使うことにした。
ちなみに Ruby は 1.9 の時代から始めたので 1.8 と 1.9 では問題を経験してない。

apt-get で入れた ruby を削除、必要そうなパッケージをインストール

必要なパッケージ一覧は Debian 7.0, Ubuntu 13.04 に rbenv をインストールする #Debian #Ruby #rbenv #Ubuntu - Qiita [キータ] からコピペ。

apt-get remove ruby1.8 ruby1.9.1 ruby1.9.1-dev ruby1.9.1-examples ruby1.9.1-full ruby1.9.3
apt-get install build-essential bison libreadline6-dev curl git-core zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libncurses5-dev
apt-get autoremove

2 行目は既にインストールされてるものの方が多かった気がする。

ruby 2.0.0 を削除

ruby 2.0.0 のインストール時にソースを展開したディレクトリに移動して、

cd ~/ruby-2.0.0-p0
cat .installed.list | xargs rm -rf

ruby 2.0.0 を削除。中身は ruby 2.0.0 関連のものだけだったので rm -rf にしちゃったけど、他にいい方法があるのかも。

rbenv を入れる

rbenv install and system wide install on Ubuntu 10.04 LTS. を参考にして、/usr/local/rbenv/ 下に rbenv 一式を入れた。

インストールしたバージョンは 1.9.3-p429 と 2.0.0-p195 で、後者を global にした。

rbenv install 1.9.3-p429
rbenv install 2.0.0-p195
rbenv global 2.0.0-p195
rbenv rehash
ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [i686-linux]

これでとりあえず動くようになった。

あと、それぞれの ruby

gem install rbenv-rehash

しておくと自動で rbenv rehash されるっぽい。

近況など (2013/04)

高 3 の単位を落とした (2012/10 - 2012/12 ごろ)

いろいろあって学校に行けなかった。

総合学習の 1 単位だけは夏休み期間中に自由な時間帯に授業を設定してもらって修得できた。

それ以外はすべての単位を落とした。

高卒認定を取得した (2012/12)

必修得単位を修得できなくなる可能性は早くからわかっていたので、24 年度第 2 回の高卒認定試験に出願してあった。

土曜授業のあとそのまま試験会場の東工大に向かって、1 科目だけ受けてきた。

高校の 1 年次で修得した単位で試験科目を免除 *1 できて、難易度は高くなかった。

高校を退学した (2013/03)

退学する、留年する、完全に単位制の高校に転校するなどの選択肢があったけど、退学することにした。

通い続けて卒業したいと思ってはいたので残念ではあった。

状況が多少複雑で退学を決めるまで長くかかってしまって、関係者には大分迷惑をかけた。

これから (2013/04)

高卒認定資格があるのでそのまま大学に進むこともできた。

でも 3 年次の勉強もまともにできないまま進学してしまうのが嫌だったので、1 年間の浪人の形で勉強しようと思ってる。

*1:ただし最低 1 科目は受験して合格する必要がある

Ruby で Pxem を動かせるライブラリを書いた

たしか 1 ヶ月くらい前に書いたんだけど忘れてた。

Ruby から Pxem を実行できる RPxem というライブラリを書いて公開した。
https://github.com/wktk/rpxem
https://rubygems.org/gems/rpxem

RubyGems です。

使い方

コマンドラインから `gem install rpxem` でインストールできる。

すると、下のように rpxem というコマンドが使えるようになる。

$ touch "Hello, world!.pxe"
$ rpxem "Hello, world!.pxe"
Hello, world!

C++ の本家インタプリタ、pxemi (pxem) と同じように使えるはず。

Ruby からも使える。

require "rpxem"
RPxem.run("Hello, world!.pxe")

思ったことなど

  • 実行結果を STDOUT でなく返り値としてとれるようにしてないのでやりたい。
  • RPxem を書いてる間ずっと本家サイトのサーバーに接続できず、以前ダウンロードした pxemi のソースコードを見ながら書いた。そのため pxemi を移植したような感じになっている。
    • 因みに、今は本家サイトのサーバーには接続できるようになったものの、バーチャルホスト設定が消失したためかサーバー事業者のページが表示されてしまい、サイトには相変わらずアクセス出来ない。
  • 大きな数字を渡すと本家と動作が異なるかも。実際にやってみたら違ったけど、その辺りはよく知らないのでなんともいえない。