###前提として行ったこと
①AWSへの登録
②EC2サーバーの新規立ち上げ
③RDBの新規構築
④ローカル環境で制作したフォルダの、EC2へのアップロード
今回はnodemon を使いました。
これによってシステムの内容に変更があった時、再起動しなくても適応される(はず)。
以下、EC2サーバー上で正しく動作させるために行ったことを記録する。
##目次
・行ったこと
→パーミッション設定
→「npm start で起動するようにする」
→必要なもののインストール
→DB情報の書き換え
→エラー「Permission denied」
→nodemonのインストール
・おまけ(永久実行)
・参考文献
#行ったこと(失敗も含む)
##パーミッション設定
編集したいファイルは、フォルダごと権限を777にした。
$sudo chmod 777 フォルダ名orファイル名
権限を変えるのは危ないので「ローカルで書き換えてアップロード」を繰りかえす方がいいかも。
(今回は個人製作でいじられても重大事件になるようなシステムではないので気軽に変えた)
##「npm start」で起動するようにする
package.jsonに以下を追加
"scripts": {
"start": "nodemon ./bin/www"
}
これは絶対に必要ではない。
直接nodemon ./bon/www
と打ち込んでも実行できる。
##必要なもののインストール
npm install
$curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash - $sudo yum -y install npm
node.js install
$sudo yum -y install nodejs
nodemon install
$sudo npm install -g nodemon
postgresql install
ここを見ました
express install
$npm -g install express
##DB情報の書き換え
ローカル環境で開発した際、index.jsのソースコードの中に書いた接続情報は、ローカル環境でしか動作しない。
EC2サーバー上で正常に動作させるために、
host: 'localhost' → host: '[AWSで作成したDBのエンドポイント]' ←変更
port: 5432 ←追加
と書き換えた。
ここで
$npm start (もしくは$nodemon ./bin/www)
を実行したが、Permission denied
(権限エラー)で実行できず。
##エラー「Permission denied」
/node_modules/.bin/nodemon: Permission denied
npm ERR! code ELIFECYCLE
npm ERR! errno 126
npm ERR! ths-web-page@1.0.0 start: `nodemon ./bin/www`
npm ERR! Exit status 126
npm ERR!
npm ERR! Failed at the ths-web-page@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
wwwがあるフォルダまでのすべてのフォルダの権限をゆるくしてみる
権限エラーが出ていたので権限制限ゆるくしてみた。
※当たり前ですが会社のシステムとかで勝手に権限ゆるくするのは絶対にダメ!
→まだ同じエラーが出ます。多分この操作は意味がなかった
##nodemonをインストールする
$sudo npm install -g nodemon
このコマンドを打ったらインストールされ、
正常に$npm start (もしくは$nodemon ./bin/www)
を実行できた!!
それにしてもなぜ権限エラーに??
#おまけ(永久実行)
node.jsを、AmazonLinuxからログアウトした後もそのまま起動しておくには、
$sudo npm install -g forever
でインストールして
$sudo forever start ./bin/www
というコマンドを叩く。
#参考文献URL
Amazon EC2でnode.js,Expressアプリケーションを立ち上げる
[Amazon Linux 2 に PostgreSQL 11 をインストールする]
(https://yohei-a.hatenablog.jp/entry/20200924/1600941789)
[npm start の使い方]
(https://techacademy.jp/magazine/16393)
[node.js バージョンアップコマンド]
(https://note.com/mono01012/n/n7fe82a0ba979#6uQX6)
[AWS EC2 AmazonLinux2 Node.jsをインストールしてnpmコマンドを使用できる様にする
]
(https://qiita.com/miriwo/items/4ac80bc51bb072ace652)