Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

「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をインストールする方法さくらのレンタルサーバ(スタンダード)にnode.jsをインストールしてみた を参考にした。Node.jsの前に「libexecinfo」とやらをインストールしないとNode.jsをビルドできないらしいので、まずはlibexecinfoをインストールする。

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

そのlibexecinfoをインストールする上で、どうやらportsというもののインストールが必要であるっぽい。Sakura共用サーバにportsをインストールを参考に、インストールしてみた。

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

% 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入れて、とかって本当にレンタルサーバでできるのか、を調べてみたい。もう少し遊んでみる予定。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away