====== DokuWiki 구축 및 협업 워크플로우 가이드 ====== **이 가이드는 사용자의 채찍질을 받으며 수십번의 시행착오를 반복한 Cursor AI + Gemini 2.5 Pro + Claude 4 Sonnet가 작성했습니다.** 이 문서는 다음과 같은 과정을 안내합니다: * PC에 존재하는 DokuWiki 작업물을 기반으로 Git 저장소 구성 * [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]] 서버에 배포 * PC(콘텐츠 공장)와 라이브 서버(팀 협업 공간) 간의 안전한 동기화 ---- ===== 📋 Phase 1: PC 개발 환경 - Git 저장소 구축하기 ===== 이 단계는 현재 PC에 있는 ''dokuwiki-dev'' 폴더를, 앞으로 모든 작업의 기준이 될 **'마스터 Git 저장소'**로 만드는 과정입니다. ==== 1. PC에 로컬 웹서버 환경 준비 (XAMPP) ==== PC에서 DokuWiki의 변경사항을 바로 확인하기 위해 XAMPP를 설치하고 설정합니다. **XAMPP 설치**: * [[https://www.apachefriends.org/|XAMPP 공식 홈페이지]]에서 설치합니다. **포트 충돌 해결**: * XAMPP 제어판에서 Apache 시작 시 `Port 80 in use` 오류가 발생하면 * ''Config > httpd.conf'' 파일을 열어 ''Listen 80''을 ''Listen 8080''으로 수정 * 저장 후 Apache를 재시작합니다. **심볼릭 링크 생성**: 관리자 권한으로 명령 프롬프트(CMD)를 열고, 아래 명령어를 실행하여 XAMPP가 우리 프로젝트 폴더를 인식하도록 합니다. mklink /D "C:\xampp\htdocs\my-wiki" "C:\Users\YourUser\path\to\MYPROJECT\dokuwiki-dev" **확인**: 웹 브라우저에서 다음 주소로 접속하여 PC의 위키를 확인할 수 있습니다. http://localhost:8080/my-wiki/ ==== 2. Git 저장소 초기화 및 첫 커밋 ==== PC의 ''dokuwiki-dev'' 폴더를 Git으로 관리 시작합니다. **Git 초기화**: VS Code에서 ''MYPROJECT/dokuwiki-dev'' 폴더를 열고, 터미널에 아래 명령어를 입력합니다. git init **.gitignore 파일 생성**: 프로젝트 루트에 ''.gitignore'' 파일을 만들고, 아래 내용을 붙여넣어 불필요한 파일이 Git에 포함되지 않도록 합니다. # DokuWiki .gitignore for Unified Management # 캐시, 로그, 잠금 파일 등 서버에서만 생성되는 파일 무시 /data/cache/ /data/locks/ /data/tmp/ /data/log/ /data/attic/ # 로컬 사용자 인증 정보 및 ACL 설정은 제외 # 이 파일들은 서버에서 별도로 생성/관리됩니다. /conf/users.auth.php /conf/acl.auth.php /conf/local.php /conf/local.php.bak **첫 커밋**: 현재까지 작업한 모든 내용(콘텐츠, 디자인)을 저장소에 기록합니다. git add . git commit -m "Initial commit of DokuWiki project from PC" ==== 3. GitHub 원격 저장소 연결 ==== 로컬 저장소를 GitHub과 연결하여 중앙 허브를 만듭니다. **GitHub에 새 저장소 생성**: * GitHub 웹사이트에서 `your-repo`라는 이름의 비어있는(Empty) 새 저장소를 만듭니다. **원격 저장소 연결 및 푸시**: PC의 터미널에서 아래 명령어를 순서대로 실행하여 로컬 내용을 GitHub에 올립니다. git remote add origin https://github.com/your-username/your-repo.git git branch -M main git push -u origin main ---- ===== 🖥️ Phase 2: 라즈베리파이 - 최초 서버 배포하기 ===== PC에서 완성한 초기 버전을 [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]]에 그대로 복제하여 라이브 위키를 만듭니다. ==== 1. 서버 필수 프로그램 설치 ==== [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]] 터미널에서 웹서버, PHP, Git을 설치합니다. sudo apt update sudo apt install apache2 php git ==== 2. GitHub에서 프로젝트 클론 ==== [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]]의 웹 루트 폴더로 이동하여, GitHub에 올려둔 우리 프로젝트를 내려받습니다. cd /var/www/html sudo git clone https://github.com/your-username/your-repo.git dokuwiki ==== 3. DokuWiki 설치 및 권한 설정 ==== 서버에서 DokuWiki가 정상적으로 작동하도록 마지막 설정을 진행합니다. **설치 마법사 실행**: * 웹 브라우저에서 아래 주소로 접속합니다: http://라즈베리파이_IP주소/dokuwiki/install.php * 관리자 계정 등 초기 설정을 완료합니다 * 이 과정은 서버에만 필요한 `conf/local.php` 등의 파일을 생성합니다 **권한 설정**: 설치가 끝난 후, DokuWiki가 파일을 저장할 수 있도록 아래 명령어로 폴더 권한을 설정해줍니다. sudo chown -R www-data:www-data /var/www/html/dokuwiki ---- ===== 🔄 Phase 3: 최종 협업 워크플로우 ===== 이제 PC와 [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]] 양쪽에서 작업한 내용을 안전하게 동기화하는 실제 운영 단계입니다. ==== A. 당신의 업무 흐름 (PC에서 콘텐츠 대량 생산) ==== PC에서는 아래의 **'PULL → CREATE → PUSH'** 3단계 법칙만 기억하시면 됩니다. **📥 (PULL) 작업 시작 전, 항상 최신 내용 먼저 받기**: PC의 `dokuwiki-dev` 폴더에서 새로운 작업을 시작하기 전에 아래 명령어를 실행합니다. 다른 팀원이 라이브 서버에서 수정한 내용을 먼저 내 PC로 가져옵니다. git pull origin main **✨ (CREATE) AI로 콘텐츠 대량 생산하기**: 최신 상태가 된 `dokuwiki-dev/data/pages/` 폴더에서 작업합니다. 커서 AI를 사용하여 원하는 만큼의 폴더와 `.txt` 파일을 자유롭게 생성합니다. **📤 (PUSH) 완성된 콘텐츠 납품하기**: 콘텐츠 생성이 끝나면 아래 명령어를 실행합니다. PC에서 만든 새로운 파일들을 GitHub 저장소에 올립니다. git add . git commit -m "Add: 새로운 콘텐츠 묶음 추가" git push origin main ==== B. 라즈베리파이의 업무 흐름 (자동 동기화) ==== [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]]는 다음 두 가지 작업을 주기적으로 수행합니다: * **(1) 팀원들의 작업을 자동으로 GitHub에 백업** * **(2) PC에서 올린 새 콘텐츠를 자동으로 내려받기** **자동 동기화 스크립트 생성**: [[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]]에서 아래 명령어로 스크립트 파일을 생성합니다. sudo nano /usr/local/bin/dokuwiki_sync.sh 열린 편집기에 아래 내용을 붙여넣습니다. 이 스크립트는 두 가지 기능을 수행합니다: * 서버의 변경사항을 먼저 푸시 * 원격 저장소의 내용을 풀(pull) #!/bin/bash # DokuWiki 프로젝트 디렉토리로 이동 cd /var/www/html/dokuwiki || exit # 1. 서버 변경사항 자동 커밋 및 푸시 # 변경사항이 있을 때만 실행 if ! git diff-index --quiet HEAD --; then echo "Changes detected on server. Pushing to origin..." sudo -u www-data git add . sudo -u www-data git commit -m "Auto-Sync: Content update from server on $(date)" sudo -u www-data git push origin main fi # 2. 원격 저장소의 최신 내용 가져오기 (PC 작업물 등) echo "Pulling latest changes from origin..." sudo -u www-data git pull origin main **스크립트 실행 권한 부여**: sudo chmod +x /usr/local/bin/dokuwiki_sync.sh **주기적인 실행 스케줄 등록 (Cron)**: `sudo crontab -e` 명령어로 크론탭 편집기를 열고, 아래 내용을 추가합니다. 매 5분마다 동기화 스크립트를 실행하도록 설정합니다. */5 * * * * /usr/local/bin/dokuwiki_sync.sh > /var/log/dokuwiki_sync.log 2>&1 > **참고**: `> /var/log/dokuwiki_sync.log 2>&1` 부분은 실행 로그를 파일로 남깁니다. 나중에 문제가 생겼을 때 원인을 파악하는 데 도움이 됩니다. ---- ===== 🎯 완성! ===== 이제 완벽한 자동화 시스템이 완성되었습니다: * **PC**: 편하게 콘텐츠 생산 * **팀원들**: 라이브 위키에서 자유롭게 협업 * **서버**: 모든 것을 알아서 동기화 ==== 🔗 관련 기술 ==== * **[[wiki:glossary:server_operations:raspberry_pi|라즈베리파이]]**: 서버 호스팅 환경 * **[[wiki:glossary:server_operations:linux|Linux]]**: 서버 운영체제 * **[[wiki:glossary:web_technologies:nginx|Nginx]]**: 웹 서버 (Apache 대신 사용 가능) * **Git**: 버전 관리 시스템 * **GitHub**: 원격 저장소 서비스 ==== 📚 추가 팁 ==== * **백업 전략**: 정기적으로 전체 프로젝트를 별도 위치에 백업 * **충돌 해결**: Git merge 충돌 발생 시 수동으로 해결 후 커밋 * **보안**: GitHub 저장소를 Private으로 설정하여 보안 강화 * **모니터링**: 동기화 로그를 정기적으로 확인하여 문제 조기 발견 ---- > **🚀 AI 시대에 맞는 완전 자동화된 위키 협업 시스템 구축 완료!** > > **PC에서는 AI로 콘텐츠를 대량 생산하고, 서버에서는 팀원들과 실시간 협업하세요.**