Node.jsをFedora26にインストールして動作テスト

はじめに

こんにちは、野村です。

今回は、Node.jsをFedora26にインストールします。
そして、いくつかテストの例を紹介します。

「Node.js」というのは、サーバーサイドでJavaScriptを実行させるための環境です。
従来はWebブラウザ上で動かすものだったJavaScriptが、Node.jsによって活躍の場を広げた、といえばいいのかな?

上手い説明が見つからない。

インストール

Node.jsとnpmのインストール

Node.js本体とそのパッケージマネージャーであるnpmをインストールします。
管理ユーザになって以下のコマンドを実行します。

# dnf install nodejs npm

バージョンを確認します。

# node -v
v6.11.3
# npm -v
3.10.10

nのインストール

「n」とは、Node.jsをバージョンアップするためのライブラリです。
管理者ユーザになって以下のコマンドを実行すればインストールできます。

# npm -g install n

nの使い方

特定のバージョンにバージョンアップする場合は、バージョンを記入します。

# n 0.12.14

最新の安定版にバージョンアップする場合

# n stable

長期サポート版にバージョンアップする場合

n lts

バージョンアップ

ここでは、Node.jsとnpmのバージョンアップの例を紹介します。

必ずNode.jsを先行してバージョンアップしてください。
npmを先行すると、依存関係が壊れる恐れがあります。

Node.jsのバージョンアップ

最新の安定版にバージョンアップしてみます。
管理者ユーザになって以下のコマンドを実行します。
アップデート後、PCを再起動すれば反映されます。

# n stable
# reboot

再起動したら、バージョンを確認してみます。

$ node -v
v8.6.0

npmのバージョンアップ

管理者ユーザになって以下のコマンドを実行します。

# npm update npm -g

バージョンを確認してみます。

# npm -v
v5.3.0

アンインストール

混乱を避けるため、最初にインストールしたnodejsとnpmを削除します。
管理者ユーザになって以下のコマンドを実行します。

# dnf remove nodejs

実行テスト

計算スクリプト

「sosu.js」というファイルを作成し、以下のコードを書き込みます。

'use strict';
 
const range = (m,n)=>Array.from(Array(n).keys()).slice(m);
 
const sosu = (a)=>{
    if (a[0] > Math.sqrt(a[a.length-1])) return a;
    return [a[0]].concat(sosu(a.slice(1).filter((x)=>x%a[0]!=0)));
}
 
console.log(sosu(range(2,10))); // 10未満の素数を表示

実行すると、こんな結果が出ます。

$ node sosu.js
[ 2, 3, 5, 7 ]

CGI

あまり実用的と思えないのですが、Node.jsでcgiを書くことができます。

Webサーバの公開デレクトリに「node.cgi」という名前でファイルを作成し、以下のように書き込みます。

#!/usr/bin/node

console.log('Content-type:text/html');
console.log('');
console.log('<html>');
console.log('<head><title>node-cgi</title></head>');
console.log('<body><h1>node-cgi</h1></body>');
console.log('</html>');

ファイル「node.cgi」に実行権限を付与します。

$ chmod 755 node.cgi

Webブラウザからアクセスするとこんな感じで表示されます。

サーバを作る

Node.jsにはWebサーバの機能があります。
ApacheなどのWebサーバを介さずにWebページを公開することができます。

下準備

8080番のポートが開いてなかったので解放しました。自己責任でどうぞ。

管理ユーザになって以下のコマンドを実行すると、恒久的に8080番が開きます。

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --reload

ソースコード

任意のデレクトリに「serv.js」というファイルを作成し、以下のように書き込みます。
IPアドレスの部分は、各自の環境に合わせてください。

var http = require('http');
var server = http.createServer();
server.on('request', function(req,res) {
  res.writeHead(200,{'content-Type': 'text/html'});
  res.write('<html>');
  res.write('<head><title>node-server</title></head>');
  res.write('<body><h1>node-server</h1></body>');
  res.write('</html>');
  res.end();
});
server.listen(8080, '192.168.56.12');
console.log("server listening ...");

実行

以下のコマンドでサーバが起動します。
停止する場合は「Ctrl+c」でOKです。

$ node serv.js

Webブラウザからアクセスします。
今回の場合のURLは、「http://192.168.56.12:8080」になります。

終わりに

以上、Fedora26にNode.jsをインストールして、いくつかテストをしてみました。

初めてNode.jsを見たときは、戸惑ったものです。
なんというか、JavaScriptなのにJavaScriptっぽくない気がした。
今はだいぶ慣れたな。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。