Hatena::ブログ(Diary)

四角革命前夜

2013年04月07日(日)

FirefoxにJavaプラグインをインストールする

さくらのVPSにインストールしたOSを再インストールしたくなったのですが、まともなJRE環境がなかったので作ったのですよー。その手順です。

環境:Ubuntu 12.04 LTS 64bit


JREのダウンロード

http://java.com/ja/download/から、tar.gzをダウンロードしてきます。

今回ダウンロードしたものはjre-7u17-linux-x64.tar.gzでした。


アーカイブの展開と配置

適当なところに展開し、シンボリックリンクを貼ります。

$ mkdir -p ~/jre
$ tar xvfz jre-7u17-linux-x64.tar.gz -C ~/jre
$ cd /usr/lib/firefox-addons/plugins
$ sudo ln -s ~/jre/jre1.7.0_17/lib/amd64/libnpjp2.so

これでFirefoxを起動すると、Javaプラグインが読み込まれ、VNCのウィンドウが表示できます。

インストールが終わったら削除すればもっと良いかと。

2012年12月30日(日)

ドットインストール さくらのVPSの基礎

D

より。


なんとなく気になったので、さくらのVPSの基礎を観てみました。

で、Apacheの設定の所で気になったので調べてみたり。まあApache使ったことあんまりないし、これからもないだろうけど。


"ServerTokens Prod"って?

HTTPヘッダにApacheのバージョンとか使っているアプリケーションなどの情報を送信する設定みたい。

Prodにすると、Apache使ってるよー、くらいしかわからず、バージョンやOSなども伏せられる。

脆弱なアップデートしてないバージョンのものを使っていても、わかりにくくするようにするためかな。

まあそういうのはすぐにアップデートした方が良いのだけど。


"ServerSignature Off"って?

サーバが生成するドキュメントのフッタにエラーだったり、サーバのバージョンだったりを出力する設定みたい。

これもOffにすることで出力を抑止してあまり表示しないと。


"Options -Indexes FollowSymLinks"って?

これは見た感じだと、ディレクトリにアクセスされてもリストを表示しない、シンボリックリンクをたどる、って設定かなーと思ったらその通りだったみたい。


などなど。

iptables良く知らないから(ufw頼み)iptablesに詳しくなりたいなあと思いつつ手をつけてないなあ。

2012年09月12日(水)

さくらのVPSでUbuntuインストール時に8.8.8.8は使わない

Ubuntu 12.04 LTS 64bitインストール時のネームサーバの設定のところで、さくらインターネットから指定されたネームサーバのIPの他に、8.8.8.8と8.8.4.4を追加したらインストールにめちゃくちゃ時間がかかった……

時間かかりすぎるので中断して、8.8.8.8と8.8.4.4を入れないでみたらすぐにインストールが終わった。

というわけで次からはちゃんと指示された通りにやって、余計なことをしないようにしよう……

2012年01月14日(土)

node.jsを動作させる環境を作ったよ

CGIを今まで作ったことが無くて、でも何かを読んだときのおぼろげな記憶は残っていて、

それにはコマンド実行用のユーザを作って、そのユーザで動作させると書いてありました。

Apacheなどは最初からそうなってるとか見たような気がしないでもないですが。

とかまあ、早い話がnginx本の最初を読みながらnode.js実行用のユーザ作ったよって話です。何が早い話なのか……

環境:さくらのVPS 512 / Ubuntu 10.04.3 LTS 64bit


ユーザを作る

$ sudo mkdir -p /opt/node
$ sudo useradd --shell /usr/sbin/nologin --home /opt/node
$ sudo chown node:node /opt/node

最初にnodeユーザのためのディレクトリを作って、その後ユーザ追加、ディレクトリの所有者を変更、としています。

あとからログインしようと思ったら出来なくて、そりゃ当たり前でシェルにnologinしていしてるんだからログインできないよね、

ということで変更を。

$ sudo usermod --shell /bin/bash node
$ sudo passwd node

nodeユーザのシェルを変更後、パスワードの設定。


ユーザの切り替えと初期設定

$ su - node
Password:
$ vi .bashrc

.bashrcを作ります。内容は以下のように。

alias ls='ls --color=auto'

NVM=$HOME/nvm/nvm.sh
if [ -f "$NVM" ]
then
  source "$NVM"
fi

実はこれだけだと読み込まれなくて、.bash_profileを作る必要があるんですが、ここではとりあえずこのまま。


nvmのインストール

$ git clone https://github.com/creationix/nvm.git ./nvm
$ logout
$ su - node
Password:
$ nvm ls
nvm? 知らんなあ的メッセージ

というわけで.bash_profileが必要だと気付いたのでMacと同じく.bashrcを読み込むだけのものを作ります。

$ vi .bash_profile

内容は以下のように。-fじゃない方が良いんだろうけど、まあいいや。

if [ -f .bashrc ]
then
  source .bashrc
fi

これで再度ログインし直して、nvm lsが使えることを確認。あとは

$ nvm install v0.6.7
...
$ nvm use v0.6.7

で使えます。nvm defaultだっけ?を使ってログイン直後から使えるようにしておいた方が良いのかもしれません。


Hello, World!

$ node -e 'console.log("Hello, World!")'

Hello, World!


あとMongoDB用のユーザも作ってあげればいいのかなー。

でも本来はここからなんだよね……


追記:

.npmrcの設定を忘れてた。

$ su - node
Password:
$ touch ~/.npmrc
$ vi .npmrc

内容は以下。

root = $HOME/.npm/libraries
binroot = $HOME/.npm/bin
manroot = $HOME/.npm/man

2012年01月10日(火)

さくらのVPSを再インストールしたよ

Ubuntu10.04 LTS Serverを入れてそのまま放置していたので再インストールしたのでした。

入れたディストリビューションはまたしてもUbuntu10.04.3 LTS Server 64bitです。


インストール後の設定

とりあえずローカル環境から公開鍵をscpで転送しておきます。

$ scp -P ポート番号 公開鍵のファイル ユーザ名@IP:配置するパス

ポート番号はインストール直後なので22ですね。てかポート番号指定する必要ないかも。


あとはリモートでの操作を。

$ ssh -p ポート番号 ユーザ名@IP

メモリ使用量を表示しておきます。

$ free -m
             total       used       free     shared    buffers     cached
Mem:           493        264        229          0         14        190
-/+ buffers/cache:         58        435
Swap:          894          0        894

タブで補完しようとするとlocaleがなんとかとうるさいので、LC_ALLを設定します。

$ locale # 設定が表示される
$ export LC_ALL="en_US.UTF-8"
$ cp ~/.bashrc{,.bak}
$ echo 'export LC_ALL="en_US.UTF-8"' >> ~/.bashrc

続いて鍵の設定を。

$ mkdir ~/.ssh
$ cat 公開鍵のファイル >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
$ rm 公開鍵のファイル

続いてsshの設定を。

$ cd /etc/ssh
$ sudo cp sshd_config{,.bak}
$ sudo vi sshd_config
ポート番号を変更
PermitRootLoginをnoに
PasswordAuthenticationをnoに(コメントアウトされてたけど一応)
$ sudo service ssh restart

ポート番号を変更したらsshを再接続したほうがいいかも。


続いてufwの設定を。

$ sudo ufw default reject incoming
$ sudo ufw default allow outgoing
$ sudo ufw limit sshのポート番号/tcp  # ポート番号を変更していないなら ssh/tcp で設定できる
$ sudo ufw allow http/tcp
$ sudo ufw allow https/tcp
$ sudo ufw enable
$ sudo ufw status verbose  # ステータスの確認

続いてアプリケーションのインストールを。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install -y build-essential curl git-core libssl-dev mercurial ntp screen sysv-rc-conf

libssl-devはnode.js用です。


続いてttyの設定を。

$ cd /etc/default
$ sudo cp console-setup{,.bak}
$ sudo vi console-setup
tty[1-6]となっているところをtty[1-2]に変更
$ cd /etc/init
$ for i in `seq 3 6`; do sudo sed -i.bak 's/^/#/' tty${i}.conf; done

続いてsysv-rc-confで不要なデーモンの起動をしないように設定を。

$ runlevel
N 2
$ sudo sysv-rc-conf
runlevel 2のdns-cleanとpppd-dnsとrsyncを起動しないようにチェックを外す

続いてntpサーバの設定を。

$ cd /etc
$ sudo cp ntp.conf{,.bak}
$ sudo vi ntp.conf
server ntp.ring.gr.jp
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
server ntp.nict.jp
を追加

続いてresolv.confにGoogleのDNSを追加する設定を。

$ sudo cp resolv.conf{,.bak}
$ sudo vi resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
を追加

最後に再起動!

$ sudo shutdown -r now

で、メモリ使用量を見てみると。

$ free -m
             total       used       free     shared    buffers     cached
Mem:           493         86        406          0          7         41
-/+ buffers/cache:         37        455
Swap:          894          0        894

かなり空いた!

2011年02月26日(土)

さくらのVPSを借りてUbuntuをインストールしたよ + 初期設定をするスクリプトを書いた

何かを試そうとしたら今まではVMwarePlayerにUbuntuServerをインストールして、ってことをやってたのですが面倒になってきたので、さくらのVPSを借りました。(借りた数日後に上位プラン発表なんて…… まあ、サービス作るわけじゃないからいいけど)

何をするにも速くていい感じ。カスタムOSのインストールも楽だし、もっと早く借りればよかったかも。


何かを試すときは必ずインストール直後の状態にするのですが、そのあと共通の設定もいろいろするわけで、コマンドを手で打つのも面倒ですし、スクリプトを書いたのでした。スナップショットが撮れたりしたらいいんだけどなー……

https://bitbucket.org/sasaplus1/scripts/ - Sakura-VPS-Ubuntu-Init.sh

以下はこのスクリプトのメモです。


# ssh key pairs settings
COMMENT=
PASSPHRASE=
KEY_FILENAME=sakura_vps_id_rsa

# ssh port number
SSH_PORT=10022

上の方は生成する(公開/秘密)鍵の設定。(サーバで鍵を生成するってどうなんだろう……)

KEY_FILENAMEを空にすると鍵を生成しません。

下の方はsshのポート番号。SSH_PORTを空にするとsshdの設定とiptablesの設定をしません。


if [ "$KEY_FILENAME" ]; then
  ssh-keygen -t rsa -C "$COMMENT" -N "$PASSPHRASE" -f $KEY_FILENAME
  SSH_DIR=$HOME/.ssh
  if [ ! -d $SSH_DIR ]; then
    mkdir $SSH_DIR
  fi
  cat $KEY_FILENAME.pub >> $SSH_DIR/authorized_keys2
fi

鍵を生成している部分。$HOME/.sshディレクトリを作って、authorized_keys2に生成した公開鍵を登録します。


if [ "$SSH_PORT" ]; then
  SSHD_CONFIG=/etc/ssh/sshd_config
  sudo sed -i.bak "s/^\(Port\).*/\1 $SSH_PORT/" $SSHD_CONFIG
  sudo sed -i 's/^\(PermitRootLogin\).*/\1 no/' $SSHD_CONFIG
  sudo sed -i 's/^#\(PasswordAuthentication\).*/\1 no/' $SSHD_CONFIG

  sudo ufw default reject incoming
  sudo ufw default allow outgoing
  sudo ufw limit $SSH_PORT/tcp
  sudo ufw allow http/tcp
  sudo ufw allow https/tcp
  sudo ufw enable
fi

sshdの設定とiptables(ufw)の設定をしている部分。

sshdの設定は

  • ポート番号変更
  • rootでのログインを禁止
  • パスワード認証を禁止

です。

iptables(ufw)の設定は以下の通り。

  • 外から来るものはデフォルトでConnection Refusedを返す
  • 中から出ていくものは許可する(トロイの木馬にかかったら危ないかも)
  • sshは回数制限付きで解放(scpするとき困ることがあるかも?)
  • http解放
  • https解放

最後に有効化しています。sshで接続してる場合は

Command may disrupt existing ssh connections. Proceed with operation (y|n)?

とか聞かれるけどyにしても切れなかったし、大丈夫なのかな。多分。

(sshは国内からのみアクセスできるようにした方がいいんだろうけど、どうやるんだろう?)

参考:

さくらのVPSでファイアーウォールが何も設定されていないのに驚愕したが ufw で解決 - babie steps

ハレとケガレのweblog pid0.org支店: さくらのVPS Ubuntu 10.04 ファイヤーウォールの設定


sudo apt-get update
sudo apt-get upgrade -y

sudo apt-get install -y build-essential
sudo apt-get install -y git-core
sudo apt-get install -y mercurial
sudo apt-get install -y ntp
sudo apt-get install -y sysv-rc-conf

パッケージのアップグレードをしたりとかその他いろいろ入れたりとか。


if [ `which sysv-rc-conf` ]; then
  sudo sysv-rc-conf dns-clean off
  sudo sysv-rc-conf pppd-dns off
  sudo sysv-rc-conf rsync off
fi

必要の無さそうなサービスを止めます。上から順に、

  • PPP接続前にDNSキャッシュをクリアするデーモン?
  • PPPデーモン?
  • rsyncのデーモン

です。正直、rsync以外は何なのかわかりません……


NTP_CONF=/etc/ntp.conf
sudo sed -i.bak 's/^\(server.*\)/#\1/' $NTP_CONF
sudo sed -i '
$a \
server ntp.ring.gr.jp\
server ntp1.jst.mfeed.ad.jp\
server ntp2.jst.mfeed.ad.jp\
server ntp3.jst.mfeed.ad.jp\
server ntp.nict.jp
' $NTP_CONF

ntpサーバをいくつか設定します。

参考:NTP/推奨公開サーバ - wiki@nothing


sudo sed -i.bak '
1a \
nameserver 8.8.8.8\
nameserver 8.8.4.4
' /etc/resolv.conf

Google Public DNSを追加します。aptとかHTTP GETが速くなるらしいです。

特に遅いと思ったことはないので、もしかしたらDebianだけなのかも。

参考:さくらの VPS で名前解決が遅い - #生存戦略 、それは - subtech


sudo sed -i.bak 's#^\(ACTIVE_CONSOLES\).*#\1="/dev/tty[1-2]"#' /etc/default/console-setup
for i in `seq 3 6`; do
  sudo sed -i.bak 's/^/#/' /etc/init/tty${i}.conf
done

ttyを6つから2つに減らします。メモリが削減されるとか。

参考:ページが見つかりませんでした | 不動産一括査定のイエイ!他の一括査定サービスと徹底比較


あとは秘密鍵をscpでコピーしてサーバ上の秘密鍵を消したあと、再起動するだけです。