2011-09-04 5 views
1

기본적으로 서버에서 사이트를 호스팅하여 PHP를 실행할 수 있지만 GitHub에서 호스팅되는 실제 코드를 사용할 수 있는지 궁금합니다. 즉 ...라우팅 .htaccess to GitHub

HTTP 요청은 갔다 경우
http://mysite.com/docs.html

이 요청을 거라고하고 (file_get_contents() 또는 무언가를 통해) 콘텐츠 당기 :
https://raw.github.com/OscarGodson/Core.js/master/docs.html

또는 경우 그들이에 갔다 :
http://mysite.com/somedir/another/core.js

이 풀다운 것 : https://raw.github.com/OscarGodson/Core.js/master/somedir/another/core.js

나는 GitHub가 자신의 DNS 서버를 가지고 있음을 알고 있지만 ID는 오히려 서버 측 코드를 실행할 수 있도록 호스트하고있다. 이 htaccess 코드는 어떻게 생겼을까요?

+1

이렇게하면 어떤 이점이 있습니까? 왜 서버에 git 저장소를 복제하지 않는 것이 좋을까요? – arnaud576875

+0

거기에 PHP 스크립트가 있습니까? 나는 FTP를 다루는 것을 싫어하기 때문에 묻고있다. SSH 액세스가없는 공유 서버에있는 클라이언트 사이트는 거의 전적으로 클라이언트이기 때문이다. 그래서 나는이 재사용 가능한 htaccess 파일을 업로드하고 오른쪽 repo를 가리킨 다음 Git을 통해 변경을 할 수 있다고 생각했습니다. –

답변

4

yourserver.com의 서버에서 github.com에 저장된 HTML에 포함 된 PHP를 .htaccess의 리디렉션과 같은 구성 줄로 간단히 실행하려면이 기능이 .htaccess 파일의 기능을 뛰어 넘습니다 파일.

.htaccess 파일은 일반적으로 Apache 웹 서버에 지시문을 제공하는 데 사용됩니다. 이러한 지시문은 예를 들어 액세스 권한, 팝업 암호 보호, URL과 서버 파일 시스템 간의 연결, 브라우저로 전달되기 전에 서버에서 가져온 특정 파일 유형의 핸들러 및 한 URL에서 다른 URL 로의 리디렉션을 나타낼 수 있습니다.

.htaccess 파일은 http://mysite.com/somedir/another/core.js에서 https://raw.github.com ....로 리디렉션 할 수 있지만 브라우저는 mysite.com이 아니라 raw.github.com을 가리 킵니다. 트릭은 브라우저에서이 방향 전환을 사람이 덜 투명하게 만들 수 있도록 프레임을 사용하여 수행 할 수 있습니다. 그러나 이러한 정보는 mysite.com의 서버에 갈 필요없이 github.com의 데이터에 영향을 미치지 않습니다.

특히 github.com의 HTML에 삽입 된 PHP 태그는 mysite.com의 서버에서 수신되지 않으므로 실행되지 않습니다. 아마 네가 원하는 걸 원하지 않을거야. 아파치에서 큰 변화가 일어나지 않는다면, .htaccess 파일은 그 워크 플로우를 설정하지 않을 것입니다. 일부 전문가는 아파치 모듈을 작성하는 것이 가능할지 모르지만 잘 모르겠습니다.

gite pull이 github.com에서 몇 분 간격으로 수행되는 mysite.com에 cron 작업을 넣을 수 있습니다. 아마도 그것은 당신이 대신하고 싶은 것입니까?

+0

Awh, 정말 고마워. 흠, 예 ... 다른 사이트에서 변경을 기다리는 크론 작업을 설정하는 방법이 있습니까? 그래서, 내가 다른 서버에서 변경하려면 한 시간 정도 기다려야 할 필요가 없다. 저는 JavaScript 사용자입니다. n00b와 같은 질문에 대해서는 유감입니다. 나는 JS로 이것을 모두하는 방법을 안다. 그렇지만 그것은 색인이 가능하지 않지만 검색 엔진은 아니다. \ –

+0

아니, 그냥 cron 작업을 더 자주 실행한다. 매 5 분마다 또는 매 2 분마다. 공유 호스팅을 사용하는 경우 제한이있을 수 있습니다. – Paul

+0

힘내 미끼는 서버 훅 기능을 가지고 있는데, 여기서 git push가 실행될 때 실행되는 셸 스크립트를 작성할 수 있습니다. 이것은 자신의 서버에서 git을 설정 한 다음 워크 스테이션에서 "git push"를 사용하여 밀어 넣을 때 유용합니다. – Paul

1

서버가 PHP 코드를 실행할 수 있다면 일 수 있습니다.

기본적으로 .htaccess 파일에서 RewriteRule을 사용하여 서버의 PHP 스크립트에 대한 모든 경로를 보냅니다. 예를 들어, /somedir/anotherdir/core.js에 대한 요청은 /my-script.php/somedir/anotherdir/core.js이됩니다. 이것은 많은 앱 프레임 워크가 작동하는 방식입니다. my-script.php가 실행될 때 "실제"경로는 PATH_INFO 변수에 있습니다.

그런 다음 스크립트는 GitHub에서 파일을 가져올 수 있습니다. HTML 또는 JavaScript 또는 이미지라면 클라이언트에 전달할 수 있습니다. (제대로 처리하려면 ETag와 Last-Modified와 같은 모든 올바른 헤더를 전달한 다음 해당 파일을 검사하여 캐싱이 제대로 작동하고 많은 시간을 소비하지 않아야합니다. 몇 번이고 전송할 필요가없는 파일을 전송할 수 있습니다. 그렇지 않으면 사이트가 정말로 느려집니다.)

파일이 PHP 파일이면 로컬로 다운로드 한 다음 include을 스크립트에 다운로드하여 실행할 수 있습니다. 그러나이 경우 GitHub에서 어떤 파일을 가져 왔는지 모르기 때문에 모든 PHP 파일이 자체 포함되어 있는지 확인해야합니다. 따라서 하나의 파일에 다른 파일이 포함되어있는 경우 해당 파일이 첫 번째 파일도 다운로드됩니다. 그리고 그 파일들에 의존하는 파일들.

간단히 말해서 .htaccess 부분은 정말 간단합니다. 단 하나의 RewriteRule입니다. 복잡성은 GitHub에서 파일을 가져 오는 PHP 스크립트에 있습니다. 가능한 가장 단순한 작업을 수행하면 사이트가 작동하지 않거나 작동하지만 은 정말 고통스럽게 천천히입니다. 그리고 그 스크립트에서 천재적인 수준의 작업을한다면, 제대로 작동 할 수 있습니다.

이제 목표는 무엇입니까? 서버에 로그인하고 git pull을 입력하여 서버 파일을 업데이트하는 번거 로움을 덜어 주시겠습니까? GitHub에서 파일을 가져 오려고하면 이 더 이상 문제가 될 것이라고 확신합니다. 이상입니다.

+0

아니요, 일반적으로 공유 호스팅에 있기 때문에 클라이언트의 대부분의 사이트에 SSH 액세스가 없습니다. 나는 100s의 FTP 사용자/패스 중 하나를 기억하고 싶지 않으며 Git을 사용하고 GitHub로 푸시 한 다음 파일을 복사하여 서버에 붙여 넣는 것을 싫어합니다. 차라리 PHP 스크립트를 업로드하고 var를 "x"repo로 설정하면 업데이트/변경을 요청할 때마다 GitHub에 푸시 할 수 있습니다. –

+0

Awh, 위에서 볼 수 있습니다 ... 감사합니다. 아프다. –

+0

FTP를 반드시 사용해야한다면, 어딘가에 깨끗한 git 체크 아웃을 유지해야하며 배포가 필요하면'git pull '을 실행 한 다음 FTP를 통해 로컬 디렉토리를 서버에 동기화 할 응용 프로그램을 사용하십시오 (' .git' 디렉토리). 가능한 경우 SSH를 지원하고 안정적이고 저렴한 NearlyFreeSpeech.NET과 같은 공유 호스트로 전환하도록 클라이언트를 유도하십시오. SSH가 있으면 git push 또는 rsync 또는 수십 가지의 다른 유용한 도구를 사용할 수 있습니다. – benzado