Astro 사이트를 is*hosting에 배포
is*hosting은 40개 이상의 지역에서 VPS 및 전용 서버를 제공하는 호스팅 제공업체로, 정적 또는 서버 렌더링(SSR) Astro 사이트를 셀프 호스팅하는 데 사용할 수 있습니다. Astro 사이트가 SSR을 사용하며 상시 실행되는 서버, 데이터베이스 연결, 백그라운드 작업, 크론 작업 또는 API 라우트가 필요한 경우에는 VPS가 적합합니다.
전제 조건
섹션 제목: “전제 조건”Astro 사이트를 is*hosting VPS에 배포하려면 다음이 필요합니다.
- Astro 프로젝트
- SSH 액세스와
root또는sudo권한이 있는 Ubuntu가 실행 중인 is*hosting VPS - VPS를 가리키는 도메인 이름
- VPS에 설치된, Astro의 최소 요구 사항을 충족하는 Node.js 버전
프로젝트 구성
섹션 제목: “프로젝트 구성”Astro 프로젝트는 정적 사이트로 또는 요청 시 렌더링되는 사이트로 is*hosting VPS에 배포할 수 있습니다.
정적 사이트
섹션 제목: “정적 사이트”Astro 프로젝트는 기본적으로 정적 사이트입니다. 정적 사이트를 is*hosting VPS에 배포하는 데는 추가 Astro 구성이 필요하지 않습니다.
요청 시 렌더링을 위한 어댑터
섹션 제목: “요청 시 렌더링을 위한 어댑터”Astro 프로젝트에서 요청 시 렌더링을 활성화하려면 다음 astro add 명령으로 Node.js 어댑터를 추가하세요. 이 명령은 어댑터를 설치하고 astro.config.mjs 파일에서 standalone 모드로 구성하는 작업을 한 번에 수행합니다.
npx astro add nodepnpm astro add nodeyarn astro add node배포 방법
섹션 제목: “배포 방법”서버에서 사이트를 빌드하고 웹 서버로 제공하여 is*hosting VPS에 배포할 수 있습니다.
다음 안내에서는 웹 서버로 Nginx를 사용하고, 요청 시 렌더링되는 사이트의 Node.js 서버를 계속 실행하기 위해 PM2를 사용합니다.
VPS 설정
섹션 제목: “VPS 설정”-
SSH로 VPS에 연결하고 웹 서버와 Git을 모두 설치합니다:
터미널 창 apt updateapt install nginx git이 안내서의 서버 명령은
root로 로그인했다고 가정합니다. 다른 계정을 사용하는 경우 관리 명령을sudo와 함께 실행하세요. -
Astro 프로젝트를 VPS에 복제하고, 의존성을 설치하고, 사이트를 빌드합니다:
터미널 창 cd /var/wwwgit clone YOUR_REPOSITORY_URL astrocd astronpm installnpm run build
정적 사이트 배포
섹션 제목: “정적 사이트 배포”-
생성된
dist/폴더를 제공하기 위해/etc/nginx/sites-available/astro에 Nginx 구성 파일을 만듭니다:/etc/nginx/sites-available/astro server {listen 80;server_name your.domain.com;root /var/www/astro/dist;index index.html;error_page 404 /404.html;location / {try_files $uri $uri/ $uri.html =404;}} -
Nginx 구성을 활성화하고 Nginx를 다시 로드합니다:
터미널 창 ln -s /etc/nginx/sites-available/astro /etc/nginx/sites-enabled/nginx -tsystemctl reload nginx
요청 시 렌더링되는 사이트 배포
섹션 제목: “요청 시 렌더링되는 사이트 배포”-
PM2를 설치하고 이를 사용하여 Node.js 서버를 시작합니다:
터미널 창 npm install -g pm2HOST=127.0.0.1 PORT=4321 pm2 start dist/server/entry.mjs --name astro-app -
재부팅 후 Node.js 서버가 다시 시작되도록 PM2를 구성합니다:
터미널 창 pm2 startup && pm2 save -
요청을 Node.js 서버로 전달하기 위해
/etc/nginx/sites-available/astro에 Nginx 구성 파일을 만듭니다:/etc/nginx/sites-available/astro server {listen 80;server_name your.domain.com;location / {proxy_pass http://127.0.0.1:4321;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}} -
Nginx 구성을 활성화하고 Nginx를 다시 로드합니다:
터미널 창 ln -s /etc/nginx/sites-available/astro /etc/nginx/sites-enabled/nginx -tsystemctl reload nginx
HTTPS 추가
섹션 제목: “HTTPS 추가”도메인이 VPS를 가리키게 되면 Certbot을 사용하여 정적 배포 또는 SSR 배포에 HTTPS를 구성할 수 있습니다. 포트 80과 443에 액세스할 수 있는지 확인하세요.
-
Certbot과 Nginx 플러그인을 설치합니다:
터미널 창 apt install -y certbot python3-certbot-nginx -
도메인에 대한 인증서를 요청합니다:
터미널 창 certbot --nginx -d your.domain.comyour.domain.com을 사용하는 도메인으로 바꾸고 안내에 따라 진행하세요. -
인증서 자동 갱신을 테스트합니다:
터미널 창 certbot renew --dry-run
사이트 업데이트
섹션 제목: “사이트 업데이트”사이트 변경 사항을 배포하려면 최신 변경 사항을 가져오고, 의존성을 설치하고, 사이트를 다시 빌드합니다:
cd /var/www/astrogit pullnpm installnpm run build사이트가 요청 시 렌더링되는 경우 변경 사항이 적용되도록 PM2 프로세스를 다시 시작합니다:
pm2 restart astro-app