WEB - PHP, JQuery, Bootstrap

CodeIgniter 4 + Shield 설치부터 Cafe24 웹호스팅 배포

초심으로 2025. 10. 7. 21:51

728x90

“CodeIgniter 4 + Shield를 로컬에서 Composer로 설치하고, Cafe24 웹호스팅에 배포하는 전체 과정”을 블로그 포스팅용으로 정리한 글입니다.
Windows + XAMPP 환경을 기준으로, 저렴한 Cafe24 호스팅 등 일반적인 공유형 웹호스팅 서버에도 적용 가능한 방식으로 구성하였습니다.

📑 목차

  1. CodeIgniter 4 프로젝트 생성
  2. Shield 설치 및 설정
  3. 개발 구조 정리
  4. 웹호스팅 배포 준비
  5. 마무리 팁
  6. 결론

개발환경: 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 전체 폴더와 /wwwindex.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, 업무지원 사이트, 관리자 페이지 등

📘 참고 문서

반응형