SNSの作成(10)の使用-導入
AWSの導入
ec2
インスタンスのフロントエンドサーバとバックエンドサーバの作成
保安チームは80と443を増やした.
ここで、共通ipはずっと変化していて、弾性ipでipを固定してこそ、周期的にそれを変える必要はありません.
でもipを固定すると結構お金がかかります…!今は実験です.私たちは先に置いて、後で個人の配置時に弾力性ipでipを固定します.
現在選択されている優奮闘サーバメモリは1 GBであり、Web構築時に容量が大きい場合はメモリを増やす必要があります.
SSHでプロジェクトに接続することで、お客様は
バックエンドは、羽奮闘サーバからプロジェクトをクローンし、羽センターから受信し、mysqlもバックエンドサーバにインストールします.(サーバを個別に配置することが望ましい)
符号化->ハブにgit push->リモートサーバを接続し(右奮闘)、gitを受信してパケットをプルして受信し、npm i、npm run build、npm run startを行います.ずっと同じ仕事をしなければならない.
これらの面倒な仕事に取って代わった有名なCI/CDサービスにはジェンキンス、トラヴィスciがあります.
また,1台のサーバを作成するごとにノードを1つ配置しGit cloneを行い,サーバ上のトラフィックが大きすぎると複数のサーバが増加する.
これらの仕事に代わるのはDockerです.
dockerでコマンドを作成すると、既存のサーバと同じサーバが作成されます.手動操作の煩雑な作業に代わる.
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash --
sudo apt-get install -y nodejs
node -v
npm -v
インストールプロセスをスキップします.バックエンドサーバとフロントエンドサーバを正常に動作させます.
しかしShellを開かなければならず、端末を閉じるとサーバーも一緒に閉鎖されます.このまま続けますか?方法はいつもある.
フロント処理:シャットダウンとともにシャットダウンします.(node app)
バックグラウンド処理:電源を切っても切れません.
今、私たちのサービスはフロントプロセスで、バックグラウンドプロセスに変更することができます.
pm 2を取り付けます.
ウブトが80番ポートを使用する場合は、root権限でコマンドを実行するためにsudoを追加し続ける必要があります.面倒くさいからsudo suでrootに回して
pm 2の利点は
npx pm2 monit
であり、ログとサーバのステータスを表示でき、サーバがオフの場合、自動的に開くことができる.lsof -i tcp:80
が現在のポートとして動作しているかどうかを示します.npx pm2 kill
のバックグラウンドを殺す現在実行中の
npx pm2 list
リストを表示npx pm2 reload all
ソースコードの変更を反映してサーバを再ロードフロントサーバがnpm startに置かなかったためです.
npx pm2 start npm -- start && npx pm2 monit
その後、本番モードで導入する場合、node.jsでは、helmet
およびhpp
がダウンロードされなければならない.if (process.env.NODE_ENV === "production") {
app.use(morgan("combined")); //에러 로그랑 더 잘보여줌, 접속한 사용자의 ip를 보여주기도함
app.use(hpp()); // 보안에 도움되는 것들
app.use(helmet()); // 보안에 도움되는 것들
} else {
app.use(morgan("dev"));
}
ドメインの接続
ログイン後にリフレッシュすると解除されます.これはどういうことですか.
Corsエラーが発生しました.バックエンドサーバ(リクエストを送信する場所)とフロントエンドサーバ(リクエストを受信する場所)のアドレスが異なります.
これでビスケットは共有できません.それでは住所を統一すればいいです.どうしよう.
ipは統一できません.では、ドメインが必要です.
ガビア、ヘイズ、ガウディなどの管理サービス企業で購入すればいいです.定期的にお金を払って買います.
交換されたipのため、ドメイン名の購入も問題になりました.
従って、絶えず変化するインスタンスIDを固定するための弾性IPがある.
フレックスIpは有料であり、無料で使用するためには、各フレックスIpにインスタンスを接続する必要がある.
注意しなければなりません.後でインスタンスだけを消して弾力性ipを消さないと、お金がありません!
ドメインを購入したくない場合は、ローカルで回転したいだけです。
ドメイン名は買いたくなくて、ローカルで回りたいだけです.既存のフロントエンドインスタンスを停止し、1台の仮想マシン上で2台のサーバを実行すればよい.
backインスタンスでfrontサーバを構築する場合、現在のメモリは1 GBであるため、容量は中間バージョンを超えています.
したがって、解決策は、既存のローカル構築結果
.next
フォルダをリモートリポジトリにアップロードし、仮想マシンのフロントエンドサーバからダウンロードすることである.しかも前面にnpmにpm 2を入れていないので
npx pm2 start npm -- start && npx pm2 monit
バックエンドnpm start
から、フロントエンドサーバは3060ポートで動作し、バックエンドサーバは80ポートで動作する.package.jsonのscriptstart部分ではfrontに-p 3060を追加すればよい.backはhttpのdefaultポート80なので、する必要はありません.
このように設定すると、aws ec 2セキュリティグループboundでは3060番ポートも許可されなければ完了しません.
CORSエラー
// back/app.js
app.use(
cors({
origin: ["http://localhost:3060", "http://15.165.25.18:3060"],
credentials: true,
})
);
現在、80番ポートはバックエンド、3060番はフロントエンドサーバです.これはフロントサーバに送信したときにcorsエラーが発生したため、必ず3060ポートを貼るためです.
Reference
この問題について(SNSの作成(10)の使用-導入), 我々は、より多くの情報をここで見つけました https://velog.io/@sangbooom/React로-SNS-만들기-10-배포テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol