Contents
はじめに
こんにちは、野村です。
今回は、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っぽくない気がした。
今はだいぶ慣れたな。
というわけで、今回はこれにて。