Настройка виртуальных хостов 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 https://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

Опубликовано

Последнее изменение 22.09.2019