はじめに
Reactアプリケーションをサーバーにデプロイするのは、Create React Appのビルドツールを使用することで簡単に行えます。ビルドスクリプトは、すべてのJavaScript、画像、スタイル、HTMLファイルを1つのディレクトリにまとめてコンパイルします。このようにして、すべてのリソースを1か所に集めることで、最小限の設定でウェブサーバーにアプリケーションをデプロイできます。
このチュートリアルでは、ローカルマシンのReactアプリケーションを、Nginxを使用して動作するUbuntuサーバーにデプロイします。Create React Appを使ってアプリケーションを作成し、Nginxの設定ファイルを用いてどこにファイルをデプロイするかを決定し、SCPを使用してビルドディレクトリとその内容をサーバーに安全にコピーします。チュートリアルの終わりには、Reactアプリケーションをビルドしてデプロイできるようになります。
前提条件
このチュートリアルを進めるには、以下が必要です:
- Ubuntu 20.04を実行しているサーバー。非rootユーザーにsudo権限があり、ファイアウォールが有効になっている必要があります。セットアップ方法については、Ubuntuの初期サーバーセットアップガイドを参照してください。
- ローカルマシンにNode.jsをインストールする必要があります。
- サーバーにNginxをインストールし、サーバーブロックが設定されていること。
- Let’s Encryptを使用してNginxをHTTPSで保護することをお勧めします。
Nginxを使用したReactアプリケーションのデプロイ方法
ステップ 1: Ubuntu 20.04サーバーのセットアップ
Ubuntu 20.04サーバーを準備し、サーバーにSSHで接続します。
ステップ 2: 必要なパッケージのインストール
NginxとNode.jsをインストールするため、以下のコマンドを実行します。
sudo apt update
sudo apt install nginx
sudo apt install nodejs
sudo apt install npm
ステップ 3: Reactアプリケーションのビルド
サーバーにReactアプリケーションのソースコードを配置し、以下のコマンドでアプリケーションをビルドします。
cd /path/to/your/react/app
npm install
npm run build
これにより、build
フォルダが生成されます。このフォルダ内には、デプロイ用の静的ファイルが含まれています。
ステップ 4: Nginxの設定
次に、Nginxの設定を行います。設定ファイルは/etc/nginx/sites-available/default
にあります。
以下の設定を反映させて、ReactアプリケーションをNginx経由で提供します。
sudo nano /etc/nginx/sites-available/default
設定ファイルの中で、次のように変更します。
server {
listen 80;
server_name your_domain_or_IP;
root /path/to/your/react/app/build;
index index.html index.htm;
location / {
try_files $uri /index.html;
}
}
ファイルを保存してNginxを再起動します。
sudo systemctl restart nginx
ステップ 5: ファイアウォールの設定
Nginxが正常に動作するように、ファイアウォールを設定します。以下のコマンドを実行してHTTPトラフィックを許可します。
sudo ufw allow 'Nginx Full'
sudo ufw enable
ステップ 6: ドメイン名の設定 (オプション)
ドメイン名を使用する場合は、DNS設定でドメインをサーバーのIPアドレスに紐付けてください。
ステップ 7: HTTPSの設定 (オプション)
Let’s Encryptを使用してSSL証明書をインストールし、HTTPS接続を有効にするには、次のコマンドを実行します。
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain
結論
このチュートリアルでは、ReactアプリケーションをCreate React Appでビルドし、Nginxを使用してUbuntuサーバーにデプロイする方法を学びました。これでReactアプリケーションを簡単にウェブ上に公開できます。