Jie*_*viz 7 linux php redhat httpd apache-2.2
目前,top向我展示了几乎所有httpd进程都由nobody. “几乎”,因为其中 2 个由root.
如果我有用户说:dartagnan, porthos, aramis,athos作为上述用户分别运行 httpd ,我如何才能做到这一点?
我希望在我跑步时看到这样的事情top:
PID 用户命令 第1234回 12 端口 /usr/local/apache/bin/httpd -k start -DSSL 342 aramis /usr/local/apache/bin/httpd -k 开始 -DSSL 214 athos /usr/local/apache/bin/httpd -k start -DSSL
============>这是我目前有什么我DONT喜欢看:
PID 用户命令 第1234回 12 没有人 /usr/local/apache/bin/httpd -k 开始 -DSSL 第342话 第214回 244 root /usr/local/apache/bin/httpd -k start -DSSL 334 root /usr/local/apache/bin/httpd -k start -DSSL
以不同的用户|组运行 httpd 的方法是更改httpd.conf 文件中的用户或组指令。
User apache
Group apache
Run Code Online (Sandbox Code Playgroud)
这虽然只会改变nobody你上面的输出apache,我猜这不是你想要的。
要让 httpd 以特定用户身份运行,您必须为每个用户创建和管理一个配置文件。配置文件应该适当地指定用户和组以及 httpd 进程应该通过监听指令绑定到的端口。请记住,只有特权用户才能绑定到 <1024 的端口。然后你可以像这样启动它
apachectl -f /path/to/aramis.conf -k start -DSSL
Run Code Online (Sandbox Code Playgroud)
请注意其他 httpd 指令,例如 VirtualHost 可能也需要根据每个用户进行更改。
此外,还涉及 EL 变体(RHEL、CentOS Scientific Linux 等)SELinux。您必须将每个实例将绑定到的端口添加到http_port_t组中,例如
semanage port -a -t http_port_t -p tcp 8888
Run Code Online (Sandbox Code Playgroud)
这将允许 httpd 实例绑定到端口 8888。
如果用户将使用他们的主目录来提供文件,那么您必须使用 httpd_enable_homedires SELinux 布尔值来允许它
setsebool -P httpd_enable_homedirs on
Run Code Online (Sandbox Code Playgroud)
以上应该允许您配置每个用户的 httpd 实例,但是每个用户必须记住要使用哪个端口添加到他们的 URL,例如上面的 aramis
http://example.com:8888
Run Code Online (Sandbox Code Playgroud)
这一切都非常混乱。为了帮助您的用户,您应该将主 httpd 配置为像往常一样侦听端口 80,并充当每个用户实例的反向代理。然后当aramis连接到例如
http://aramis.example.com
Run Code Online (Sandbox Code Playgroud)
主服务器代理的 it aramis 实例。
您将不得不适当地配置 DNS 和其他可能的东西。