Настройка виртуальных хостов VPS для различных пользователей

Третья часть цикла по настройке VPS. В первой при установке Apache мы сразу активизировали модуль mpm-itk, во второй - создали пользователя demo. Здесь создадим конфигурационные файлы Apache и Nginx виртуального хоста для этого пользователя.

Напоминаю, что наш сайт будет привязан к домену demo.dev.umi-cms.spb.su.

1 Apache

Создаем конфигурационный файл нового хоста:

nano /etc/apache2/sites-available/demo.conf

Пишем в него:

<VirtualHost 127.0.0.1:8080>
 ServerAdmin ваш почтовый адрес
  ServerName demo.dev.umi-cms.spb.su
  ServerAlias www.demo.dev.umi-cms.spb.su
 
  AssignUserId demo demo
  
  php_admin_value open_basedir "/home/demo/:."
  php_admin_value upload_tmp_dir "/home/demo/tmp"
 php_admin_value session.save_path "/home/demo/tmp"

  DocumentRoot /home/demo/www
 <Directory />
   Options +FollowSymLinks
   AllowOverride All
 </Directory>
  <Directory /home/demo/www>
    Options  -Indexes +FollowSymLinks -MultiViews
   AllowOverride All
   Order allow,deny
    allow from all
    Require all granted
 </Directory>

  ErrorLog /home/demo/logs/apache.error.log

 # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
 LogLevel warn

 CustomLog /home/demo/logs/apache.access.log combined

</VirtualHost>

Здесь внимание следует обратить на несколько инструкций:

AssignUserId - указываем имя пользователя и имя группы от которой будет работать Apache.

open_basedir для домашней директории пользователя (в теории можно добавить несколько директорий при необходимости, разделяя их двоеточием; на практике я с трудом представляю себе зачем это может быть нужно).

upload_tmp_dir, session.save_path - задаем пути к папке хранения сессий и папке загрузок.

Включаем конфигурацию

a2ensite demo.conf

Перезапускаем Apache

systemctl reload apache2

2 Nginx

Создаем файл конфигурации:

nano /etc/nginx/sites-available/demo.conf

Пишем в него

server {
 listen   000.000.000.000; ## listen for ipv4; this line is excel and implied

  root /home/demo/www;

  
  server_name demo.dev.umi-cms.spb.su;
  

  
  location / {  
    proxy_pass http://127.0.0.1:8080;
   proxy_redirect off;
   proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    
    root /home/excel/www;
   index index.php;
  }
 

  

  
  location ~ /\.ht {
   deny all;
 }
 
}

В этой конфигурации все стандартно.

Создаем символическую ссылку

ln -s /etc/nginx/sites-available/demo.conf /etc/nginx/sites-enabled/demo.conf

Заставляем nginx перечитать конфигурацию

/etc/init.d/nginx reload