繁体   English   中英

我无法缓存:清除,因为www数据使用了var / cache / dev / profiler

[英]i can't cache:clear because var/cache/dev/profiler is used by www-data

我正在使用debian9和apache2作为HTTP服务器的VPS上运行我的项目,并且我创建了一个脚本外壳以从git中获取并使用composer提取并安装组件,并执行他应该做的事情以及当我转到该行时

$ php bin/console cache:clear

我收到错误消息,因为文件夹var / cache / dev / profiler由www-data拥有,并且脚本是由另一个用户执行的。

当我以root用户执行脚本时,它可以正常工作,并且收到警告,我不应该以root用户执行作曲家,我应该在脚本的末尾添加此行以进行正确的访问

# chown -R user:www-data *
#! /bin/sh
set -e

LOGFILE="$(pwd)/updateServer.log"

git fetch
UPSTREAM=${1:-'@{u}'}
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")

if [ $LOCAL = $REMOTE ]; then
    exit
elif [ $LOCAL = $BASE ]; then
    echo "$(date -d today --rfc-3339=ns) updating" > $LOGFILE
fi

echo "$(date -d today --rfc-3339=ns) update HEAD to $REMOTE" >> $LOGFILE
git reset --hard
git pull
echo "$(date -d today --rfc-3339=ns) DONE" >> $LOGFILE

echo "$(date -d today --rfc-3339=ns) Updating Symfony" >> $LOGFILE
composer install
echo "$(date -d today --rfc-3339=ns) done" >> $LOGFILE

pass=$(date +%s|sha256sum|base64|head -c 32);

echo "$(date -d today --rfccd -3339=ns) removing JWT keys" >> $LOGFILE
rm ./app/config/jwt.yml
rm ./app/config/jwt/private.pem
rm ./app/config/jwt/public.pem
echo "$(date -d today --rfccd -3339=ns) DONE" >> $LOGFILE

openssl genrsa -out app/config/jwt/private.pem -aes256 -passout pass:$pass 4096
openssl rsa -pubout -in app/config/jwt/private.pem -out app/config/jwt/public.pem -passin pass:$pass
chmod g+r ./app/config/jwt/private.pem
echo "$(date -d today --rfc-3339=ns) new JWT keys created" >> $LOGFILE

echo "lexik_jwt_authentication:
    secret_key:       '%kernel.project_dir%/app/config/jwt/private.pem'
    public_key:       '%kernel.project_dir%/app/config/jwt/public.pem'
    pass_phrase:      '$pass'
    token_ttl:        86400
" > ./app/config/jwt.yml

echo "$(date -d today --rfc-3339=ns) update jwt.yml" >> $LOGFILE

echo "$(date -d today --rfc-3339=ns) update doctrine" >> $LOGFILE
php bin/console doctrine:schema:update --force >> $LOGFILE
chown -R user:www-data * >> $LOGFILE
echo "$(date -d today --rfc-3339=ns) fix permissions" >> $LOGFILE
php bin/console cache:clear >> $LOGFILE
chmod -R 775 var
echo "$(date -d today --rfc-3339=ns) clear cache" >> $LOGFILE
chown -R user:www-data *
echo "====================================================" >> $LOGFILE

我想使用cron每分钟执行一次此脚本,以便在我推送到master分支时自动更新,因此我应该以root身份执行它,还是可以做一些事情使我能够与用户一起执行它而不会出现问题。

您根本不需要以root用户身份运行crontab。 确保“用户”属于www-data组,并为该用户创建cron作业:

sudo crontab -e -u user

或者如果您以“用户”身份登录

crontab -e 

这样,您可以避免在脚本中设置所有者(chown),在此之前,请记住更正先前由root用户创建的文件和文件夹的所有权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM