[フロントエンド] create-react-appで作成したアプリをNginxで動かす
こんにちは、@yoheiMuneです。
create-react-appを使うと簡単にReactアプリケーションを作成することができます。それをサーバー上のNginxで配信する方法について、ブログを書きたいと思います。
facebook/create-react-app | Github
ローカルで作成したReactアプリケーションをサーバー(Nginx)で配信したい場合に、どうすれば良いでしょうか。以下の作業ステップを行います。
次に、そのフォルダに移動して、ビルドを行います。
最後になりますが本ブログでは、フロントエンド、Swift、PHP、Node.js、Linux、Python、Java、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
create-react-appを使うと簡単にReactアプリケーションを作成することができます。それをサーバー上のNginxで配信する方法について、ブログを書きたいと思います。
目次
create-react-appとは
create-react-appとはReactアプリケーションの雛形を1コマンドで作れる便利ツールです。雛形を作って必要な箇所を実装することで、簡単に本格的なReactアプリケーションを作ることができます。詳細は以下をご確認ください。facebook/create-react-app | Github
ReactアプリケーションをNginxで配信する
さてここからが本題です。ローカルで作成したReactアプリケーションをサーバー(Nginx)で配信したい場合に、どうすれば良いでしょうか。以下の作業ステップを行います。
手順1:Reactアプリケーションをサーバー上に配置する
今回は、以下のディレクトリに配置することにします(ディレクトリは任意の場所でOKです)。/opt/app/my-react-appそこに、ローカルで作成したReactアプリケーションのファイルを置きます。
# Githubにある場合には、git cloneなどでOK $ git clone [gitのリポジトリのパス] /opt/app/my-react-appここでは
git clone
を利用していますが、FTPツールなどでアップロードしてもOKです。次に、そのフォルダに移動して、ビルドを行います。
$ cd /opt/app/my-react-app $ npm run buildビルド結果をFTPでアップロードしてもOKです。ビルド結果は、
build/
フォルダに格納されます。# ビルド結果の格納先 /opt/app/my-react-app/buildビルド結果の格納先に、以下のようなファイルあれば大丈夫です。
$ ls /opt/app/my-react-app/build asset-manifest.json image index.html manifest.json service-worker.js static ...など...
手順2:ドキュメントルートを決める
ビルドした結果作成されたbuild/
フォルダが、ドキュメントルートになります。# ドキュメントルート /opt/app/my-react-app/build
手順3:Nginxの設定ファイルを追加する
今回はmyapp.example.com
のドメインとします。それに対するNginxの設定ファイルを追加します。/etc/nginx/conf.d/myapp.example.com.conf
というファイルを新規に作成し、以下の内容を記載します。server { listen 80; server_name my.example.com; charset utf-8; # ドキュメントルートを指定. root /opt/app/my-react-app/build; index index.html; # リクエストされたリソースがなければ、index.htmlを返却. location / { try_files $uri /index.html; } }また、バックエンドのサーバーと連携する場合には、
proxy_pass
の設定を追加します。例えば/api
をバックエンドに流したい場合、以下の記述を追加します。# /apiはバックエンドサーバーにリクエストを流す. location /api { proxy_pass http://127.0.0.1:3001; }
手順4:Nginxで設定を読み込む
上記の設定をNginxに読み込みます。# 例:CentOS7の場合 $ systemctl reload nginx
手順5:動作確認
上記で無事に設定できれば、以下のアクセスが確認できると思います。http://myapp.example.com
最後に
try_files $uri /index.html;
の部分はちょっと雑な感じですが、いったん動くからいいかなと思います。本番でないものはないと返す(404を返す)場合には、もう少し工夫した設定が必要です。最後になりますが本ブログでは、フロントエンド、Swift、PHP、Node.js、Linux、Python、Java、インフラ、Go言語、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!