웹 개발 기초 – 웹 서버 구축과 배포 – 4 – 웹 애플리케이션 배포

웹 개발 기초 - 웹 서버 구축과 배포 - 4 - 웹 애플리케이션 배포
웹 개발 기초 – 웹 서버 구축과 배포 – 4 – 웹 애플리케이션 배포

웹 개발 기초 – 웹 서버 구축과 배포 – 웹 애플리케이션 배포

안녕하세요! 😊
드디어 웹 개발의 꽃이라고 할 수 있는 웹 애플리케이션 배포 단계에 도달하셨네요!
이전까지는 로컬에서 개발하고, 도메인도 연결하고, 서버에 파일도 업로드해봤다면, 이제는 여러분이 만든 웹사이트를 세상에 정식으로 출시하는 일만 남았어요.

마치 연습실에서 공연을 준비하던 밴드가 실제 무대에 올라가는 순간처럼,
웹 애플리케이션도 이제 **운영 환경(Production)**에 올라가야 많은 사용자들과 만나게 됩니다.
이번 시간에는 웹 애플리케이션을 배포하는 과정을 구체적으로 알아보면서, 배포 전후에 체크해야 할 것들도 함께 짚어볼게요!


웹 애플리케이션 배포란?

**배포(Deployment)**는 개발이 완료된 웹 애플리케이션을 서버에 업로드하고,
실제 사용자들이 접속할 수 있도록 설정하는 과정을 의미합니다.

쉽게 말하면, “웹사이트를 세상에 공개하는 작업”이에요.


웹 애플리케이션 배포 전 체크리스트

항목 설명
HTML/CSS/JS/PHP 파일 준비 완성된 코드가 정상 작동하는지 확인
DB 연결 설정 운영 환경용 DB 정보 입력
.env 또는 config 파일 설정 개발과 운영 환경 구분 (보통 숨김 처리)
서버 환경 설정 PHP 버전, 권한, 모듈 등 체크
도메인 연결 여부 도메인과 서버 IP 매핑 완료

✅ 이 모든 체크가 끝나면, 진짜 배포 시작입니다!


1. 파일 업로드 방법 (FTP / Git / CI 도구)

✅ 방법 ① FTP로 수동 업로드

  • 앞서 설명드린 FileZilla와 같은 FTP 툴을 사용해
    index.php, style.css, img/, js/ 폴더 등을 /public_html 또는 /www 디렉터리에 업로드합니다.

✅ 방법 ② Git을 이용한 배포

  • 서버에 Git 설치 후, GitHub 저장소에서 코드 클론:
cd /var/www/html
git clone https://github.com/사용자명/레포지토리명.git

💡 Git으로 버전관리도 하고, 필요 시 git pull로 최신 코드만 반영할 수도 있어요!

✅ 방법 ③ CI/CD 도구 사용 (고급)

  • GitHub Actions, GitLab CI, Jenkins 등을 사용하면
    main 브랜치에 Push → 자동으로 서버에 배포가 가능해요.

2. 데이터베이스 배포 (MySQL, PostgreSQL 등)

✅ 방법 ① 직접 SQL 실행

  • phpMyAdmin 접속 후, SQL 탭에서 직접 쿼리 실행
  • 또는 .sql 파일을 Import 탭에서 업로드

✅ 방법 ② CLI에서 import

mysql -u 사용자명 -p 데이터베이스명 < backup.sql

⚠️ 로컬 개발용 DB와 운영용 DB는 환경에 따라 구분 관리하는 것이 좋습니다.


3. 퍼미션 및 보안 설정

✅ 파일 및 폴더 권한

파일 종류 권한 추천
PHP, HTML, JS, CSS 644
이미지, 업로드 파일 644
업로드 폴더 755 (쓰기 권한 포함 필요 시 775)
chmod -R 755 /var/www/html

✅ 실행 금지 설정 (.htaccess 사용)

업로드 폴더에 PHP 파일을 업로드하지 못하도록 하려면:

# uploads/.htaccess
php_flag engine off

4. Apache/Nginx 설정 (가상 호스트, 포트 설정 등)

✅ Apache 예시 (VirtualHost)

<VirtualHost *:80>
    ServerName www.mysite.com
    DocumentRoot "/var/www/html"
    <Directory "/var/www/html">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

✅ Nginx 예시

server {
    listen 80;
    server_name mysite.com www.mysite.com;

    root /var/www/html;
    index index.php index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

5. 웹 애플리케이션 테스트

🧪 기본 테스트 사항

항목 체크
홈페이지 접속 정상적으로 첫 화면 열리는지
로그인/회원가입 DB 연동이 잘 작동하는지
이미지 업로드 퍼미션 문제 없이 업로드되는지
에러 로그 확인 /var/log/apache2/error.log 또는 php_error.log 확인

6. HTTPS 적용 및 보안 설정

HTTPS는 선택이 아닌 필수가 된 시대입니다!

✅ 무료 SSL 인증서 발급 (Let’s Encrypt)

sudo apt install certbot
sudo certbot --apache

✅ HTTP → HTTPS 자동 리디렉션

Apache의 .htaccess 또는 Nginx 설정에 다음 추가:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

7. 유지보수 및 백업

✅ 자동 백업 시스템 만들기

  • DB 백업: mysqldump 명령어 사용
  • 코드 백업: rsync, scp, tar 등으로 서버 파일 복사
0 2 * * * mysqldump -u root -p비번 mydb > /backup/mydb.sql

위 예시는 매일 새벽 2시에 DB 백업을 수행하는 크론탭 설정입니다.


🔍 배포 시 주의사항 요약

항목 주의할 점
환경 설정 개발용 설정이 남아 있지 않은지 (예: 에러 출력)
보안 DB 비밀번호 노출 금지, 업로드 파일 필터링
로그 오류 발생 시 로그 확인 경로 확보
URL 접근 제한 관리자 페이지는 .htaccess, IP 제한 등으로 보호
자동화 반복 작업은 스크립트로 자동화하면 편해요

마무리하며 😊

웹 애플리케이션 배포는 단순히 ‘파일 올리기’ 이상의 작업이에요.
보안 설정, DB 연결, 퍼미션, 도메인 연동, HTTPS 설정까지 종합적으로 고려해야 하는 중요한 단계죠!
하지만 이번 단계를 잘 마치면, 여러분의 아이디어가 세상과 만나는 멋진 순간이 펼쳐지게 됩니다 🎉

다음 시간에는 트래픽 증가에 대비한 성능 최적화모니터링 도구 설정도 함께 다뤄볼 수 있어요.

자신 있게, 그리고 꼼꼼하게 배포하는 여러분 되시길 바랍니다!
오늘도 뿌듯하고 즐거운 개발 되세요! 💻🌍🚀

답글 남기기