82929


### 筆者の技術レベル

初めてWebアプリを作ります。  
「プロになるためのWeb技術入門」、「１冊でキッチリ身につく、サーバーの基本としくみ」や他にもいくつかWebアプリに関する本や記事は読んできました。  
今回のWebアプリは「現場で使えるDjango REST Frameworkの教科書」を参考して作っています。

### 筆者のアプリ公開環境の簡単な説明

サーバーはVPSを使って、UbuntuでNginx,gunicorn,postgresqlを使ってDjangoアプリケーションをデプロイしています。

### 教えていただきたいこと

VueCLIを使うのではなくvueをCDN経由で利用する方法があることは知っていますが、アプリ公開後に継続的に機能追加や修正を行って規模を拡大していきたいのでVueCLIのほうが良いという判断をしました。

自分で調べたところでは３つ方法が見つかりました。  
１つ目は、Amazon S3にビルドしたファイルを置く。  
２つ目は、本番環境でフロントエンドのビルド環境を整えてビルドしたファイルをNginxで指定したディレクトリに置く。  
３つ目は、ローカル環境でビルドしたファイルを本番環境のサーバーに送る。

１つ目の方法に関しては、今回は出来るだけ安い費用でアプリを公開することを考えて、サーバー１つに全ての機能を集約したいので候補から外しました。

２つ目の方法も試しましたがビルドが上手くいかず、エラーを見るとビルドに必要なサーバーのメモリが足りないようでした。  
また、ローカル環境でビルドまでできるのにわざわざ本番のサーバーで環境構築してビルドするということがただ手間がかかるだけの方法のような気がしてあんまりいい方法じゃないかなと思っていて中々前向きになれません。

なので今回は３つ目の方法として、ローカル環境でビルドしたファイルをGithubを経由して本番環境に持ってくるというやり方を取っています。

これを踏まえて、皆さんにお聞きしたいことは  
**今の方法（github経由で静的ファイルを持ってくる）が合っているか、また良くない場合はどういう方法が考えられるか**  
です。  
合わせて  
**実際の開発現場ではフロントエンド(Vue,Reactなど)でビルドしてできた静的ファイルをどういう方法で配信するのが一般的か** 、  
も教えていただけると嬉しいです。


CC BY-SA 4.0
2021-10-04T00:40:31.060
82852
2021-10-07T01:31:26.227
48463
question
javascript django vue.js デプロイ
VueCLIなどのフロントエンドでビルドしてできた静的ファイルを、本番環境のサーバーにアップする方法を教えてください


将来性や運用の幅を考えると2つ目の選択肢かなと思います。  
ただプロジェクトによって運用は柔軟に変えてもらえればいいと思います。

じゃあなぜ本番環境でビルド環境を整えて本番用ビルドを実行するのかというと。

開発するにあたって開発時のデバッグ用に特定のライブラリや環境変数を利用したりと  
開発と本番でビルド内容が変わることがたびたびあります。

また  
ビルド時にライブラリやソフトウェアの環境との依存関係をチェックすることもできるので  
本番と開発で環境の違いが発生してしまっているときに、開発のものをそのまま持っていても動かないことがあります。ビルドツールでそのあたりを吸収検知してくれます。  
もちろん自分たちで環境の管理とライブラリの管理を行うのもありですが、ビルドツールに任せてしまったほうがトータルコストは低いと思います。

またビルドをしながらちょっとしたスクリプトを実行することができるのでリリース時の作業をすこし簡単にすることもできます。またスクリプトで実行することで将来的な自動化（CICD）も見越します

特に将来性や運用の幅を考えない。  
さらに、もちろん開発と本番は同じライブラリしか使わず、環境を常にそろえる努力をするのであれば、ビルドをローカルで実行してソースコードをそのままFTPであげるという対応をすることもあるでしょう。まずはプロジェクトの要件や性質を見極めてください。

個人的にはビルドができないぐらいのメモリだともともとサーバのスペックが足りなさすぎるような気もします。


CC BY-SA 4.0
2021-10-07T01:31:26.227
82929
2021-10-07T01:31:26.227
22665
82852
answer