2013-07-13 4 views
1

두 번 버전의 사이트를 정말 빠르고 여러 번 교환해야합니다. 내 홈 디렉토리에서빠른 웹 사이트 변경을 위해 public_html 폴더 교환

, 나는이 :

drwxr-x--- 8 lorem nobody  4096 Jul 12 20:50 public_html/ 
drwxr-x--- 3 lorem nobody  4096 Jul 13 12:59 public_html_3.0/ 

public_htmlpublic_html_3.0는 새로운 웹 사이트를 보유하고, 현재 웹 사이트를 보유하고 있습니다.

나는 수행하여 둘을 대체 할 :

//move the complete current site to another tmp location 
mv public_html public_html_2.0 
//move the new site in place 
mv public_html_3.0 public_html 

테스트 계정에 시도 후, 나는 당신은이 서버에/액세스 권한이 없습니다 금지 얻을. 오류.

나는 public_html_ * 폴더에 동일한 사용 권한이 있는지 확인했지만 심볼릭 링크 문제일까요? 상상도 할 수없는 무언가를하려고 노력하고 있으며,별로 추천하지 않습니까?

CentOS 5.9에서 루트 권한이있는 VPS WHM/Cpanel 사용.

EDIT

일부 webreading 후, I는 public_html 제거한 (임시로 이동)하고 그 결과를 public_html -> public_html_3.0 SYM은 연계 : 아직도

lrwxrwxrwx 1 lorem nobody   15 Jul 13 14:11 public_html -> public_html_3.0/ 
drwxr-x--- 3 lorem nobody  4096 Jul 13 12:59 public_html_2.0/ 
drwxr-x--- 2 lorem nobody  4096 Jul 13 14:02 public_html_3.0/ 
lrwxrwxrwx 1 lorem lorem   11 Jul 9 2012 www -> public_html/ 

동일한 결과.

답변

1

위에서 언급 한 것처럼 public_html을 이동하는 것은 큰 문제는 아닙니다.

MV으로 public_html public_html_2.0 MV public_html_3.0으로 public_html

당신은 당신이 실제로 무엇을하고 있는지 알고있는 경우 이러한 무해 명령입니다.

두 디렉토리의 권한이 모두 750인지 확인하십시오.

chmod를 750으로 public_html *

그리고 반드시 두 디렉토리 내부의 파일이 발생하는 것을 올바른 사용 권한을 확인하십시오.

find/home/user/public_html/-type f -exec chmod -R 644 {} \; find /home/user/public_html_3.0/ -type f -exec chmod -R 644 {} \;

find/home/user/public_html/-type d -exec chmod -R 755 {} \; find /home/user/public_html_3.0/ -type d -exec chmod -R 755 {} \;

또한 소유권도 올바른지 확인하십시오./ 가정/사용자/public_html을/* 대한 Chown -R의가 lorem : 경우

/home/user/public_html_3.0/* 당신이 사용하는 경우 그 재귀

대한 Chown -R lorem에

변경 suphp 처리기를 사용하면 lorem : nobody도 사용할 수 있습니다. 그게 도움이되는지 알려주세요.

+0

고맙습니다. learn => trial => 오류주기에서 몇 시간을 보냈으며 혼자서 비슷한 워크 플로를 만들었습니다. 아래에서 내 솔루션을 게시 할 예정이지만, 현재 진행중인 작업에 대한 심층적 인 견해가 있습니다. –

+0

당신은 반갑습니다. :) –

1

오류가 발생했습니다. 사용 금지 (금지됨이 서버에서 액세스 할 수있는 권한이 없습니다.)은 파일 시스템 문제가 아닌 잘못된 사이트의 루트 폴더입니다. 새로운 사이트는 실제로 ~/public_html_3.0/public_html/에 위치했는데, 내가 잘못 풀었 기 때문입니다. 필자가 삽입 한 새로운 sym-link 인 public_html => public_html_3.0은 이제 색인 파일이없는 폴더를 가리키고 있으므로 오류가 발생합니다.


대체 솔루션

레오 왕자의 대답은 잘하지만, 나는 또한 나를 위해 일한 단일 명령 스위치와 대체 솔루션을 제공합니다 (자신처럼 newbs에 대해 설명한) :

이 솔루션은 서버 또는이 특정 VirtualHost에 대해 FollowSymlinks를 사용하도록 설정하고 가상 호스트가/home/user/public_html (~/public_html)을 가리키고 있다고 가정합니다. 권한/소유권 지침에 대한 답변을 확인하십시오.

은의이 이전 사이트~/public_html에 당신의 새로운 사이트~/app2에 있다고 가정 해 봅시다.

-public_html 
    -index.html 
    -other.html 
-app2 
    -index.html 
    -other_new.html 

우선, 새로운 디렉토리로 이전 사이트를 복사

# mkdir app1 
# cp -a public_html/. app1/. 
// -a option copies recursively with permissions/owners/groups 
// but doesn't follow symbolic links 

그리고 기존의 응용 프로그램에 public_html을에서 심볼릭 링크를 생성 한 후 이동 (이름 바꾸기)를 public_html이를 임시 디렉토리 및 .

# mv public_html public_html_bak 
// moves the public_html "out of way" 
# ln -s app1 public_html 
// creates a symbolic-link 
# ls -l 
drwxr-x--- user nobody app1/ 
drwxr-x--- user nobody app2/ 
lrwxr-x--- user nobody public_html -> app1/ 
drwxr-x--- user nobody public_html_bak/ 

이렇게하면 ~/public_html POINT가 ~/app1이됩니다. Read more on symbolic links. 서버는 public_html을 보지만, app1의 파일입니다. 그것이 작동하는 경우

# rm public_html 
//// use rm, NOT rmdir, since it's a symlink, not a dir 
# mv public_html_bak public_html 
// return backup to previous location 

, 당신은 새로운 사이트 (APP2)로 전환하려는 순간, 당신은에 심볼릭 링크를 변경해야 작동하지 않는 경우

, 다시 이전 상태로 이동 APP2 디렉토리에 지점이 있지만

# rm public_html; ln -s app2 public_html 
// remove existing link, create new link with a single line (instant change) 
# ls -l 
drwxr-x--- user nobody app1/ 
drwxr-x--- user nobody app2/ 
lrwxr-x--- user nobody public_html -> app2/ 
drwxr-x--- user nobody public_html_bak/ 

는 내가 달성하기 위해 노력하고있어입니다 응용 프로그램 버전을 새로 검토있게, 약 연속으로 이름을 바꿉니다 두 개의 폴더를하고있는 것과 같습니다

# ls -l 
drwxr-x--- user nobody app2.3/ 
drwxr-x--- user nobody app3.0/ 
drwxr-x--- user nobody app3.1/ 
drwxr-x--- user nobody app3.2b/ 
lrwxr-x--- user nobody public_html -> app3.0/ <- the current active version 

# rm public_html; ln -s app3.1 public_html 
/// a one-line switch to a different app version 
/// first remove the symbolic link; then create new 

물론 위의 허용 된 답변에 설명 된대로 모든 앱 디렉토리에는 적절한 권한이 있어야하며 디렉토리의 owner : 그룹은 원래 public_html과 동일해야합니다. 또한 심볼릭 링크는 서버 구성이 동일한 사용자의 심볼릭 링크 만 허용하는 경우 동일한 사용 권한을 가진 동일한 사용자 : 그룹에 속해야합니다.

심볼릭 링크를 제거하려면 rmdir이 아니라 rm을 사용해야합니다. 실제 디렉토리를 제거하려고하면 오류가 발생하므로주의해야합니다.

나는 아직 * NIX를 배우고 있으므로이 솔루션에 대한 약간의 문제가있을 수 있습니다. 그러나 자주 버전을 변경하면 마법처럼 작동합니다.

+0

잘 설명 Vanja. 하나의 편집이 유용 할 수 있습니다. "cp -r public_html/app1 /"대신 "cp -a public_html/app1 /"을 사용하십시오. -a 옵션은 -r (재귀 적) 및 -p (권한 및 소유권 유지) 작업을하기 때문에 –

+0

좋은 지적, 다시 한번 감사드립니다! –