目前,在 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)