211
194

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

さくらのレンタルサーバ(スタンダード)でNode.jsをインストールする

Last updated at Posted at 2014-06-30

「Node.js」をさくらでやるならVPSを契約しないとだろうなあ、レンタルサーバじゃ無理だよなあ。と思っていたら、できるという噂が。そこで、試してみた。

尚、開発環境はMac OS X 10.9(2014/06時点で最新のもの)。

さくらのレンタルサーバにSSHでログインする

ターミナル(自分の場合はiTerm2)を開いて、sshコマンドでログイン。(サーバの文字コード設定がEUC-JPになっているため、ターミナルの文字コード設定も「Japanese(EUC)」にしないと日本語が文字化けする。)

$ ssh (sakura's login name)@(sakura's domain name)
password:(input your password)

vimをインストール

別に不要かもしれないが、何かと便利そうだったので、vimをインストールすることにした。以下のサイトを参考にさせてもらった。(この後の内容は、ほぼ、このサイトと一緒。)

まず、ソース用のディレクトリを作成して移動。

% mkdir -p $HOME/local/src
% cd $HOME/local/src

ソースを手に入れる。2014/06時点でのvimの最新版は7.4版だが、「extra」なるものと「lang」なるものが7.2版までしかないため、vim本体も7.2版をゲットした。

% wget ftp://ftp.vim.org/pub/vim/unix/vim-7.2.tar.bz2
% wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gz
% wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-lang.tar.gz

解凍し、出来上がった「vim72」へ移動。

% tar jxf vim-7.2.tar.bz2
% tar xvzf vim-7.2-extra.tar.gz
% tar xvzf vim-7.2-lang.tar.gz
% cd vim72

パッチ用のディレクトリを作成し、パッチをゲット。(2014/06現在の7.2版のパッチは「446」まである。)

% mkdir patches
% cd patches
% curl -O 'ftp://ftp.vim.org/pub/vim/patches/7.2/7.2.[001-446]'

ひとつ上に戻り、パッチを適用。

% cd ../
% cat patches/7.2.* | patch -p0

インストール。オプションは、参考サイトに従った。

% ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big --prefix=$HOME/local
% make
% make install

これでインストールは完了。あとは、参考サイトにも書いてある、「vi」で「vim」が起動させるようにする設定を行った。

% cd
% vi .cshrc

"set path = (◯◯...)" となっているカッコ内の一連の記述に「$HOME/local/bin」を追加し、更に、このファイルのどこかに1行、「alias vi vim」の記述を追加。sourceコマンドで、その設定を反映。

% source .cshrc

whichコマンドで確認してみた。

% which vi
vi: 	 aliased to vim

ついでに$HOMEに.vimrcも作成。内容は、Vimの設定ファイルを作ると、ずんWiki - vimにある「文字コードの自動認識」のものをそっくりそのまま入れさせてもらった。

.vimrc
"#####表示設定#####
set number "行番号を表示する
set title "編集中のファイル名を表示
set showmatch "括弧入力時の対応する括弧を表示
syntax on "コードの色分け
set tabstop=4 "インデントをスペース4つ分に設定
set smartindent "オートインデント

"#####検索設定#####
set ignorecase "大文字/小文字の区別なく検索する
set smartcase "検索文字列に大文字が含まれている場合は区別して検索する
set wrapscan "検索時に最後まで行ったら最初に戻る

" 文字コードの自動認識
if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  " iconvがeucJP-msに対応しているかをチェック
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  " iconvがJISX0213に対応しているかをチェック
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  " fileencodingsを構築
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  " 定数を処分
  unlet s:enc_euc
  unlet s:enc_jis
endif
" 日本語を含まない場合は fileencoding に encoding を使うようにする
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
" 改行コードの自動認識
set fileformats=unix,dos,mac
" □とか○の文字があってもカーソル位置がずれないようにする
if exists('&ambiwidth')
  set ambiwidth=double
endif

もう一度「vi .vimrc」で開いて、文字色など設定した内容が反映されていることを確認。これで、vimのインストールは完了。


# Node.jsをソースコードからインストール

## その前にlibexecinfoのインストール

[root権限なしでNode.js、MongoDBをインストールする方法](http://uguisu.skr.jp/Windows/node.html) や [さくらのレンタルサーバ(スタンダード)にnode.jsをインストールしてみた](http://blog.tmtr.jp/2013/04/nodejs.html) を参考にした。Node.jsの前に「libexecinfo」とやらをインストールしないとNode.jsをビルドできないらしいので、まずはlibexecinfoをインストールする。

### 更にその前にportsのインストール

そのlibexecinfoをインストールする上で、どうやらportsというもののインストールが必要であるっぽい。[Sakura共用サーバにportsをインストール](http://d.hatena.ne.jp/faw/20090109)を参考に、インストールしてみた。

まずはports treeとやらの取得。

```shell-session:
% cd ~/local
% mkdir work
% mkdir work/ports
% mkdir work/ports/distfiles
% mkdir var
% mkdir var/db
% mkdir var/db/portsnap
% vi work/ports/portsnap.conf

portsnap.confを以下のように記述。

portsnap.conf
# Default directory where compressed snapshots are stored.
WORKDIR=/home/(user name)/local/var/db/portsnap

# Default location of the ports tree (target for "update" and  "extract").
PORTSDIR=/home/(user name)/local/work/ports

# Server or server pool from which to fetch updates.  You can change
# this to point at a specific server if you want, but in most cases
# using a "nearby" server won't provide a measurable improvement in
# performance.
SERVERNAME=portsnap.FreeBSD.org

# Trusted keyprint.  Changing this is a Bad Idea unless you've received
# a PGP-signed email from <security-officer@FreeBSD.org> telling you to
# change it and explaining why.
KEYPRINT=9b5feee6d69f170e3dd0a2c8e469ddbd64f13f978f2f3aede40c98633216c330

# Example of ignoring parts of the ports tree.  If you know that you
# absolutely will not need certain parts of the tree, this will save
# some bandwidth and disk space.  See the manual page for more details.
#
# WARNING: Working with an incomplete ports tree is not supported and
# can cause problems due to missing dependencies.  If you have REFUSE
# directives and experience problems, remove them and update your tree
# before asking for help on the mailing lists.
#
REFUSE arabic chinese french german hebrew hungarian
REFUSE korean polish portuguese russian ukrainian vietnamese
REFUSE x11 x11-clocks x11-drivers x11-fm x11-fonts x11-servers x11-themes x11-toolkits x11-wm
REFUSE palm cad astro

portsnapコマンドで、このconfigファイルを指定。

% portsnap -f ~/local/work/ports/portsnap.conf fetch extract update

次にportsからのインストール設定。portsからインストールするものは「$HOME/local/ports」に全てインストールするようにした。

% cd ~/local
% mkdir ports
% cd ports/
% mkdir -p bin sbin etc lib tmp/dist tmp/work var/db/pkg var/db/ports var/run
% vi ~/.cshrc

portsとNode.jsのための設定を.cshrcに追加する

以下のsetenvの設定を追加。

.cshrc
setenv  PATH    ${PATH}:${HOME}/local/ports/bin
setenv  NODE_PATH   ${HOME}/local/ports/bin/node
setenv  NODE_MODULES    ${HOME}/local/lib/node_modules
setenv  LD_LIBRARY_PATH
setenv  LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HOME}/local/lib

setenv	INSTALL_AS_USER	yes
setenv	PREFIX	${HOME}/local/ports
setenv	LOCALBASE	${HOME}/local/ports
setenv	PKG_DBDIR	${LOCALBASE}/var/db/pkg
setenv	PKG_TMPDIR	${LOCALBASE}/tmp/
setenv	PORT_DBDIR	${LOCALBASE}/var/db/pkg
setenv	DISTDIR	${LOCALBASE}/tmp/dist
setenv	WRKDIRPREFIX	${LOCALBASE}/tmp/work
setenv	PORTSDIR	${HOME}/local/work/ports
setenv	PKGTOOLS_CONF	${LOCALBASE}/etc/pkgtools.conf
setenv	DEPENDS_TARGET	'install clean'

setenv	X11BASE	${LOCALBASE}

setenv	PKG_CONFIG_PATH	"$HOME/local/ports/lib/pkgconfig:$HOME/local/ports/libdata/pkgconfig:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/libdata/pkgconfig:/usr/libdata/pkgconfig"

# Set user and group variables to ourself
setenv	BINOWN	`whoami`
setenv	BINGRP	`id -G -n ${BINOWN}`
setenv	SHAREOWN	${BINOWN}
setenv	SHAREGRP	${BINGRP}
setenv	MANOWN	${BINOWN}
setenv	MANGRP	${BINGRP}

# Make sure files are installed with correct default permissions
setenv	BINMODE	744
setenv	SHAREMODE	644
setenv	MANMODE	644

# Make sure we don't really try to become root, but just execute everything as ourselves
setenv	SU_CMD	"sh -c"

# Make sure the systemdefault make.conf is not read
setenv	__MAKE_CONF	${LOCALBASE}/etc/make.conf

# Keep our own version of ldconfig hints
setenv	LDCONFIG	"/sbin/ldconfig -i -f ${LOCALBASE}/var/run/ld-elf.so.hints"
#setenv	LDCONFIG	"/sbin/ldconfig -f=${LOCALBASE}/var/run/ld-elf.so.hints -i -R=${LOCALBASE}/etc/ld-elf.so.conf "
setenv	LD_LIBRARY_PATH	${LOCALBASE}/lib
setenv	LD_RUN_PATH	${LOCALBASE}/lib

setenv	PATH	${LOCALBASE}/bin:${LOCALBASE}/sbin:${PATH}
setenv	MANPATH_MAP	${LOCALBASE}/bin:${LOCALBASE}/man

# Set application specific variables to make sure it doesn't pick up things from the main system
setenv	APXS	${LOCALBASE}/sbin/apxs
setenv	PERL	${LOCALBASE}/bin/perl
setenv	PERL5	${PERL}
setenv	SITE_PERL	${LOCALBASE}/lib/perl5/site_perl/5.8.8
setenv	SITE_PERL5	${SITE_PERL}
setenv	PERL_VERSION	5.8.8
setenv	PERL_VER	${PERL_VERSION}

setenv  SRCCONF     ~/local/ports/etc/src.conf

Node.jsのインストール

Node.js公式のダウンロードページからソースコードをゲットし…とやってみたものの、上手くいかなかった。試行錯誤の結果、先ほどインストールしたportsとやらにNode.jsが入っていたので、そちらのものを「make install」することでインストールした。

% cd ~/local/work/ports/www/node
% make install

途中、依存するライブラリに関して「◯◯をインストールしますか」的なダイアログが表示されるが、全てデフォルトのままで「OK」を選び、インストールを続けた。

インストールが完了したら、「node -v」のコマンドで、インストールが正常に完了したかを確認する。

% node -v
v0.10.28

バージョンが表示されれば、インストールは正常に完了。

このあと調べたいこと

で、どこまでNode.jsが使えるかっていう。root権限なしでNode.js、MongoDBをインストールする方法 に書かれているような、express入れて、socket.ioで何やかんやとか、MongoDB入れて、とかって本当にレンタルサーバでできるのか、を調べてみたい。もう少し遊んでみる予定。

211
194
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
211
194

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?