맥락: 저는 개발자와 기술자가 직장에서 사용할 수 있는 개발 및 테스트 환경을 설정하기 위해 Apache 2.4, PHP 7.2 및 기타 여러 가지가 포함된 Debian 또는 Ubuntu 서버를 사용하고 있습니다.
나는 ~을 따랐다대량 가상 호스트에 대한 튜토리얼mod_vhost_alias
다음과 같은 것을 얻을 수 있도록 사용합니다 .
path: /var/www/{projectname}/public
url: {projectname}.dev.mycompany.net
관련 구성은 다음과 같습니다(적절하게 편집했습니다)
VirtualDocumentRoot /var/www/%-4/public
ServerName dev.mycompany.net
ServerAlias *.dev.mycompany.net
UseCanonicalName Off
이제 이 모든 것이 올바르게 작동하며 개발자는 사용자에게 요청하여 자신의 프로젝트를 쉽게 시작할 수 있습니다. 사용자가 생성되어 www-data
그룹에 추가된 다음 /var/www에 다음과 같은 구조로 적절한 폴더가 생성됩니다.
projectname:projectname rwxrwxr-x /var/www/projectname
www-data:www-data rwxrwsr-x /var/www/projectname/public
setfacl -m user:www-data:rwx /var/www/projectname
setfacl -R -m user:projectname:rwx /var/www/projectname/public
(예를 들어 설치된 프레임워크 또는 압축 해제 프로그램에 의해 생성된 파일이 실제로 웹 서버에서 처리될 수 있도록 후자가 필요했습니다.)
물론 이것은 어떤 프로젝트라도 다른 프로젝트에 내용을 쓸 수 있다는 단점이 있으므로 저는 그 작업을 하고 싶습니다. 그러나 나는 가능하다면,유지하다자동화는 개발자와 기술자가 이 문제에 대해 백엔드에서 가능한 최소한의 입력으로 프로젝트를 시작할 수 있어야 하기 때문입니다("산만해지는 백엔드는 나중을 위한 것입니다"라고 상사는 말했습니다).
이제 보안을 유지하면서 단순함을 유지하기 위해 적절한 사용자가 각 가상 호스트에 해당하는 웹 서버/PHP 프로세스를 실행하도록 Apache(또는 PHP?)를 설정하는 것이 좋습니다. 이는 예를 들어 프로젝트가 /var/www/foo1
사용자로 실행되고 foo1
아래의 파일에 액세스할 수 없음을 의미합니다 /var/www/foo2
. 물론 이에 맞춰 권한과 ACL을 조정할 것으로 기대합니다.
하지만 별도의 사용자를 설정하는 방법에 대한 문서를 찾을 수 없습니다.주변에 머물다대량 가상 호스트 자동화. 나는 이것이 존재해야 한다고 생각합니다. 호스팅 회사는 결국 이와 같은 일을 할 것입니다. 하지만 여러 가지를 조사해 보았지만 효과가 있는 대안을 제공하는 것은 아무것도 없는 것 같습니다.
기껏해야 apache2-mod-itk로 안내되었지만 일단 설치되면 웹 서버는 대부분의 conf 파일을 기본 구성으로 기본 설정하는 경우에도 무슨 일이 있어도 항상 시작되지 않으므로 옵션이 아닙니다.
내가 찾고 있는 것은 다음 Apache 구성 "의사 코드"와 유사한 효과를 갖는 것을 찾는 것입니다.
<Virtualhost *:443>
VirtualDocumentRoot /var/www/%-4/public
ServerName dev.mycompany.net
ServerAlias *.dev.mycompany.net
UseCanonicalName Off
User %-4
Group %-4
SuexecUserGroup %-4
CustomLog /var/www/%-4/logs/access.log vcommon
[...other directives]
</Virtualhost>
Apache/+PHP에서 이와 같은 기능을 사용할 수 있습니까? 아니면 다른 종류의 자동화된 솔루션을 찾아야 합니까?
참고로 나는~하지 않다예를 들어 설정을 자동화하는 일반 Mass_vhosts와 같은 방법이 없는 한 각 사용자에 대한 도커 또는 VM으로 전체를 분리하고 싶습니다. 더 많은 입력이 필요하고(기술자에게 도커 컨테이너를 실행하고 설치할 수 있는 루트(?) 권한을 부여하는 것은 말할 것도 없고) 진행 중인 자동화도 중단됩니다(하위 도메인을 컨테이너에 어떻게 동적으로 연결합니까?).