Yii 응용 프로그램의 경우 자산 및 보호 된/런타임 폴더는 특별합니다. 첫째, 두 폴더는 서버 (httpd) 프로세스에 의해 존재하고 쓰기 가능해야합니다. 둘째,이 두 폴더는 임시 파일을 포함하므로 git에서 무시해야합니다. 이러한 임시 파일이 커밋 된 경우 일반 서버 (Openshift 서버가 아님)에 배포하면 병합 충돌이 발생할 수 있습니다. 나는 $ OPENSHIFT_DATA_DIR에서 두 폴더를 생성하고 응용 프로그램의 폴더 둘 다에 대한 기호 링크를 작성, 쉘 스크립트가 openshift에 의해 호출에 추가 내 배포에서
php/assets/
php/protected/runtime/
: 그래서 .gitignore이 두 폴더를 넣어 .
#!/bin/bash
if [ ! -d $OPENSHIFT_DATA_DIR/runtime ]; then
mkdir $OPENSHIFT_DATA_DIR/runtime
fi
# remove symlink if already exists, fix problem when with gears > 1 and nodes > 1
rm $OPENSHIFT_REPO_DIR/php/protected/runtime
ln -sf $OPENSHIFT_DATA_DIR/runtime $OPENSHIFT_REPO_DIR/php/protected/runtime
if [ ! -d $OPENSHIFT_DATA_DIR/assets ]; then
mkdir $OPENSHIFT_DATA_DIR/assets
fi
rm $OPENSHIFT_REPO_DIR/php/assets
ln -sf $OPENSHIFT_DATA_DIR/assets $OPENSHIFT_REPO_DIR/php/assets
쉘 스크립트가 openshift 배포 후 각 기어에서 만든 임시 폴더를 보장 : 이것은 내가 here에서 적응 쉘 스크립트 (.openshift/action_hooks/배포)의 내용이다. 기본적으로 새 디렉토리의 권한은 u + rwx이며, 기어가 아파치 또는 다른 것이 아닌 장비 사용자로서 httpd를 실행하기 때문에 httpd 프로세스가 쓰기 가능해진다.