개요
Managing News는 RSS/Atom 기반 뉴스 추적기입니다. 이 튜토리얼은 Ubuntu 서버에 소스(zip)를 내려받아 설치하는 방법을 다룹니다. 사전 조건으로는 웹서버(Apache 또는 Nginx + PHP), MySQL(또는 MariaDB), unzip과 wget이 필요합니다.
중요: 현대 Ubuntu 배포본에서는 웹 루트가 /var/www/html 일 수 있습니다. 본 문서는 /var/www/를 기준으로 설명하지만, 필요에 따라 /var/www/html로 경로를 바꾸세요.
사전 준비
- 서버에 sudo 권한이 있는 계정이 있어야 합니다.
- Apache/Nginx, PHP(필요한 확장: mysqli, curl, mbstring 등)와 MySQL/MariaDB가 설치되어 있어야 합니다.
- 방화벽에서 HTTP/HTTPS 포트(80/443)가 열려 있어야 합니다.
중요: 명령은 루트 또는 sudo로 실행하세요. 예: sudo mysqladmin create [database]
MySQL 구성
- 데이터베이스 생성:
mysqladmin create [database]
- MySQL에 접속:
mysql -u root -p[password]
- 데이터베이스에 대한 권한 부여 (localhost에서만 접속 허용):
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
ON [database].*
TO '[database_username]'@'localhost' IDENTIFIED BY '[password]';
- 권한 테이블 반영:
flush privileges;
설명: 위 명령은 설치 시 필요한 CRUD와 스키마 변경 권한을 제공합니다. 운영 환경에서는 최소 권한 원칙을 적용하세요.
Managing News 다운로드
파일을 서버에 내려받습니다:
wget http://managingnews.com/files/managingnews-1.2.zip
다운로드가 완료되면 압축을 풉니다:
unzip managingnews-1.2.zip
압축 해제 후 웹 루트로 이동:
mv managingnews-1.2/* /var/www/
노트: 웹 루트가 /var/www/html인 경우 대상 경로를 /var/www/html 로 바꾸세요.
설치 준비: 설정 복사 및 권한 설정
웹 루트의 사이트 기본 폴더로 이동하여 기본 설정 파일을 복사합니다:
cd /var/www/sites/default/
cp default.settings.php settings.php
설정 파일에 쓰기 권한을 부여합니다(설치 중 필요):
chmod a+w settings.php
파일 업로드/임시 저장용 디렉터리 생성 및 권한 설정:
mkdir files
chmod a+w files
중요: 설치가 끝난 후에는 반드시 쓰기 권한을 제거하여 보안을 유지하세요(아래 참조).
웹 설치 실행
브라우저에서 다음 URL로 접속하세요:
http://YOURIPADDRESS/install.php
- 설치 프로필 선택: “install Managing News”(설치 시작)를 클릭합니다.
- 데이터베이스 설정: 앞에서 만든 데이터베이스 이름, 데이터베이스 사용자명 및 비밀번호를 입력합니다.
- “Save and continue”(저장하고 계속)를 클릭합니다.
- 사이트 정보 및 관리자 계정, 서버 설정(기본 시간대, Clean URLs 활성화 여부 등)을 입력합니다.
- 설치가 완료되면 다음 단계로 진행합니다.
설치 후에는 보안 조치를 반드시 수행하세요.
설치 후 권한 되돌리기 및 정리
설치가 끝났으면 설정 파일과 디렉터리의 쓰기 권한을 제거합니다:
cd /var/www/sites/default/
chmod a-w settings.php
상위 디렉터리로 이동하여 default 폴더의 쓰기 권한을 제거합니다:
cd ..
chmod a-w default
권장 추가 작업(운영 환경):
# 웹 서버 사용자로 소유권 설정 (예: Apache/Nginx의 www-data)
sudo chown -R www-data:www-data /var/www/
# 설치 파일 제거(install.php 등)
sudo rm /var/www/install.php
중요: 설정 파일을 항상 웹에서 쓰기 불가능하도록 유지하세요. 쓰기 권한이 남아있으면 원치 않는 설정 변경이나 취약점이 생길 수 있습니다.
보안 하드닝 권장사항
- MySQL 계정은 localhost로 제한하고 강력한 비밀번호를 사용하세요.
- 웹 서버에서 HTTPS를 활성화하세요(Let’s Encrypt 권장).
- 디렉터리 목록 보기를 비활성화하세요(Options -Indexes).
- 설정 파일(settings.php)은 웹에서 쓰기 가능 상태로 두지 마세요.
- 설치 스크립트(install.php)를 삭제하세요.
- 정기적으로 업데이트를 확인하고 패치하세요.
문제 해결(트러블슈팅)
- MySQL 연결 오류: MySQL이 동작하는지 확인하고, 포트(3306)와 소켓 경로를 점검하세요.
- 권한 거부(403): 파일 소유자와 권한을 확인하고 웹서버 사용자(www-data 등)로 소유권을 변경하세요.
- Clean URLs가 동작하지 않음: Apache 사용 시 mod_rewrite가 활성화되어 있는지 확인하세요. Nginx는 별도 재작성 규칙이 필요합니다.
- PHP 오류 또는 확장 모듈 누락: 로그(/var/log/apache2/error.log 또는 PHP-FPM 로그)를 확인하고 필요한 확장(mysqli, mbstring 등)을 설치하세요.
예: mod_rewrite 활성화(Apache)
sudo a2enmod rewrite
sudo systemctl restart apache2
검수 기준
- 웹 브라우저에서 사이트 기본 페이지가 정상적으로 로드된다.
- 관리자 계정으로 로그인할 수 있다.
- 데이터베이스 연결 오류 메시지가 없고, 설치 화면이 성공적으로 완료되었다.
- 파일 권한이 보안 권장사항에 맞게 설정되어 있다(settings.php에 쓰기 권한 없음).
- 피드 수집 및 검색 기능이 기본적으로 동작한다(샘플 피드 임포트 후 확인).
역할별 체크리스트
- 시스템 관리자:
- Apache/Nginx, PHP, MySQL 설치 및 서비스 상태 확인
- 방화벽 설정 및 HTTPS 구성
- 파일 소유권 및 권한 설정
- 개발자/운영자:
- 사이트 설정 검증(사이트 이름, 이메일)
- 관리자 계정 생성 및 로그인 확인
- Clean URLs 및 URL 재작성 동작 확인
- 보안 담당자:
- 설치 파일 삭제 및 설정 파일 권한 확인
- 데이터베이스 계정 권한 검토
대안 및 마이그레이션 팁
- 패키지 관리 형식으로 제공되는 자동 설치가 없다면 수동 설치가 필요합니다. 컨테이너화(Docker) 또는 가상 호스팅을 이용하면 환경 격리가 쉬워집니다.
- 현대 Ubuntu에서는 웹 루트가 /var/www/html 이므로 위 경로를 상황에 맞게 조정하세요.
간단한 방법론(4단계)
- 사전 요구사항 점검(서비스, 포트, 패키지)
- 데이터베이스 준비 및 계정 생성
- 파일 업로드, 설정 복사, 권한 부여
- 웹 설치 실행 → 권한 되돌림 → 보안 점검
짧은 용어집
- Clean URLs: 인간 친화적 URL로, ?q= 가 아닌 경로 기반 URL을 말합니다.
- settings.php: 애플리케이션 설정 파일로, DB 연결 정보 등이 포함됩니다.
요약
- MySQL 데이터베이스를 생성하고 필요한 권한을 부여하세요.
- Managing News 소스를 다운로드하고 웹 루트에 배치하세요.
- settings.php와 files 디렉터리에 설치 중 쓰기 권한을 주고, 설치 완료 후 권한을 제거하세요.
- 설치 후 보안 권장사항(설치 파일 삭제, HTTPS 활성화)을 반드시 수행하세요.
중요: 본 가이드는 일반적인 설치 흐름을 제공합니다. 서버 환경과 관리 정책에 따라 명령과 경로를 적절히 조정하세요.