LoginSignup
2
1

More than 1 year has passed since last update.

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

Posted at

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

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

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

詰まっていた理由

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

これだけ!解決法

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

npm i cgi-express

もっと!解決法

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

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

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

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

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

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

npm i express

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

npm i cgi-express

index.cgi, .htaccess を作成

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

index.cgi
#! /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

.htaccess (常時SSL化, 強制https化)
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]
.htaccess (常時SSL化ではない)
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 神パッケージ制作ニキ、ありがと🍆

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1