1

我想管理一个 Claroline 网站(基于 Symfony 2)。所以对于我的网站 mysymfony.com 为用户“theclient”安装

1 - 0 我将客户端添加到 www-data 组: adduser theclient www-data

1 - 1 - 修改 /etc/hosts :

127.0.0.1   mysymfony.com

1 - 2 - 创建虚拟主机 /etc/apache2/sites-available/mysymfony.com :

<VirtualHost *:80> 
        ServerName mysymfony.com 
        DocumentRoot /var/www/mysymfony.com 
        <Directory /var/www/mysymfony.com/> 
                Options -Indexes 
                AllowOverride all 
                Order allow,deny 
                allow from all 
        </Directory> 
        ErrorLog ${APACHE_LOG_DIR}/error.log 
</VirtualHost> 

1 – 3 - 激活:a2ensite mysymfony.com

1 – 4 - 重新加载服务器:service apache2 reload

1 - 5 - 链接到 var/www :

ln -s /home/theclient/www/mysymfony.com/ /var/www/mysymfony.com 

然后作为根我:

1 – 6 - 更改所有权:chown -hR theclient:www-data /home/theclient/www/mysymfony.com

1 – 7 - 更改权限:chmod -R 755 /home/theclient/www/mysymfony.com 以及可以写入的目录和文件:

chmod 775 app/cache/ app/logs/ app/config/ files/ templates/ vendor/ web/
chmod -R 775 app/cache/ app/logs/ vendor/ web/ 
chmod 775 composer.json composer.lock app/config/bundles.ini app/config/parameters.yml app/config/platform_options.yml

使用此配置,我可以正确安装网站(使用基于 webinstaller 或控制台的)。

如果我以 root 身份安装插件,插件目录、其内容、所有 Symfony 配置文件和缓存文件都是 root:root => 我需要重做一个:chown -hR theclient:www-data /home/theclient/www/mysymfony.com 上传的文件属于 www-data:www-data (这是预期的,但对于来自用户 theclient 的脚本不实用。刷新缓存时会发生相同的文件/目录所有权“问题”(以 root 身份)

所以这不是一个错误,但如果我希望能够每天管理这个站点(开发/尝试/安装插件,刷新缓存,升级......)

所以我的问题是你能提供一种“精确”的方式来设置这种网站(权利/所有权、管理......)吗?

除了初始设置之外,是否应该在那里使用“chown”和“chmod”?谢谢

4

3 回答 3

1

官方文档中概述了解决此问题的 4 种精确方法:http://symfony.com/doc/current/book/installation.html#running-the-symfony-application 只需向下滚动到“设置权限” :)

于 2015-01-28T15:23:35.060 回答
0

好的,我现在看到你的问题了。这是您的网络服务器设置。

您没有将 symfony 作为客户端运行(如果您将它与 web 服务器 php 一起使用,而不是 php-cli),但您作为用户 www-data 运行它。我假设您使用 apache 和 mod_php?这通常是一个坏主意。有两种解决方案:

  1. 保持你当前的设置,但是你必须运行 php-cli(composer 和 symfony 命令)作为 www-data 并且很多文件将由 www-data:www-data 拥有,但这没问题,因为你的客户端位于 www-data 组中,可以读取和写入这些文件。但这不是一个好的做法(您必须依赖 openbase_dir 或者您的客户端可以读取您所有的 www-data 文件)。
  2. 更改您的 webstack 以使用 apache + mod_proxy_fcgi + php-fpm 然后您可以以正确的用户身份运行 php 并且您的所有问题(以及更多 mod_php)都消失了。有很好的教程如何安装 php-fpm:https ://wiki.apache.org/httpd/PHP-FPM
于 2015-01-30T12:31:51.997 回答
0

你是在自问自答:

如果我以 root 身份安装插件,插件目录、其内容、所有 Symfony 配置文件和缓存文件都是 root:root

不要以 root 身份运行 composer 或 symfony 脚本!你为什么要?以客户端用户身份运行它。

如果您有 sudo,您可以使用以下命令作为“客户端”打开一个 shell:

sudo -s -u theclient
于 2015-01-28T17:27:55.420 回答