コンテキスト:私は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
(後者が必要なので、インストールされたフレームワークや解凍などで生成されたファイルをWebサーバーで実際に処理できます。)
もちろん、これは他のプロジェクトにコンテンツを書くことができるという欠点があるので、それを修正したいと思いました。しかし、可能であれば、維持する自動化。開発者と技術スタッフは、バックエンドの入力をできるだけ少なくしながらプロジェクトを開始できる必要があるからです(社長は「後でバックエンドへの注意を分散させる」と述べています)。
セキュリティを維持しながらシンプルさを維持するために私が望むのは、各仮想ホストに対応するWebサーバー/ PHPプロセスを実行するのに十分なユーザーを使用するようにApache(またはPHP?)を設定することです。これは、たとえば、プロジェクトが/var/www/foo1
ユーザーとして実行されていてfoo1
アクセス権がないことを意味します/var/www/foo2
。もちろん、これに対応するために権限とACLを調整したいと思います。
ただし、別々のユーザーを設定する方法に関するドキュメントが見つかりません。周りに滞在する大規模仮想ホスティングの自動化私はこれが存在しなければならないと思います。すべてのホスティング会社がこのようなことをするからです。しかし、私は多くの研究をしてきましたが、有効な代替案を提示することは何もないようです。
せいぜいapache2-mod-itkに移動しましたが、一度インストールすると、Webサーバーはほとんどの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などの設定を自動化する簡単な方法がないと、最終的にすべてがユーザーごとに分割されます。 (技術者にルート(?)を実行してインストールすることは言うまでもありません。)Dockerコンテナ)、進行中の自動化も中断されます(サブドメインをコンテナに動的に接続する方法)。