
웹 개발 기초 – 웹 서버 구축과 배포 – 웹 애플리케이션 배포
안녕하세요! 😊
드디어 웹 개발의 꽃이라고 할 수 있는 웹 애플리케이션 배포 단계에 도달하셨네요!
이전까지는 로컬에서 개발하고, 도메인도 연결하고, 서버에 파일도 업로드해봤다면, 이제는 여러분이 만든 웹사이트를 세상에 정식으로 출시하는 일만 남았어요.
마치 연습실에서 공연을 준비하던 밴드가 실제 무대에 올라가는 순간처럼,
웹 애플리케이션도 이제 **운영 환경(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 설정까지 종합적으로 고려해야 하는 중요한 단계죠!
하지만 이번 단계를 잘 마치면, 여러분의 아이디어가 세상과 만나는 멋진 순간이 펼쳐지게 됩니다 🎉
다음 시간에는 트래픽 증가에 대비한 성능 최적화나 모니터링 도구 설정도 함께 다뤄볼 수 있어요.
자신 있게, 그리고 꼼꼼하게 배포하는 여러분 되시길 바랍니다!
오늘도 뿌듯하고 즐거운 개발 되세요! 💻🌍🚀