메뉴 건너뛰기

XE Guidebook

조회 수 1184 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

 

이미 잘 알고 있는 바와 같이 XE Core는 현재도 계속 개발 진행 중에 있는 조립형, 모듈형 구조의 프로그램으로, 최초 설치된 XE 프로그램은 순수 코어 프로그램 자체로만 이루어져 있으며, 필요한 모듈은 사용자가 그때 그때 추가 설치하여 사용할 수 있게끔 되어 있다. 순수 코어 프로그램이란 최신 버전의 코어가 배포될 때 사용자 업그레이드 과정에서 덮어 씌어지는 파일과 디렉터리를 말하며, 사용자가 추가한 파일과 디렉터리는 그대로 유지 된다.
 
다시 말해 XE를 사용하여 사이트를 만들기 위해서 사용자는 쇼핑몰 등의 수 많은 모듈, 레이아웃, 애드온, 위젯 등의 프로그램을 추가로 설치하여 사용하여야 하며, 사용 도중에는 위 그림에서와 같이 XE Core는 물론이고 사용하고 있는 프로그램의 수정 보완이 일어나게 되면 해당 프로그램들을 업데이트하면서 사용해야 한다.
 
일반적으로 XE Core의 업그레이드와 사용자가 필요로 하는 추가기능의 설치 및 업데이트를 하고자 할 경우에는 최초 XE Core를 설치할 때와 똑 같은 방법으로 XpressEngine 공식 홈페이지에서 필요한 모듈을 다운로드 한 후 서버에 업로드하는 과정을 밟아 설치를 하면 된다. 또 다른 방법으로는 "XE Core" 내의 "쉬운 설치" 모듈을 이용하여 FTP 정보를 입력하고 모듈, 레이아웃, 애드온, 위젯 등을 간편하게 설치하거나 업데이트 할 수 있다.
 
이번 시간에는 앞서 배운 "XE Core 업그레이드 하기"에서, 사용자가 유의해야 할 주의사항들에 대해서 알아보도록 하자
 
 

● XE Core 업그레이드 시 주의사항 
 
▶ 내 컴퓨터의 "사이트 관리용 폴더"에 "XE 운영파일 폴더"를 만들어 활용하기.
 
최초 XE 코어를 설치하고, XE에서 제공하는 각종 모듈이나 레이아웃, 스킨, 위젯 등의 프로그램을 추가 설치하여 사이트를 만들다가, 사용자는 불가피하게 XE Core 파일을 직접 수정하여 사용하거나, 각종 모듈, 레이아웃, 스킨, 위젯 등의 프로그램을 수정하여 사용할 수가 있다.
 
이럴 경우 최신 버전의 "XE 코어"를 서버에서 압축 해제하게 되면 기존의 코어 파일이 모두 덮어 씌어지게 되며, 사용자의 필요에 의해서 직접 수정한 모든 프로그램들이 초기화되어 최초 설치 시와 동일한 모습으로 돌아가게 된다. 이러한 문제에 잘 대처하기 위해 "XE Core 다운로드하기" 시간에 만든 내 컴퓨터의 "사이트 관리용 폴더"를 이용함으로써 작업 능률도 아울러 끌어 올릴 수 있는 실전적 실무 기술을 적극 활용할 것을 권장한다.
 
"사이트 관리용 폴더" 하위에 "XE Core 버전 폴더"와 "XE 운영파일 폴더"를 각각 만들어 놓고, 예전에 다운로드한 "xe.1.7.5.1.zip 파일(혹은 압축 해제된 xe 폴더)"을 "XE Core 버전 폴더"로 이동시켜 놓고, 새로 다운로드한 "xe.1.7.5.2.zip" 파일도 이 폴더에 넣어 관리하도록 한다. "XE 운영파일 폴더"는 앞으로 추가 설치하는 모든 모듈과 레이아웃, 애드온, 테마, 위젯 등의 프로그램을 효율적으로 관리하기 위한 폴더로서 서버의 루트 디렉토리(public_html)의 트리구조와 똑 같은 구조로 디렉터리를 유지하면 된다.
 
XE 코어 자체의 파일을 불가피하게 수정하고자 할 경우에는 "XE Core 버전 폴더"에 있는 코어 원본에서 "XE 운영파일 폴더"의 같은 트리구조 디렉터리에 수정이 필요한 파일을 복사한 후 수정하고 서버에 업로드하도록 한다. 이러한 내 컴퓨터의 "사이트 관리용 폴더" 관리 방법은 처음엔 좀 성가시고 번거로운 작업 같지만, 추후 서버를 이전하거나 버전을 업그레이드 할 때, 수정하거나 추가한 파일 및 폴더를 효율적으로 관리할 수 있는 아주 유용하고 실전적인 실무 기술이 될 것이다.
 
 
▶ XpressEngine 공식홈페이지 방문하기
 
XE 공식 홈페이지에 수시로 방문하여 코어가 진화, 발전하는 과정을 유심히 살펴보도록 하자. 공지사항과 자유게시판, 사용자 포럼 등에 지속적으로 참여하여 제안과 개선안의 내용을 공유하고 이슈에 등록된 패치 내용에 대하여 관심을 가져야 한다. 오픈소스인 XE가 발전하는 원동력은 개발자가 아니라 오히려 유저 들의 적극적인 참여에서 나오는 것으로 유저들의 이야기를 주의 깊게 살펴보면 XE의 사용에도 많은 도움이 된다.
 
▶ 별도의 테스트 계정에서 백업 파일을 이용하여 사전 충분한 검증 후 실적용하자
 
개인적인 웹사이트와 블로그 및 사업용 웹사이트를 개발하고 운영하는 계정과는 별도로 코어를 위한 소규모 테스트 계정을 운영하도록 하자. XpressEngine은 상업용 CMS와는 달리 무료 공개되는 오픈소스 소프트웨어이므로 하위버전에서 상위버전으로 올라갈수록 추가되는 기능 구현과 옵션을 위한 수정코드를 많이 포함하게 되고, 경우에 따라서는 하위 버전의 모듈 호환성을 유지하지 못하는 경우도 있다.
 
따라서 오픈소스를 이용하여 중요한 웹사이트를 개발하고 운영할 때에는 별도의 테스트 계정을 활용하여 개선된 코어의 버전별 변경사항을 테스트하고 확인하는 개인적인 노력이 반드시 필요하다. 테스트 계정은 실 운영 중인 서버환경과 가능하면 같은 환경을 구축하고 운영 중인 웹사이트의 백업파일을 활용하여 코어 업그레이드를 위한 사전 모의 테스트를 거친 후, 현재 사용 중인 모듈과 확장 모듈의 호환성을 검토하고 도출된 문제점은 충분한 시간을 갖고 해결한 후에 실 적용하는 것이 가장 바람직하다.
 
▶ 백업 파일 생성하기
 
XE 코어를 업그레이드 하기 전에, 전체 계정의 내용 또는 코어의 운영 디렉터리를 반드시 백업해 두어야 한다. 계정의 백업 작업은 FTP를 이용해서 할 수 없으며, SSH 또는 Putty 프로그램으로 서버에 접속하여 텔넷 명령어를 사용해서 백업 파일을 생성해야 한다.
 
☞ "XE 백업과 복원" 참조
 
계정의 백업은 코어 파일을 포함하는 디렉터리 및 파일 전체를 1개의 압축 파일로 묶는 "디렉터리의 백업"과, 코어와 연동하고 있는 DB의 내용을 1개의 sql 문서로 만드는 "DB 백업"으로 구분하며, 서버 계정에 접속한 텔넷에서 2개의 명령어를 사용하여 작업하면 된다.

- 파일 및 디렉터리 백업 파일 생성하기

tar -cvfpz backuphtml.tar.gz html
위 명령어는 루트(root) 디렉터리 전체를 1개의 압축 파일로 만들어 준다.
 
tar -cvfpz 백업파일이름.tar.gz 디렉터리명

- DB 백업 파일 생성하기 
 
mysqldump -u 아이디 -p DB네임 > backupdb.sql
위 명령어는 DB 테이블의 전체 내용을 1개의 sql 문서로 만들어 준다.
 
mysqldump -u 아이디 -p 디비네임 > 백업파일이름.sql
 
백업 작업이 완료되면 서버 계정의 루트 디렉터리 바깥에 "backuphtml.tar.gz" 파일과 "backupdb.sql" 문서가 생성되는데, 이 2개의 백업 파일을 다운로드 받아 저장해 두고, 계정에서는 삭제하지 않도록 한다. 만약 코어를 업그레이드하는 과정에서 오류가 발생하거나 다시 복원해야 하는 경우 사용할 수 있다.
 
호스팅 서비스를 받는 경우, 호스팅 업체의 "백업하기" 서비스를 이용하여 백업할 수도 있다. 또한 호스팅 업체에서는 주기적으로 백업을 하기 때문에 코어 업그레이드 후 문제가 발생하였을 경우 계정 복원을 요청하여 복원할 수 있다. 백업 및 복원 서비스 지원여부를 사전에 잘 알아 본 다음, 업그레이드 작업을 하는 것이 좋을 것이다.
 
▶ 기본 모듈과 확장 모듈의 호환성 검토하기
 
코어 구동을 위해 기본적으로 포함된 모듈 파일들을 "기본 모듈"이라 하며, 코어와 더불어 추가적인 기능을 구현하는 모듈은 확장(extensions) 모듈이라 한다.(애드온과 위젯 프로그램도 확장 모듈임) 확장 모듈에는 개발팀이 공식(Official) 배포하는 모듈과, 외부 모듈 개발자에 의해서 확장 배포하는 사용자(Custom) 모듈로 나뉘게 되는데, 대표적인 공식 모듈에는 게시판, 카페XE, 위키XE, 자료실 모듈 등이 있고 사용자 모듈에는 게시판EX(BoardEX), 소셜XE(SocialXE) 모듈 등이 있는데, XE개발팀이 아닌 외부 개발자가 제작 배포한다는 의미에서 커스텀(Custom)이라는 의미를 가지게 된다.
 
코어를 업그레이드 하게 되면, 코어 파일 전체 또는 변경된 일부 파일을 서버에 업로드하여 기존 파일 위에 덮어쓰게 되고, 이때 새로 추가된 파일은 기존 파일과 함께 추가 되며, 더 이상 쓰이지 않는 불필요한 파일들은 제거되지 않고 서버에 그대로 남게 되는데, 코어의 구동에는 아무런 지장을 주지 않는다.
 
이때 사용자 필요에 의해서 추가된 확장 모듈은 업그레이드 되지 않기 때문에, 만약 확장 모듈이 새로운 코어에서 변경된 쿼리 방법과 MVC 구조를 따르지 않았다면 오류가 발생하게 된다. XE개발팀은 하위버전을 위한 호환성을 최대한 유지하려고 노력하지만 추가된 모듈의 기능 구현과 효율적인 쿼리 방법의 개선, 오류에 따른 버그패치를 포함하기 위해 부득이하게 변경할 수 있다.
 
이러한 경우 확장 모듈은 사용자가 직접 수정하거나 또는 모듈 개발자가 호환성을 검토하여 소스코드를 개선하고 재배포할 때까지 기다린 후 적용해야 할 것이다. 즉 사용자가 추가한 확장 모듈의 경우 새로운 버전의 코어와 호환성을 유지할 수 있는 충분한 시간적 여유가 필요하게 되는 것이다.
 
그러므로 코어를 업그레이드 할 때에는 개선된 기본 모듈 외에도 사용자 모듈을 포함한 확장 모듈과의 호환성 여부를 테스트 계정을 이용하여 사전에 충분히 검토하고 오류가 없는 경우에 한하여 진행해야 한다. 코어는 요청에 따른 응답 오류가 발생하면 백지화면을 보여 주거나 웹페이지의 일부조차 불러오지 못하는 치명적인 오류가 발생할 수도 있다.
 
또한 호환성이 검증되지 않은 확장 모듈(커스텀)에서 발생되는 오류사항은 개발팀이 그 어떠한 보증이나 호환성을 담보할 수 없고 지원대상이 되지 않기 때문에, 새로운 버전의 코어로 업그레이드 하기 위해서는 반드시 테스트 계정에서 코어와 기본 모듈, 확장 모듈의 호환성을 다양한 방법으로 충분히 검토한 후에 오류가 없는 경우 업그레이드를 진행해야 한다.
 
테스트 과정에서도 모듈을 한꺼번에 설치하기 보다는 순차적으로 설치, 확인해 보면서 점검해 보는 것도 좋은 방법이다. 확장 모듈에서 오류가 발생하는 경우 충분한 시간적 여유를 갖고 해당 모듈 제작자에게 문의하여 패치 방법 및 호환성 검토를 요청하도록 한다.
 
그리고 기본 모듈 또는 공식 모듈이라고 해도 사용자의 필요에 의해서 일부를 수정하거나 함수의 메소드가 변경되면 커스텀(Custom)의 의미를 갖게 되고, 스킨의 경우에는 변경된 맴버 변수와 메소드에 대응하지 못하면 오류가 발생할 수 있음을 유념해야 한다.
 
▶ 사용자 애드온, 레이아웃, 위젯 스킨의 호환성 검토하기
 
애드온과 레이아웃, 위젯 프로그램과 위젯 스킨 등도 코어에 기본적으로 포함된 프로그램 이외에 사용자의 필요에 의해 작성된 소스를 포함하는 경우 커스텀(Custom)으로 분류되고, 변경된 템플릿 문법 또는 쿼리 방법에 대응하지 못하게 되는 경우 코어 업그레이드 이후에 예기치 못한 오류가 발생할 수 있다.
 
이러한 경우 모의 테스트 과정에서 기본 애드온 또는 위젯으로 설정을 변경하여 테스트해 보고 사용 중인 소스코드와 비교하여 직접 수정하거나 제작자에게 문의 또는 지원을 요청하여야 할 것이다.
 
▶ 관리자 로그인을 한 후 업그레이드하기
 
새 버전의 코어 파일을 업로드하기 전에 반드시 계정에 접속하여 최고관리자 권한으로 로그인을 하고 제어판을 열어 두도록 한다. XE코어는 항상 index.php를 통해 요청과 응답을 실행하기 때문에 만약 요청과 응답에 따른 오류가 발행할 경우 사이트에 접근하는 것이 어려울 수 있다.
 
따라서 관리자 로그인 후에 제어판을 열어 두고 모듈 업데이트 실행과 캐시파일을 재생성 할 준비를 미리 해 두는 것이 중요하다. 만약 예기치 못한 오류가 발생하는 경우 /xe/?module=admin 을 URL에 붙여 관리자 모듈을 실행해 보고 세부적인 옵션설정을 다시 한번 꼼꼼히 확인해 보아야 한다.
 
만약 같은 문제가 지속된다면 해당하는 오류사항을 공식홈페이지에 문의하여 도움을 요청하도록 한다. 오류 또는 버그의 내용은 나만 겪게 되는 문제가 아니라 같은 프로그램을 사용하는 모든 유저가 똑 같이 직면하게 되는 공통된 주제이므로 정보의 공유가 빠르면 빠를 수록 미덕이 된다.
 
▶ 안정적으로 파일 업로드하기
 
웹사이트를 만들고 운영한다는 것은 월드와이드웹(WWW)이라는 거미줄(Web)에서 운영자가 지정한 특별한 컴퓨터(서버)에 공유를 원하는 목적 파일을 올려 두고 필요한 사람들과 함께 공유하는 방법을 제공하는 정보 공간을 만드는 작업이다.
 
서버에 목적 파일을 업로드하는 작업은 파일전송 프로토콜(File Transfer Protocol, FTP)을 이용하게 되는데 이러한 작업을 유용하게 도와주는 프로그램을 FTP 유틸리티라고 말하며, 텔넷(Telnet)/SSH(Secure Shell, SSH)은 코어 압축파일을 서버에서 직접 풀어 덮어쓰기 때문에 가장 안정적인 방법이 된다.
 
FTP 유틸리리티를 이용하게 되면 상대적으로 텔넷/SSH보다 사용하기에는 쉽지만, 파일을 낱개로 하나하나 업로드해야 하기 때문에 파일 누락의 오류가 발생할 수 있는 소지가 있다. 경험상 가장 안정적인 응용 프로그램으로는 파일질라(FileZilla) 사용을 권장한다.
 
코어를 업그레이드 하는 가장 쉬운 방법은 [쉬운 설치]를 이용하는 것이지만, 다운로드 서버와 안전하지 못한 네트워크로 직접 연결된다는 점에서 안정성은 가장 낮을 수 있다.
 
파일전송에 완벽한 유틸리티는 없다. 항상 사용자는 작업 후 파일 누락의 오류가 없는지를 꼼꼼히 확인하는 습관을 가지는 것이 중요하다. 파일 누락의 오류를 반드시 체크하여 문제가 발생한 경우 재업로드(재인스톨) 과정을 거쳐 누락된 파일이 없도록 하여야 할 것이다.
 
▶ 모듈 업데이트 실행하기
 
CMS(Content management system)란 데이터베이스(Database)에 생성된 자원과 정보를 통합적으로 관리하기 위한 입출력 도구이다. 따라서 코어를 업그레이드한다는 것은 이전보다 더욱 효율적인 방법으로 데이터의 조각들을 입력하고 원하는 결과값의 출력을 위해 개선된 방법론을 포함하게 된다.
 
코어를 업그레이드 하고 나면 가장 먼저 데이터베이스 테이블의 컬럼 변동사항을 확인해 보고 수정된 내용으로 적용해 주어야 하는데, 이것이 모듈의 업데이트 작업이다. 모듈 업데이트를 하지 않으면 개선된 방법론을 지원하지 못하게 되고 잘못된 쿼리의 내용으로 인해 코어는 오류에 빠지게 된다.
 
따라서 모듈의 업데이트 항목을 확인하고 수정된 DB 테이블의 업데이트 작업을 가장 먼저 실행해 주어야 한다. 모듈을 신규로 설치할 경우에 "모듈 업데이트"는 DB에 모듈이 필요로 하는 새로운 테이블 생성을 해야 한다는 것을 의미한다.
 
▶ 캐시파일 재생성하기
 
모듈 업데이트가 완료되면 반드시 캐시파일을 재생성 해야 한다. 파일 덮어쓰기로 코어의 개선된 MVC 구조(폴더와 파일)가 적용되고 DB 테이블이 변경되면 사용자 요청에 따른 개선된 쿼리를 수행하기 위해 코어는 캐시파일을 참조하게 된다. 이때 이전 버전의 캐시파일을 불러오게 되면 코어는 큰 혼란에 빠지게 되므로, 모듈 업데이트가 완료된 후에는 반드시 캐시파일을 재생성하여 업그레이드 된 쿼리를 정상적으로 수행할 수 있도록 변경된 캐시파일을 가장 먼저 생성하여야 한다.
 
캐시파일은 서버측에서 코어가 임의로 files 폴더를 생성하고 코어 구동에 필요한 초기설정값을 모듈의 종류별로 생성하여 저장한다. 만약 캐시파일에 문제가 발생하면 파일 권한 문제로 수정 또는 변경이 용이하지 않을 수 있게 되는데, 문제의 발생시는 공식홈페이지의 묻고 답하기 게시판을 활용하여 문제점을 해결하여야 할 것이다. 또한 호스팅 사용자의 경우에는 루트권한을 가지고 있는 서버관리자에게 도움을 요청하여야 할 것이다.
 
▶ XE코어의 이해와 개선/버그 문의하기
 
XpressEngine은 MVC 구조로 이루어진 CMS 도구라는 것을 충분히 이해할 필요가 있다. XE코어는 모델-뷰-컨트롤러(Model-View-Controller) 개발 패턴(MVC 구조)에 기반하여 프로그램이 설계된 소프트웨어이다. MVC 구조로 이루어진 XE코어는 기타 언어를 포함하여 HTML과 PHP를 활용하는 방법 면에서 가장 확장성이 높은 개발구조이다.
 
MVC 구조의 모듈을 개발하는 과정은 타 CMS보다 조금 복잡하고 응용 및 확장을 위한 수고와 노력이 더욱 필요하며 요청과 응답에 따른 반응속도가 타 CMS보다 느리다고 느낄 수 있는 구조적 한계를 가지고도 있다. 하지만 현재 상태에 최적화 되고 고착된 CMS가 아닌 미래 지향적인 개발환경을 꾸준히 제공한다는 의미에서 서버측 OS에 버금가는 CMS의 탄생도 기대해 볼 수 있다.
 
오픈소스로 진행되는 이 소프트웨어의 개발 프로젝트의 핵심은 수많은 사람들의 손을 거쳐 더욱 완성도 높은 소프트웨어를 만드는 데 있는 것으로, 직접적으로 개발에 참여하는 것 뿐만 아니라 사용자가 적극적으로 사용하기에 편리한 개선안 또는 버그 내용을 등록하고 문의하는 것이 이전보다 더욱 확장된 코어를 만들 수 있는 원동력이 된다.
 
유저로서 오픈소스를 활용하는 가장 기본적인 자세는 소스코드에 대한 기초적인 이해와 아울러 최소한의 기술을 적용, 유지하기 위해서라도 스스로 꾸준히 학습하는 노력도 게을리하지 말아야 할 것이다.
 
▶ 코어 업그레이드 후 오류가 발생했을 때..
 
업그레이드 이후에 오류가 발생하는 원인으로는 여러 가지가 있다. FTP를 이용해서 압축파일을 미리 풀고 서버에 업로드하는 경우 전송 오류에 따른 파일 누락이 가장 크며 또는 사용자가 추가한 애드온 등에서 새로운 버전과 스크립트 충돌이 있을 수 있다. 
 
이런 경우에는 파일을 다시 업로드 해 보거나 애드온 등을 하나씩 꺼 보면서 확인해 보도록 하고, 혹시 이전에 코어 원본 파일을 일부 수정 했던 기록은 없는지도 확인해 보도록 한다.
 
기타 오류에 대해서는 XE 공식 홈페이지를 통해 문의를 하기 바랍니다.
 
※ 구버전으로 XE 코어를 다운그레이드하게 되면..
 
XE 코어를 이전 버전의 압축 파일을 서버에 업로드하여 압축 해제하게 되면, 최신 버전의 파일 및 디렉터리도 다시 구버전의 파일 및 디렉터리로 덮어 씌어지기 때문에 이전 버전으로 되돌아 간다. 물론 사용자가 추가한 스크립트 등은 복구되는 것은 아니기 때문에 필요에 의해서 수정한 스크립트 및 파일의 내용 등은 꼼꼼히 점검하여 다운그레이드하여야 할 것이다.
 
그러나 코어의 버전차이가 크고, DB 테이블의 변경사항이 큰 경우에는 이전 코어로 되돌릴 수 없는 상황이 발생할 수 있다. 이런 경우에는 미리 백업해 두었던 "백업 파일(디렉터리의 백업 파일과 DB 백업 파일)"을 이용하여 복원해야만 한다.

 


List of Articles
번호 분류 제목 글쓴이 조회 수
17 XE Admin 4-01 XE Admin 개요 file XE 4Uself 731
16 XE Admin 4-02 XE Admin "일반" 설정하기 file XE 4Uself 2073
15 XE Admin 4-03 XE Admin "FTP 설정" 하기 file XE 4Uself 884
14 XE Admin 4-04 XE Admin "관리자 설정", "파일업로드", "파일박스" 설정하기 file XE 4Uself 1121
13 XE Admin 4-05 XE Admin 회원 관리 file XE 4Uself 1712
12 XE Admin 4-06 XE Admin 콘텐츠 관리 file XE 4Uself 693
11 XE Admin 4-07 XE Admin 즐겨찾기 file XE 4Uself 626
10 XE Admin 4-08 XE 추가기능의 의의와 종류 file XE 4Uself 643
9 XE Admin 4-09 XE "추가기능"의 설치 방법 XE 4Uself 554
8 XE Admin 4-10 XE Admin "[고급] > [쉬운 설치]" 사용하기 file XE 4Uself 651
» XE Admin 4-11 XE Core 업그레이드 하기와 주의 사항 XE 4Uself 1184
6 XE Admin 4-12 추가기능의 설치와 관리 - "설치된 레이아웃" file XE 4Uself 610
5 XE Admin 4-13 추가기능의 설치와 관리 - "설치된 모듈" file XE 4Uself 631
4 XE Admin 4-14 추가기능의 설치와 관리 - "설치된 위젯" file XE 4Uself 614
3 XE Admin 4-15 추가기능의 설치와 관리 - "설치된 애드온" file XE4Uself 597
2 XE Admin 4-16 에디터 설정과 확장 컴포넌트의 추가설치 및 관리 file XE 4Uself 1116
1 XE Admin 4-17 사이트 제작/편집 file XE 4Uself 1106
Board Pagination Prev 1 Next
/ 1