将 Apache_Run_User 添加到 VirtualHost

将 Apache_Run_User 添加到 VirtualHost

目前,在 Ubuntu 14.04 服务器上,WordPress(和 Apache2)使用www-data:www-data所有者:组创建文件夹。目标是让 Apache 根据其所服务的网站创建具有不同所有者的文件。 wp_one:www-data在一个 WordPress 实例中,wp_two:www-data在第二个 WordPress 实例中。

如果只需要一个用户,则更改APACHE_RUN_USER/etc/apache2/envvars 中的值即可。但每个 WordPress 实例都需要不同的所有者。

逻辑位置似乎在每个站点的虚拟主机配置文件中。但我无法完全实现它。

在虚拟主机中添加 Apache 将尊重的所有者的语法是什么?

这不起作用:

<Directory /var/www/wpone>
    export APACHE_RUN_USER=wp_one
</Directory>

也不是这样:

<Directory /var/www/wpone>
     User: name="wp_one"
</Directory>

我想在一台服务器上运行多个 WP 实例,每个实例都有不同的所有者,彼此隔离。我的权限问题可以通过将所有者添加到 www-data 组来解决,但这样每个实例对服务器上的其他 WP 实例的访问权限就会过多。

答案1

你可以使用 apache2-mpm-itk

准备测试环境

# useradd -d /vhosts/wp1.example.net/ wp1
# mkdir -p /vhosts/wp1.example.net/public_html
# mkdir -p /vhosts/wp1.example.net/temp
# chmod 770 /vhosts/wp1.example.net/
# chown -R wp1:wp1 /vhosts/wp1.example.net/

创建测试虚拟主机

<VirtualHost *:80>
    ServerName wp1.example.net

    ServerAdmin webmaster@localhost
    DocumentRoot /vhosts/wp1.example.net/public_html

    php_admin_value upload_tmp_dir /vhosts/wp1.example.net/tmp/
    php_admin_value session.save_path /vhosts/wp1.example.net/tmp/

    AssignUserID wp1 wp1

    <Directory /vhosts/wp1.example.net/public_html>
        Options -Indexes
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

创建示例脚本

# cat test.php
<?php
    echo exec('id');

基本测试

# curl http://wp1.example.net/test.php
uid=1004(wp1) gid=1004(wp1) groups=1004(wp1)

相关内容