Грешка в разрешението за Rails Cache

Имам приложение Rails (магазин Spree Commerce), работещо на Digital Ocean и внедрено чрез Cloud 66.

Бих искал да направя SSH в моя сървър, да стартирам rails конзола и да коригирам някои конфигурационни настройки на Spree. Когато се опитам да направя това, получавам грешка в разрешенията:

Errno::EACCES: Разрешението е отказано @ dir_s_mkdir - /var/deploy/my-app/web_head/releases/20150220220517/tmp/cache/29B

Според страницата за предпочитания на ръководството за разработчици на Spree, това е така, защото предпочитанията се кешират в паметта за подобряване на производителността. Проблемът (мисля) е, че моят потребител няма достъп за запис в директорията tmp/cache и моят потребител е този, който изпълнява rails конзолата.

Ако ls -l в директорията $STACK_PATH/tmp/cache, получавам следното:

> lrwxrwxrwx 1 nginx nginx 43 Feb 20 22:05
> tmp/cache ->
> /var/deploy/my-app/web_head/shared/cache

Предполагам, че трябва да дам на моя потребител достъп за писане в директорията, както има потребителят на nginx. Опитах се да се добавя към потребителската група на nginx, но това изглежда нямаше ефект. Какво мога да направя, за да предотвратя тази грешка в разрешенията?


person michaelmichael    schedule 21.02.2015    source източник
comment
какъв е резултатът от ls -l /var/deploy/my-app/web_head/releases/20150220220517/tmp/cache?   -  person sites    schedule 21.02.2015
comment
lrwxrwxrwx 1 nginx nginx. $STACK_PATH е променлива, която препраща към /var/deploy/my-app/web_head/current, което от своя страна препраща към най-новата /releases директория.   -  person michaelmichael    schedule 21.02.2015
comment
може би това unix.stackexchange.com/a/1315, това, което потърсих в Google беше 'разрешения по подразбиране linux'   -  person sites    schedule 21.02.2015


Отговори (1)


Добре, разбрах го въз основа на този въпрос и отговор на Форум за поддръжка на Cloud 66.

Промених собственика на групата на папката на кеша на app_writers, група, от която моят потребител е част. Начинът на Cloud 66 да направите това е с кука за разгръщане. Ето yml файла, който работи за мен:

production:
    after_rails:
        command: chown nginx:app_writers /var/deploy/my-app/web_head/current/tmp/cache && chmod -R 775 /var/deploy/my-app/web_head/current/tmp/cache
        target: rails
        run_on: all_servers
        sudo: true
person michaelmichael    schedule 22.02.2015
comment
Това е вярно! Само забележка, че на Rails 4.2 пътят е .../current/cache вместо .../current/tmp/cache. Не съм сигурен кога това се е променило и дали е Rails 4+ или Cloud66. - person Joshua Pinter; 20.08.2019