As a variation of what's explained in the prior answer, you could also use the [Group][1] module for this (instead of the [Organic groups](https://www.drupal.org/project/og) module). [Group][1] allows for creating arbitrary collections of your content and users on your site, and grant access control permissions on those collections. So each group can be seen as fully functional site in itself, i.e. a virtual site.

It is available as of D7, and has a D8 version also. The [Group][1] module creates groups as entities, making them fully fieldable, extensible and exportable. So since Group is entirely entity based, it has out-of-the-box integrations (= no extra modules needed) with other great modules such as [Rules](https://www.drupal.org/project/rules), the [Views](https://www.drupal.org/project/views), etc.

For more details about the various roles and permissions, refer to my answer to "http://drupal.stackexchange.com/questions/197493".

# Resources

- [Community documentation for the Group module][3].
- Video tutorial "[How to use the Group module in Drupal 8 to manage editorial access control to different areas of a web site][4]".

  [1]: https://www.drupal.org/project/group
  [3]: https://www.drupal.org/node/2666972
  [4]: https://m.youtube.com/watch?v=GkiCLJk5n0s