XSERVER

エックスサーバーでNode.jsを使う方法を紹介します。

エックスサーバーでNode.js使えるのかな・・・

エックスサーバーに入っていないけど、やってみましょう。

この記事ではエックスサーバーでNode.jsを使うっていうことをやっていきます。

この記事で分かること

  • エックスサーバーでNode.jsを使う方法
  • エックスサーバーにNode.jsをインストール
  • Node.jsでhttpサーバーの起動
  • ブラウザからアクセス

エックスサーバーでnode.jsを使ってみたかったら多少参考になると思います。

エックスサーバーでNode.jsを使っていきましょう。

エックスサーバーにNode.jsをインストールする

エックスサーバーにまずはNode.jsをインストールします。エックスサーバーで借りているサーバーにSSH接続してやっていきます。

SSH接続をする

SSH接続の方法は以下の記事で書いているので、よかったら見てみてください。

XSERVER

エックスサーバーでSSH接続する方法を紹介します

2022/9/12  

この記事ではエックスサーバーでSSH接続する方法を書いていきます。 エックスサーバーを使っていて、自 ...

Node.jsをインストールする

nodebrewを入れます。

// curlで入れる
$ curl -L git.io/nodebrew | perl - setup

// パスを通す
$ echo export PATH=$HOME/.nodebrew/current/bin:$PATH >> ~/.bashrc
$ echo export NODEBREW_ROOT=$HOME/.nodebrew >> ~/.bashrc
$ source ~/.bashrc

// nodeインストール
$ nodebrew install 16.17.0
$ nodebrew list
v16.17.0

current: none
$ nodebrew use v16.17.0
use v16.17.0

$ node -v
v16.17.0

これでnode.jsが入りました。

コマンド実行

試しにファイルを作ってnodeコマンドを実行してみます。

$ vi index.js
console.log("Hello Node!!")

$ node index.js
Hello Node!!

ちゃんと実行できましたね。

Node.jsでhttpサーバーを立てる

Node.jsでhttpサーバーを立てます。コードはnodejs.orgを参照。

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

これで実行してみるとサーバーが起動しますね。

$ node index.js
Server running at http://127.0.0.1:3000/

エックスサーバーでNode.jsのサーバーにアクセスする

エックスサーバーの場合、デフォルトでドメインにアクセスすると、そのドメイン名のフォルダ/public_html配下の以下のファイルが呼び出されます。

  • index.html
  • index.htm
  • index.shtml
  • index.cgi
  • index.php
  • default_page.html

今回やりたいのがNode.jsで動かしているhttpサーバーにアクセスさせることだけど、これは普通にやったら無理です。

Webサーバーの設定いじって向き先をNodeで起動しているサーバーに設定すればできると思うけど、レンタルサーバーなのでそこまで編集することはできません。

.htaccessを作成する

大まかな流れは変えることはできないので、.htaccessを作ってRewriteRuleでnodeで動かしているサーバーにアクセスさせます。

/home/〇〇/ドメイン名/public_html

$ vi .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
</IfModule>

これで127.0.0.1:3000にアクセスが向くので、これでNodeのサーバーを動かします。さっきと同じですね。

/home/〇〇/ドメイン名/public_html/index.js

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Hello Worldを表示するコードです。これで起動させましょう。

$ node index.js
Server running at http://127.0.0.1:3000/

ドメインにブラウザからアクセス

ドメインにブラウザからアクセスするとちゃんと表示されましたね。

サーバーをデーモン化する

今のままだと簡単にNodeのサーバーは止まってしまうので、デーモン化させます。foreverをインストール。

$ npm install forever -g
/home/〇〇/ドメイン名/public_html

$ forever start index.js

これでサーバーが止まらず起動することになりました。停止させたい時にはstopですね。

$ forever stop index.js

まとめ

エックスサーバーでNode.js使うっていうことをやってみました。試してみたことは以下です。

  • Node.jsのインストール
  • Node.jsでhttpサーバー起動
  • ブラウザからアクセス

やってみた感じやっぱりレンタルサーバーでhttpサーバー起動させるなんていうのはしんどいですね。こういうことやるならVPS使ってやったほうがかなりやりやすいと思います。

VPSなら自由に色々インストールできるし、Webサーバーの設定いじってNodeのhttpサーバーと繋げることもできますしね。

-XSERVER