오류가 발생했습니다. 사용 금지 (금지됨이 서버에서 액세스 할 수있는 권한이 없습니다.)은 파일 시스템 문제가 아닌 잘못된 사이트의 루트 폴더입니다. 새로운 사이트는 실제로 ~/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를 배우고 있으므로이 솔루션에 대한 약간의 문제가있을 수 있습니다. 그러나 자주 버전을 변경하면 마법처럼 작동합니다.
고맙습니다. learn => trial => 오류주기에서 몇 시간을 보냈으며 혼자서 비슷한 워크 플로를 만들었습니다. 아래에서 내 솔루션을 게시 할 예정이지만, 현재 진행중인 작업에 대한 심층적 인 견해가 있습니다. –
당신은 반갑습니다. :) –