質問: ### 実現したいこと Nuxt.js を使ったWebアプリケーションを作成しました。 社内で使う用で、画面はSPAです。 画面で使用する簡単なAPIをNuxtプロジェクト作成時に選択してインストールしたExpress上で動かしています。 これをCentOsという画面が黒いパソコンで動かすことになりました。 自分なりに調べてみたのですが、もう環境ができているサーバー(PaaS?)とかDockerとかの話が出てきてしまって、自分の環境ではどうしたらいいのかの切り分けができません。 結局OSが入っているだけの環境を本番環境として動作させるとすると、プロジェクトフォルダ配下のどのフォルダが必要なのでしょうか? ### 試したこと #### 本番環境に全部持っていくバージョン 1. CentOsを準備 2. CentOsにNode.jsをインストール 3. ソースを全部受け取る ⇒bitbucketと言うところに登録してgit cloneをしました 4. package.jsonがあるところで`npm install` ⇒package.jsonの内容が全部インストールされる? 5. package.jsonがあるところで`npm run build` 6. package.jsonがあるところで`npm run start` ■ 疑問なこと 開発の時に色んなものをインストールする時`npm install --save`と`npm install --sava-dev`とを使い分けていたのに、本番環境でも全部installすることになるのがおかしい? ■ エラー内容 5.で`npm run build`すると、`sh: nuxt:コマンドが見つかりません`になります。 #### distフォルダ配下だけでいいのでは?バージョン 1. CentOsを準備 2. CentOsにNode.jsをインストール 3. 開発環境で`npm run build`を実行 4. 出来たdistフォルダとpackage.jsonをCentOSに配置 5. package.jsonがあるところで`npm run start` ■ 疑問なこと dist配下だけでAPIが動くのかよくわからない。。。 ■ エラー内容 5.で`npm run start` すると `sh: cross-env:コマンドが見つかりません` になります。 ■ 調べたこと cross-envと言うものは`package.json`の中のscriptsに使っていることまではわかりました。 ``` "scripts": { "start": "cross-env NODE_ENV=production node server/index.js", }, ``` これは`node_modules`の中に入っているもの調べてわかったのですが、`node_modules`の中には`install --save-dev`でインストールしたものも入っているので、全部サーバーに上げないといけないとなると「本番環境に全部持っていくバージョン」と同じ疑問にぶち当たってしまいました。 ### 補足情報(FW/ツールのバージョンなど) Nuxt: edge Node: v10.15.1 OS: 開発環境:windows10 本番環境:CentOS 7 ネットで調べるとNode.js+Expressのアプリケーションを動かすにはApacheとかNginxという単語が出てきますが、それらは使わず開発環境みたいにポート3000でアクセスできるところを目指しています。
回答: * 社内で使う事想定 * CentOS この条件で何とか動かすという想定で書いていきます。 まず、「普通の本番環境」というのはインターネット上にぽつんとあるサーバマシンに、 全世界のユーザが好き勝手にアクセスしにくるモノを指します。 つまり、どの条件で攻撃されてサーバの中身のファイルを持ち逃げされるかわかったものじゃない。 なので最小限のファイルしか持ち込まない構成であるべきです。 「distフォルダ配下だけでいいのでは?」の思想ですね。 > > どちらのバージョンを軸にすすめていくべきか > > > ですが、今回は社内であるとのことなので、 本番環境に全部持っていくバージョンである方が良いです。 本番環境でファイルを切り離すという事は、それなりの準備が必要です。 準備していますか?出来てませんよね? なので後日お勉強という形にして、まずは同じ環境を整えて動かす事をゴールにしましょう。 > > ■ エラー内容 > > 5.でnpm run buildすると、sh: nuxt:コマンドが見つかりませんになります。 > > > `npm run build`で`nuxt`コマンドに頼っているなら、 package.jsonのdevDependencesに入っているべきでしょう。 `npm install -D nuxt`を実行してからなら動作すると思いますがどうですか? (`-D`オプションは`--save-dev`オプションの短縮版)