我认为对于开发机器来说,以当前用户身份运行 Apache 更方便,可以简化权限问题?我该怎么做?我认为是 suexec,但是如何在 Ubuntu+Apache 中配置它?
答案1
以 root 身份编辑以下文件:/etc/apache2/envvars
使用以下命令:
sudo nano /etc/apache2/envvars
如果只有一个用户,则将用户和组更改为您自己,这样您就永远不会再遇到权限问题。
即,如果您仅以用户“big_dog”身份登录并运行服务器:
export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog
哎呀,我确信你可以以某种方式将该用户更改为当前用户。然后,安装 user_dir,这样你就拥有了只有你才能完全控制的网站(除非你修改它)。
重新启动服务器(如果不确定,只需重新启动或谷歌搜索)就可以了。
答案2
我自己会将用户添加到www-data
组中...
sudo adduser {username} www-data
简单有效。无需处理配置文件或权限。
答案3
您可以使用mpm_itk_module
模块来完成此操作。
在 Ubuntu 20.04 上安装:
sudo apt install libapache2-mpm-itk
为主文件夹中的站点创建虚拟主机
<VirtualHost codealfa:*>
ServerName codealfa
ServerAlias codealfa
DocumentRoot "/home/codealfa/www"
<IfModule mpm_itk_module>
AssignUserId codealfa codealfa
</IfModule>
<Directory /home/codealfa/www>
Options Indexes FollowSymLinks Includes ExecCGI
DirectoryIndex index.html index.php
Order deny,allow
Allow from all
Require all granted
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
将您的域名(在本例中我使用用户名作为域名)添加到 /etc/hosts
127.0.0.1 codealfa
重启 Apache
sudo systemctl restart apache2
将所有网站安装在 下的子文件夹下/home/codealfa/www
,然后从 在您的浏览器中访问它们http://codealfa/
。例如,在 安装一个网站/home/codealfa/www/site1
,然后您可以在 的浏览器中查看它http://codealfa/site1/
。
答案4
如果有人尝试在 Docker 容器上实现这一点,这对我来说是有效的。
创建您自己的用户(非root用户因此id为1000)并授予权限:
ENV MY_USER myUserName
RUN useradd -M -u 1000 $MY_USER \
&& chown -R $MY_USER:$MY_USER /var/run/apache2 \
&& chown -R $MY_USER:$MY_USER /var/log \
&& chown -R $MY_USER:$MY_USER /etc/apache2 \
&& chown -R myuser:myuser /var/lib/apache2
USER $MY_USER
CMD apache2ctl -D FOREGROUND
注意:仅安装完所需的所有 apache 模块后才添加此行。