Виртуальные хост apache, nginx на ubuntu
Создать директрию
sudo mkdir -p /var/www/[site-folder]/public_html
Файлы сайта будут хранится в подпапке
public_html
Если логи в отдельных папках, то сделать папки
mkdir /var/log/apache2/[site]/ mkdir /var/log/nginx/[site]/
Скопировать файлы и поставить права, владельца
cp [files] /var/www/[site-folder]/public_html sudo chmod -R 755 /var/www sudo chown -R www-data:www-data /var/www/[site-folder]/
Создать конфиги в apache и nginx
etc/apache2/sites-available/[site].conf etc/nginx/sites-available/[site].conf
Например для apache можно скопировать конфиг по-умолчанию
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/[site].conf
apache [site].conf
<VirtualHost *:80>
ServerAdmin admin@site.ru
ServerName [site.ru]
ServerAlias www.[site.ru]
DocumentRoot /var/www/[site-folder]/public_html
ErrorLog ${APACHE_LOG_DIR}/[site]/error.log
CustomLog ${APACHE_LOG_DIR}/[site]/access.log combined
</VirtualHost>
Проверка корретности конфигов
sudo apachectl -t sudo nginx -t
Включить конфиг для сайта
sudo a2ensite [site] sudo ln -s /etc/nginx/sites-available/[site].conf /etc/nginx/sites-enabled/[site].conf
sudo a2ensite [site].conf не срабатывает
Перезапусить сервер
sudo systemctl reload apache2 sudo systemctl reload nginx
Проверка настройки виртаульных хостов apache
apache2ctl -S
Результат:
VirtualHost configuration: *:80 baikal.ru (/etc/apache2/sites-enabled/baikal.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex default: dir="/var/lock/apache2" mechanism=fcntl Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33