LoginSignup
vm-node
@vm-node

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

node.js express nginx mongo dbの開発環境について

解決したいこと

node.js express nginx mongo dbという構成で勉強しつつwEBアプリケーションを作成しようと思い、UDEMYやドットインストール、書籍などを参考にプログラミングの勉強をしているのですがプログラミング以前に環境構築やデプロイの方法でつまずいており????の状態で質問させていただきました。

ローカル開発環境の構築とVPSへのデプロイについていくつか質問させていただきます。

現状GitHub ActionでVPSにデプロイという構成が一番良いのかなと思っています?

Q:1

ローカル開発環境でアプリを作成してVPSにデプロイする場合ローカル側にも本番環境と全く同じくWEBサーバー(nginx)もインストールしておくものですか?

※node.jsをリバースプロキシとしてnginxを構成する場合

それともVPSには予めnode.js express nginx mongo dbをインストールした後作成したアプリのみデプロイするのでしょうか?

Q:2

現在はUDEMYなどを参考にVMWARE WORKSTATIONという仮想ツールにubuntu 22.04.03desktopを入れた環境を作成しましたがここでターミナルを開いて各環境をインストールしていっていいのでしょうか?

それともこの仮想環境にホストOS(windows10)からVsCodeでSSH接続やTeraTermでssh接続して作業したほうが良いのでしょうか?

Q:3 ディレクトリ構成

現在ターミナルを開いてlsすると

ubuntu@ubuntu-virtual-machine:~$ ls
snap  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  ピクチャ  ミュージック  公開

となりますがここに

mkdir my-app
cd my-app

でここにnode.js express nginx mongo dbを入れていったら良いのでしょうか?

それとも別の場所ですか?それぞれ入れるディレクトリが決まっているのでしょうか?

ubuntu@ubuntu-virtual-machine:~$ cd /
ubuntu@ubuntu-virtual-machine:/$ ls
bin  boot  cdrom  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  swapfile  sys  tmp  usr  var
ubuntu@ubuntu-virtual-machine:/$ cd /var/www
ubuntu@ubuntu-virtual-machine:/var/www$ ls
html ここにmydomain.comを作成して


/var/wwwにmydomain.comディレクトリを作成して?

Q:4 デプロイについて

VPSにデプロイする際はローカルで開発してGitHub ActionでVPSにデプロイという形がベストですか?

他にいい方法があれば教えていただきたいです、またそれに関する書籍等もありましたら教えていただきたいです。

UDEMYの動画も7本ほど関係ありそうなのを購入してみてはいるのですがどれもAWSやheroku,renderを利用するもので
VPSに関するものは何故ないんだろ?

■■■■■■■■■■■■■■■■■■■■■■■

全部でなくても構いません一つだけでもご教授いただけましたら幸いです。

おそらく私自身の理解が???で質問自体おかしなこと聞いているとは思いますがこれでも一応自分なりに調べたりして理解しようとは努力していますのでご容赦くださいませ、、、

0

1Answer

Q1

ローカル開発環境でアプリを作成してVPSにデプロイする場合ローカル側にも本番環境と全く同じくWEBサーバー(nginx)もインストールしておくものですか?

場合によります。 Docker を使っているなどで、ローカル環境と本番環境に同じ構成の環境を作りやすいのであれば、同じようにセットアップすることがあります。そうでなければ、簡単のためにローカルには nginx を置かないこともあります。以下、 Docker を使わない構成で回答します。

それともVPSには予めnode.js express nginx mongo dbをインストールした後作成したアプリのみデプロイするのでしょうか?

nginx や Node.js や MongoDB はあらかじめインストールしておきます。 Express など package.json に書かれている依存関係は、アプリのデプロイ時に都度インストールします。

Q2

ここでターミナルを開いて各環境をインストールしていっていいのでしょうか?

大丈夫です。そのターミナルでも SSH 接続でもできることは同じです。使いやすいほうを使ってください。

Q3

開発時のディレクトリ構成は好みの問題なのでどこでも大丈夫です。ホームディレクトリ以下に apps/ とか projects/ とかcode/ を作ってその中に置くことが多いような気はします。

ここにnode.js express nginx mongo dbを入れていったら良いのでしょうか?

Node.js と nginx と MongoDB はシステムにインストールします。アプリのコードはそこに置いてください。 Express はアプリの package.json に依存を書いて npm install すればそこにインストールされます。

Q4

自動化するなら GitHub Actions が楽です。自動化にもノウハウがあるので、まずは手動でデプロイするのもいいと思います。

AWS (中でも Amazon EC2)を利用する手順は VPS の場合にも流用できます。

1

Comments

  1. @vm-node

    Questioner

    すべてお答えいただきありがとうございます色々と疑問が解消でき先に勧めそうです。

    ■ホームディレクトリ以下に apps/ とか projects/ とかcode/ を作ってその中に置くことが多いような気はします。

    ここで言うホームでディレクトリというのは
    /home/ここで良かったでしょうか?

    ubuntu@ubuntu-virtual-machine:~$ pwd
    /home/ubuntu
    ubuntu@ubuntu-virtual-machine:~$ cd ..
    ubuntu@ubuntu-virtual-machine:/home$ ls
    ubuntu  ■ここにmyappということですよね?■
    
    

    ■AWS (中でも Amazon EC2)を利用する手順は VPS の場合にも流用できます。

    そうなんですね。ではそのへんのUDEMYの動画をよく見てみます

    ■自動化するなら GitHub Actions が楽です。自動化にもノウハウがあるので、まずは手動でデプロイするのもいいと思います。

    手動デプロイする際はローカルと同じ環境をVPSにも構築した上で

    ubuntu@ubuntu-virtual-machine:/home$ cd /
    ubuntu@ubuntu-virtual-machine:/$ ls
    bin  boot  cdrom  dev  etc  home  lib  lib32  lib64  libx32  lost+found  media  mnt  opt  proc  root  run  sbin  snap  srv  swapfile  sys  tmp  usr  var
    ubuntu@ubuntu-virtual-machine:/$ cd var/www
    ubuntu@ubuntu-virtual-machine:/var/www$ ls
    html ■ここにmydomain.comディレクトリを作成してローカルのmyappの中身を入れるのですよね?■
    

    =======================================
    教えて頂いた内容を参考にまずは手を動かしてみます。ありがとうございます、本当にに感謝です。

  2. ホームディレクトリは /home/<現在のユーザー名> のことを言います。そちらの環境では /home/ubuntu です。

    手動デプロイする際はローカルと同じ環境をVPSにも構築した上で
    html ■ここにmydomain.comディレクトリを作成してローカルのmyappの中身を入れるのですよね?■

    それで大丈夫です。(必ずしもそこに置く必要はなく、アプリを起動できるならどこでもいいです。)

  3. @vm-node

    Questioner

    ありがとうございます!!

Your answer might help someone💌