【1分】レンタルサーバーにNode.js, Expressを導入してAPIサーバーを構築する。(CoreServerへ、node環境を構築。)

プログラミング

Coreserver V2 に、Node.js (express) を導入しよう。

そう思ったものの、レンタルサーバーにExpress サーバーを立てることは容易ではなく、一日詰まってしまいました。

ですが、以下の方法により瞬殺でExpress環境を整えることができたので共有します。

詰まっていた理由

  • VPSでないレンタルサーバーの場合、CGI スクリプトから各言語を動かすことになるが、js は対応していないっぽかった。
  • 調べても、Flask サーバーを立てるHow to しか載っていない。

これだけ!解決法

npm にて、cgi-express をインストールすることで、解決

cgi-express
Executes Express.js application as a CGI program. Latest version: 0.1.2, last published: 2 years ago. Start using cgi-ex...
npm i cgi-express

もっと!解決法

以下、詳しく説明します。

nvm 経由で安定版 node をインストール

以下のページが参考になりました。

ConoHaWING+CGI環境構築=perl,ruby,python,node=
ConoHaWINGでCGI環境構築レンタルサーバー()でCGI環境を作る際は幾つかポイントが有りますので確認しておきましょう。.htaccessの追加変更.htaccessの追加変更Options +ExecCGIAddHandler c

node のシンボリックリンクを作成

nvm 経由でインストールしたnode は、隠しファイル内に存在するため、このままではcgiでは読み込めません。そこで、シンボリックリンクを作成して、見えるパスからアクセスできるようにします。
これまた、以下のページが参考になりました。

ConoHaWING+CGI環境構築=perl,ruby,python,node=
ConoHaWINGでCGI環境構築レンタルサーバー()でCGI環境を作る際は幾つかポイントが有りますので確認しておきましょう。.htaccessの追加変更.htaccessの追加変更Options +ExecCGIAddHandler c

express, cgi-express をインストール

いつもの。

npm i express

👇あまり認知されてない?っぽい神パッケージ。自己責任でオナシャス!

cgi-express
Executes Express.js application as a CGI program. Latest version: 0.1.2, last published: 2 years ago. Start using cgi-ex...
npm i cgi-express

index.cgi, .htaccess を作成

cgi スクリプトのpermission は、755 で。

#! /home/(ユーザー名)/.local/bin/node/v18.12.1/bin/node

const express = require('express')
const cgiExpress = require('cgi-express');

const app = express();

app.get('/', (req, res) => res.send('Hello World!'));

cgiExpress.execute(app);

.htaccess スクリプトのパーミッションは644

SetEnvIf Request_URI "." Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI "." Ngx_Cache_StaticMode

RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
SetEnvIf Request_URI "." Ngx_Cache_NoCacheMode=off SetEnvIf Request_URI "." Ngx_Cache_StaticMode

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]

終わり

おしまい!閉廷!
npm 神パッケージ制作ニキ、ありがと🍆

コメント

タイトルとURLをコピーしました