추천 수 2 댓글 15
Extra Form
자료 소개 라이믹스를 최신버전으로 업데이트 시켜주는 PHP 파일입니다.
설치 경로 ./upgrader.php
테스트 환경 Rhymix 2.0
라이선스 GPL v3
Github 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 1,108
upgrader_1.0.2.zip 1.0.2 2023-03-29 1,347
upgrader_1.0.1.zip 1.0.1 2023-03-29 1,335
upgrader_1.0.0.zip 1.0.0 2023-03-29 1,342

* 항상 최신버전을 사용하는 것을 권장합니다. 또한 수행 전 백업은 필수!입니다!

 


 

업데이트 내역:

  • 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 라이선스로도 사용이 가능합니다.

  • profile

    0.png

    이렇게 나오던데 왜 때문인가요?

  • profile ?
    그건 아마 서버에서 잘못된 값을 반환해서 저런 에러값이 나온 것입니다.

    퍼미션 상태나, 서버 환경을 확인해 보시기 바랍니다.
  • profile

    갈수록 복잡해지는군요. 이러다가 자의 반 타의 반으로 모듈도 만들고 하는 거죠. 화이팅입니다! ㅎㅎ

  • profile ?
    ㅎㅎㅎㅎ 맞습니다. 하지만 모듈은 아직도 먼 거 같네요 ㅠㅠ
  • profile
    그리고 이건 크게 필요는 없을듯 합니다만 라이믹스 루트 디렉토리에 .git 폴더가 있다면 동작하지 않는게 더 좋아보입니다.

    이미 git으로 업데이트 하고 있는 사람이 git이 아니라 파일 업로드 방식으로 변경하면 다시 git으로 업데이트하기가 곤란해지거든요.

    특히나 라이믹스 자체가 git 업데이트를 적극 권장하고 있다보니, 이왕이면 지금까지 파일 업데이트 해왔던 사람들만 유용하게 사용할 수 있도록 시스템적으로 막아두는게 어떨까 요청드려봅니다.

    +) 파일 업로드로 업데이트를 할 경우 .git 디렉토리가 생성되지 않습니다. 따라서 디렉토리 존재 여부만 체크해주셔도 대부분의 케이스에서 적용될듯 합니다.
  • profile
    upgrader.php 파일에서 라이믹스를 로딩하는거 같은데, 업데이트 도중에 클래스가 꼬여버릴 가능성도 있어서 아예 라이믹스 로딩을 하지 않는 방향으로 가는게 좋을 수도 있을것 같습니다.

    특히나 버전 체크 같은것도 php 파일을 불러오는게 아니라 텍스트 그대로 체크하시니 라이믹스를 로딩하지 않아도 무방해보이고요.

    그리고 업데이트가 오래걸리면 중간에 타임아웃으로 php 스크립트가 중지될 수도 있으니 set_time_limit 함수 사용하셔서 실행 시간을 대폭 늘려줄 필요도 있어보입니다.

    이런 프로그램이 예외처리가 중요해서 여러가지 생각해야할 부분이 많습니다 ㅜㅜ
  • profile ?
    예외처리할게 많다 보니 벌써부터 한숨만 나오네요 ㅠㅠ

    라이믹스를 로딩하는 이유는 관리자 권한을 가진 유저만 사용할 수 있도록 하기 위한 거고, 관리자 권한을 가진 유저 확인이 완료되면 이후엔 사용하지 않으니 크게 상관 없을거 같긴 한데... 모르겠네요.

    타임아웃은 vultr 10달러짜리 서버에서 실행해 봤을땐 3초 이내로 걸리는거 같아서 크게 문제될건 없을거 같지만, 혹시 모르니 실행 시간을 늘려주는것도 고려해 봐야겠네요. 3분이면 충분하겠죠?
  • ? profile
    VPS는 보통 큰 상관이 없지만, 호스팅 환경에서는 오래걸릴 가능성이 매우 많습니다..

    중간중간 업데이트 진행상황을 볼 수 있으면 도움이 될거 같지만, 스크립트 하나로 개발하기는 복잡할거 같고 3분정도 주시면 적당할것 같습니다
  • profile ?
    이해했습니다. 3분으로 설정하도록 하겠습니다. 또 윗 댓글로 .git 폴더가 있는지 여부를 확인하는 코드도 추가하도록 하겠습니다!
  • profile
    디렉터리에 쓰기 권한이 있는지 체크하는 로직이 필요할것 같습니다.

    일부만 쓰기에 실패할 경우 라이믹스가 정상적으로 동작하지 않을 가능성이 농후하기 때문이죠.

    is_writable 함수로 복사할 파일들의 권한을 일일히 확인할 수 있으면 좋을거 같아요.

    작성하신 재귀 복사 함수 응용해서 체크를 하면 될거 같은데, 중요한점은 업데이트 하기 전에 일괄적으로 검사를 하고나서 작업을 하는것이죠
  • profile ?
    코드 짜다보니 점점 커지네요 ㅎㅎ
    쓰기 권한이 있는 것을 기본 베이스로 깔고 코드를 짜니 여러 문제가 발생하네요. 수정해 보겠습니다!
  • profile
    관리자인지 아닌지를 채크할 수 잇어야 하지 않을까요?
  • profile ?
    그 생각을 못했네요. 저는 그냥 귀차니즘 해결용(?)으로 만들었는데, 좀 더 연구해 봐야겠네요. 그 전까지는 한번 사용하고 삭제하도록 안내를 해야겠네요.
  • ? profile
    네 ㅎㅎ 화이팅!!
  • profile ?
    관리자 권한을 가진 유저만 사용할 수 있게끔 수정했습니다!