“CodeIgniter 4 + Shield를 로컬에서 Composer로 설치하고, Cafe24 웹호스팅에 배포하는 전체 과정”을 블로그 포스팅용으로 정리한 글입니다.
Windows + XAMPP 환경을 기준으로, 저렴한 Cafe24 호스팅 등 일반적인 공유형 웹호스팅 서버에도 적용 가능한 방식으로 구성하였습니다.
📑 목차
개발환경: Windows 10 / Apache 2.4 / PHP 8.4
목적: 내부 인증이 포함된 업무지원용 웹사이트를 CodeIgniter4 + Shield로 구축하고, 웹호스팅에 적용
1️⃣ CodeIgniter 4 프로젝트 생성
1. Composer 설치 확인
먼저 Composer가 설치되어 있는지 확인합니다.
composer -V
버전이 표시되면 정상입니다.
설치가 안 되어 있다면 👉 https://getcomposer.org/download/ 에서 다운로드하세요.
2. CodeIgniter 4 새 프로젝트 생성
원하는 폴더에서 아래 명령어 실행:
composer create-project codeigniter4/appstarter ci4shield
설치 후 폴더로 이동:
cd ci4shield
3. 로컬 서버 실행 (테스트)
php spark serve
브라우저에서
👉 http://localhost:8080 접속.
CodeIgniter 환영 화면이 나오면 성공입니다.
2️⃣ Shield 설치 및 설정
1. CodeIgniter Shield 설치
composer require codeigniter4/shield
2. 초기 설정
Shield의 환경설정을 프로젝트로 복사:
php spark shield:setup
이 명령은 다음을 자동 생성합니다:
/app/Config/Auth.php
/app/Config/AuthGroups.php
/app/Database/Migrations/
아래 인증 관련 테이블 마이그레이션 파일/app/Database/Seeds/AuthSeeder.php
(초기 관리자 계정용)
3. 데이터베이스 연결 설정
app/Config/Database.php
수정:
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'ci4shield',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
];
4. 마이그레이션 실행
php spark migrate
5. 초기 계정 생성
php spark db:seed AuthSeeder
6. 라우트 등록
app/Config/Routes.php
하단에 추가:
service('auth')->routes($routes);
이제 /login
, /logout
, /register
URL이 자동으로 생성됩니다.
7. 서버 실행 후 로그인 페이지 확인
php spark serve
브라우저에서
👉 http://localhost:8080/login
Shield 로그인 페이지가 나타납니다.
3️⃣ 개발 구조 정리
프로젝트 구조 예시:
/app
├─ Config/
├─ Controllers/
├─ Models/
├─ Views/
└─ Filters/
- 로그인된 사용자 정보는
auth()->user()
로 접근 가능 - 권한 체크 예시:
if (!auth()->user()->inGroup('admin')) { return redirect()->to('/login'); }
4️⃣ 웹호스팅 배포 준비
웹호스팅은 일반적으로 public_html 또는 www 폴더 아래에 웹 루트가 있습니다.
CodeIgniter의 public
폴더를 그대로 올리면 안 됩니다.
보안을 위해 system
, app
, writable
폴더는 웹 루트 바깥으로 이동시키는 것이 핵심입니다.
1. 서버 디렉토리 구성 (예시)
서버 경로 | 역할 |
---|---|
/home/ci4shield/ci4 |
CI4 전체 소스 (보호영역) |
/home/ci4shield/www |
실제 공개 웹 루트 (public) |
2. .htaccess
수정
/home/ci4shield/www/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# index.php 제거
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
3. index.php 수정
/home/ci4shield/www/index.php
파일에서 경로를 조정합니다:
$pathsPath = realpath(__DIR__ . '/../ci4/app/Config/Paths.php');
require $pathsPath;
4. 환경 설정 (env 로 .env 파일 생성)
/home/test/ci4/.env
에서 다음 항목 설정:
CI_ENVIRONMENT = production
app.baseURL = 'https://yourdomain.com/'
database.default.hostname = localhost
database.default.database = ci4shield
database.default.username = dbuser
database.default.password = dbpass
5. 파일 업로드
FTP 혹은 SFTP를 이용해 /ci4
전체 폴더와 /www
의 index.php
, .htaccess
파일을 서버로 업로드합니다.
6. 테스트
브라우저에서
👉 https://yourdomain.com/login
정상적으로 Shield 로그인 화면이 나타나면 성공입니다.
5️⃣ 마무리 팁
항목 | 팁 |
---|---|
보안 | writable 폴더의 권한을 755 또는 775로 유지 |
속도 개선 | .env 파일을 production 으로 설정 |
세션 유지 | app/Config/App.php 에서 session 경로를 writable/session 으로 지정 |
로그 관리 | writable/logs/ 주기적 정리 권장 |
자동 배포 | Git + FTP 배포 스크립트(WinSCP나 Github Actions 이용) 사용 가능 |
✅ 결론
구분 | 내용 |
---|---|
장점 | CodeIgniter 4의 단순함 + Shield의 강력한 인증 기능 결합 |
로컬 개발 편의성 | php spark CLI로 초기 설정과 마이그레이션 간편 |
호스팅 호환성 | public 디렉토리 구조 조정 후 대부분의 PHP 호스팅 환경에서 문제없이 작동 |
추천 사용처 | 내부 로그인 관리가 필요한 소규모 ERP, 업무지원 사이트, 관리자 페이지 등 |
📘 참고 문서
'WEB - PHP, JQuery, Bootstrap' 카테고리의 다른 글
.NET MVC5에서 OneDrive API(Microsoft Graph)로 파일 업로드 (8) | 2025.08.13 |
---|---|
가독성 높은 JavaScript Array 순회 방법 TOP 4 (2) | 2024.11.11 |
JavaScript 정밀 연산 라이브러리 TOP 4: big.js, bignumber.js, decimal.js, math.js (5) | 2024.09.24 |
JavaScript에서 부동소수점 연산 오류 해결 방법 (decimal.js) (2) | 2024.09.23 |
.NET Core에서 MemoryCache를 활용한 Backend 캐시 구현 가이드 (2) | 2024.09.13 |