我已经基于Symfony3.4开发了一个webapp。在生产中,它通过部署器(deployer.org)部署在Ubuntu 18.04服务器上。 到目前为止一切正常。该Webapp由/ www / data组的用户在/ opt / app / prod中部署。
我的webapp允许上传文件。为此,我添加了存储已上传文件的文件夹数据。
为了在另一个发行版之后继续访问文件,我将数据文件夹添加到共享文件夹列表中。
我的deploy.php如下所示:
set('bin_dir', 'bin');
// Symfony console bin
set('bin/console', function () {
return sprintf('{{release_path}}/%s/console', trim(get('bin_dir'), '/'));
});
// Project name
set('application', 'appname');
set('http_user', 'www-data');
set('writable_mode', 'acl');
// Project repository
set('repository', '<MY_GITREPO>');
// [Optional] Allocate tty for git clone. Default value is false.
set('git_tty', true);
// Shared files/dirs between deploys
add('shared_files', []);
add('shared_dirs', ['data']);
// Writable dirs by web server
add('writable_dirs', ['{{release_path}}','data']);
// Hosts
host('prod')
->hostname('<MY_HOST>')
->user('<MY_USER>')
->stage('prod')
->set('deploy_path', '/opt/app/prod/<MY_APPNAME>');
这将导致以下文件夹结构:
.
├── current -> releases/5
├── releases
│ ├── 2
│ ├── 3
│ ├── 4
│ └── 5
└── shared
├── app
└── data
到目前为止,一切都很好-除了一个例外: 部署者希望设置不允许的数据文件夹,因为数据中的文件属于www-data:www-data,部署者尝试将其更改为。
The command "export SYMFONY_ENV='prod'; cd /opt/app/prod/<MY_APPNAME>/releases/5 && (setfacl -RL -m u:"www-data":rwX -m u:`whoami`:rwX /opt/app/prod/<MY_APPNAME>/releases/5)" failed.
setfacl: /opt/app/prod/<MY_APPNAME>/releases/5/data/child/679/ba7f9641061879554e5cafbd6a3a557b.jpeg: Operation not permitted
我的印象是我在deployer.php中犯了一个错误,或者错过了一些东西。 有人知道我需要做什么才能使我的部署正常运行吗?
感谢和问候