Vite๋ ๋น ๋ฅธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๋ ํ๋ก ํธ์๋ ๋น๋ ๋๊ตฌ์ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Vite + React๋ก ์ ์ํ ํ๋ก์ ํธ๋ฅผ GCP ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. โ
๋จผ์ , Vite ํ๋ก์ ํธ์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๋น๋ํฉ๋๋ค.
cd ํ๋ก์ ํธ๋ช
npm install
npm run build
์ ๋ช ๋ น์ด๋ฅผ ํตํด dist ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค. dist ํด๋์๋ ๋ฐฐํฌํ ์ ์ ํ์ผ๋ค์ด ํฌํจ๋ฉ๋๋ค.
gcloud CLI๋?
gcloud CLI๋ GCP ์ธ์คํด์ค์ ์ ๊ทผํ๊ณ ๊ด๋ฆฌํ๋ ๋ช ๋ น์ค ๋๊ตฌ์ ๋๋ค. SSH ํค ์์ฑ, VM ์ธ์คํด์ค ์ ์, ํ์ผ ์ ์ก ๋ฑ์ ์ง์ํฉ๋๋ค.
gcloud auth login
gcloud config set project <PROJECT_ID>
gcloud compute ssh <INSTANCE_NAME> --zone=<ZONE>
~/.ssh/google_compute_engine ๊ฒฝ๋ก์ SSH ํค๊ฐ ์์ฑ๋๊ณ ์๋ฒ์ ์๋ ๋ฑ๋ก๋ฉ๋๋ค.
rm -f ~/.ssh/google_compute_engine*
gcloud compute ssh <INSTANCE_NAME> --zone=<ZONE>
ssh-keygen -t rsa -f ~/.ssh/my-gcp-key
์์ฑ๋ ๊ณต๊ฐ ํค๋ฅผ GCP Console > Metadata > SSH Keys์ ์ถ๊ฐํฉ๋๋ค.
Vite + React ํ๋ก์ ํธ์ dist ํด๋๋ฅผ GCP ์๋ฒ์ ์ ์กํ๋ ๋ฐฉ๋ฒ์ gcloud CLI์ SCP ๋ ๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค. ์๋๋ ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด์ ๊ณผ ๊ฐ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ฆฌํ ํ์ ๋๋ค:
| ๊ตฌ๋ถ | gcloud CLI | SCP |
|---|---|---|
| ์ฌ์ฉ ๋ช ๋ น์ด | gcloud compute scp | scp |
| SSH ํค ๊ด๋ฆฌ | ์๋ ๊ด๋ฆฌ (~/.ssh/google_compute_engine) | ์๋ ๊ด๋ฆฌ (-i ์ต์
์ฌ์ฉ) |
| ํ์ผ ๊ฒฝ๋ก | /home/<USERNAME>/frontend/ | /home/<USERNAME>/frontend/ |
| ์ ์ก ๋ฐฉ์ | GCP CLI ๋ด๋ถ ๋ช ๋ น์ด๋ก ์ ์ก | Linux, macOS ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ก ์ ์ก |
| ๋ช ๋ น์ด ์์ | gcloud compute scp --recurse ./dist/ <INSTANCE_NAME>:/home/<USERNAME>/frontend --zone=<ZONE> | scp -i ~/.ssh/google_compute_engine -r ./dist/* <USERNAME>@<SERVER_IP>:/home/<USERNAME>/frontend/ |
โ ๊ถ์ฅ ๋ฐฉ๋ฒ:
GCP ํ๊ฒฝ์ ์ต์ํ๊ฑฐ๋ ํ๋ก์ ํธ๊ฐ GCP CLI๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ gcloud CLI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
SSH๋ฅผ ํตํด ์๋์ผ๋ก ๊ด๋ฆฌํ๊ฑฐ๋, GCP CLI ํ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ SCP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
gcloud compute scp --recurse ./dist/ <INSTANCE_NAME>:/home/<USERNAME>/frontend --zone=<ZONE>
scp -i ~/.ssh/google_compute_engine -r ./dist/* <USERNAME>@<SERVER_IP>:/home/<USERNAME>/frontend/
gcloud compute ssh <INSTANCE_NAME> --zone=<ZONE>
sudo mv /home/<USERNAME>/frontend/* /var/www/html/
sudo nano /etc/nginx/sites-available/default
server {
listen 80;
server_name <DOMAIN_OR_IP>;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
sudo nginx -t
sudo systemctl restart nginx
์น ๋ธ๋ผ์ฐ์ ์์ ์ ์:
http://์๋ฒIP๋ก ์ ์ํ์ฌ ๋ฐฐํฌ๋ Vite + React ์ฑ์ด ์ ์์ ์ผ๋ก ํ์๋๋์ง ํ์ธํฉ๋๋ค.
Nginx ๋ก๊ทธ ํ์ธ:
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
์ด์ Vite + React์์ ๋น๋ํ dist ํ์ผ์ด GCP ์๋ฒ์ ๋ฐฐํฌ๋์์ต๋๋ค!
์ด ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์๋ฌ๋ ์ถ๊ฐ์ ์ธ ์ต์ ํ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ค์ ๊ธ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค. ๐๐