はじめに
Ubuntu22.04 で Nginx と React を導入する手順をまとめました。備忘録です。
前提条件
前提条件は以下の通りです。
- Ubuntu22.04
- core i3-12100
- メモリ 8GB
NodeJS のインストール
nodejs のページから、LTSのLinuxのダウンロードリンクをコピーして wget します。
wget https://nodejs.org/dist/v18.18.0/node-v18.18.0.tar.gz
tar -zxvf node-v18.18.0.tar.gz
cd node-v18.18.0
./configure
make -j4
sudo make install
sudo npm install -g create-react-app
大体1時間ほどかかります。
これでインストール完了です。
なぜか npm にパスが通らなかったので最後に export しておきました。
もしくは、.bashrc に記載でも大丈夫です。
sudo node -v
V18.8.0
sudo npm -v
9.8.1
パッケージも作成しておきます。
sudo create-react-app test1
cd test1
sudo npm start
sudo npm run build
Nginx のインストール
こちらを参考にインストールしました。
まずは公開鍵を取得します。
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
ここまできたら、以下を実行します。
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
以下のような出力になれば、OKです。
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid nginx signing key <signing-key@nginx.com>
続いて、以下のコマンドを実行します。
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
Index of /packages/ubuntu/ `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
| sudo tee /etc/apt/preferences.d/99nginx
sudo apt update
sudo apt update でワーニングが出ると思うので、修正していきます。
sudo nano /etc/apt/sources.list.d/nginx.list
以下のように変更してください。
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu jammy nginx
↓
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] http://nginx.org/packages/ubuntu jammy nginx
ここまできたら、nginx をインストールします。
sudo apt install nginx
nginx -v
nginx version: nginx/1.24.0
Nginx の設定
ファイアーウォールを有効にします。
sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo systemctl start nginx
こちらを参考に、nginx の設定を行いました。
cd /etc/nginx/conf.d
sudo touch react-test1.conf
今作成した react-test1.conf を以下のようにします。
server {
listen 83;
server_name 127.0.0.1;
charset utf-8;
# ドキュメントルートを指定.
root /home/seigi/web-dev/test1/build;
index index.html;
# リクエストされたリソースがなければ、index.htmlを返却.
location / {
try_files $uri /index.html;
}
location = /index.html {
#エラー確認用
}
}
ここまできたら、あとはnginx を起動していきます。
エラー対処は こちら を参考にしました。
sudo ufw allow 83/tcp
sudo usermod -G username nginx
sudo systemctl reload nginx
http://http://127.0.0.1:83/ にアクセスします。
無事に表示できました!
おわりに
今回は React アプリをビルドして Nginx を使用して公開するまでの手順をまとめました。
次回は fastAPI でバックエンドを作成して React につなげられたらと思います。
コメント