라이믹스 업데이트 PHP(수정)
자료 유형 | 기타 |
---|---|
간단한 소개 | 라이믹스를 최신버전으로 업데이트 시켜주는 PHP 파일입니다. |
설치 경로 | ./upgrader.php |
코어 지원 범위 | Rhymix 2.0 |
PHP 지원 범위 | 기타 |
자료 구분 | 공개 자료 |
라이선스 | GPL v3 |
저장소 URL | https://github.com/gaon12/rhymix-upgrader |
의존 자료 |
다음의 PHP 라이브러리가 설치되어 있어야 합니다. 1. cURL extension (HTTP 요청을 위한 PHP 확장 기능) 2. ZipArchive extension (ZIP 파일 압축 및 해제를 위한 PHP 확장 기능) |
파일명 | 버전 | 날짜 | 용량 | 다운 |
---|---|---|---|---|
upgrader_1.0.3.zip | 1.0.3 | 2023.04.03 | 3.4KB | 1,112 |
upgrader_1.0.2.zip | 1.0.2 | 2023.03.29 | 3.0KB | 1,348 |
upgrader_1.0.1.zip | 1.0.1 | 2023.03.29 | 2.8KB | 1,336 |
upgrader_1.0.0.zip | 1.0.0 | 2023.03.29 | 2.6KB | 1,343 |
* 항상 최신버전을 사용하는 것을 권장합니다. 또한 수행 전 백업은 필수!입니다!
업데이트 내역:
- 1.0.3: 매번 좋은 조언들에 따라 오류명을 자세하게 표시하던 것을 오류코드로 대체했습니다. 또한 진행 사항을 progress bar로 표시했습니다. 그리고 디자인을 다듬고, alert 창을 sweetalert2로 표시하여 더욱 깔끔하게 보이게 만들었습니다. 오류 코드에 대한 설명은 다음과 같습니다.(2023-04-03 10:40)
-
ERR: 100 - 관리자 권한이 없는 사용자가 업그레이드를 시도했습니다.
ERR: 200 - 디렉토리에 쓰기 권한이 없어 업그레이드를 진행할 수 없습니다.
ERR: 300 - 파일 다운로드에 실패했습니다.
ERR: 400 - Zip 파일을 열 수 없거나 압축 해제에 실패했습니다.
ERR: 410 - 압축 해제된 폴더를 찾을 수 없습니다.
ERR: 500 - 최신 버전 정보를 가져오는 데 실패했습니다.
-
- 1.0.2: 감사한 조언들에 따라 타임아웃 시간을 3분
(카레)으로 설정했습니다. 왠만한 호스팅에서도 아마도 잘 작동할 겁니다. 또 '.git' 폴더 발견시 경고창을 띄우도록 했습니다. git 명령어로 받으신 분들은 git 명령어로 업데이트(git pull) 하시는 것을 권장합니다.(2023-03-29 16:10) - 1.0.1: 많은 조언에 따라 디렉터리 쓰기 권한이 있는지 확인하도록 수정, 관리자 권한이 없는 경우, 403 Forbidden을 반환하고, 403 에러가 뜨면 '에러: 관리자 권한이 필요합니다.' 라는 메시지가 뜨도록 수정(2023-03-29 15:16)
- 1.0.0: 조언에 따라 관리자 권한이 있는 경우에만 작동하도록 수정(2023-03-29 14:18)
- alpha version: 첫 버전 릴리즈(2023-03-29 13:14)
본 자료는 라이믹스를 최신버전으로 업데이트 시켜주는 PHP 파일입니다.
사용 방법은 다음과 같습니다.
1. upgrader.php 파일을 루트 디렉토리(index.php가 있는 곳)에 저장해 주세요.
2. 혹시 모르니 백업은 필수!
3. 현재 사용중인 버전과 최신버전을 확인하고 Upgrade 버튼을 눌러주세요!
4. 완료 메시지가 뜨면 끝!
업그레이드 원리:
'./common/constants.php' 파일에서 현재 사용중인 버전을 확인합니다. 이후 GitHub API를 이용하여 최신버전 값을 읽은 뒤, 둘을 비교하여 버전이 다른 경우 최신 버전 zip 파일을 다운로드 후 압축 해제 하고 덮어씌웁니다.
주의사항:
* 항상 실행 전 백업을 합시다!
* 또한 다음 PHP 라이브러리가 설치되어 있어야 합니다.
- cURL extension (HTTP 요청을 위한 PHP 확장 기능)
- ZipArchive extension (ZIP 파일 압축 및 해제를 위한 PHP 확장 기능)
* 또한 디렉토리에 쓰기 권한이 있어야 합니다.
라이선스:
타운에선 GPL만 선택 가능하도록 해서 GPL v3를 선택했지만, GPL v3 뿐만 아니라 MIT 라이선스로도 사용이 가능합니다.
댓글 15
일부만 쓰기에 실패할 경우 라이믹스가 정상적으로 동작하지 않을 가능성이 농후하기 때문이죠.
is_writable 함수로 복사할 파일들의 권한을 일일히 확인할 수 있으면 좋을거 같아요.
작성하신 재귀 복사 함수 응용해서 체크를 하면 될거 같은데, 중요한점은 업데이트 하기 전에 일괄적으로 검사를 하고나서 작업을 하는것이죠
쓰기 권한이 있는 것을 기본 베이스로 깔고 코드를 짜니 여러 문제가 발생하네요. 수정해 보겠습니다!
특히나 버전 체크 같은것도 php 파일을 불러오는게 아니라 텍스트 그대로 체크하시니 라이믹스를 로딩하지 않아도 무방해보이고요.
그리고 업데이트가 오래걸리면 중간에 타임아웃으로 php 스크립트가 중지될 수도 있으니 set_time_limit 함수 사용하셔서 실행 시간을 대폭 늘려줄 필요도 있어보입니다.
이런 프로그램이 예외처리가 중요해서 여러가지 생각해야할 부분이 많습니다 ㅜㅜ
라이믹스를 로딩하는 이유는 관리자 권한을 가진 유저만 사용할 수 있도록 하기 위한 거고, 관리자 권한을 가진 유저 확인이 완료되면 이후엔 사용하지 않으니 크게 상관 없을거 같긴 한데... 모르겠네요.
타임아웃은 vultr 10달러짜리 서버에서 실행해 봤을땐 3초 이내로 걸리는거 같아서 크게 문제될건 없을거 같지만, 혹시 모르니 실행 시간을 늘려주는것도 고려해 봐야겠네요. 3분이면 충분하겠죠?
중간중간 업데이트 진행상황을 볼 수 있으면 도움이 될거 같지만, 스크립트 하나로 개발하기는 복잡할거 같고 3분정도 주시면 적당할것 같습니다
이미 git으로 업데이트 하고 있는 사람이 git이 아니라 파일 업로드 방식으로 변경하면 다시 git으로 업데이트하기가 곤란해지거든요.
특히나 라이믹스 자체가 git 업데이트를 적극 권장하고 있다보니, 이왕이면 지금까지 파일 업데이트 해왔던 사람들만 유용하게 사용할 수 있도록 시스템적으로 막아두는게 어떨까 요청드려봅니다.
+) 파일 업로드로 업데이트를 할 경우 .git 디렉토리가 생성되지 않습니다. 따라서 디렉토리 존재 여부만 체크해주셔도 대부분의 케이스에서 적용될듯 합니다.
갈수록 복잡해지는군요. 이러다가 자의 반 타의 반으로 모듈도 만들고 하는 거죠. 화이팅입니다! ㅎㅎ
이렇게 나오던데 왜 때문인가요?
퍼미션 상태나, 서버 환경을 확인해 보시기 바랍니다.