Виртуальные хост apache, nginx на ubuntu

  1. Создать директрию

    sudo mkdir -p /var/www/[site-folder]/public_html

    Файлы сайта будут хранится в подпапке public_html

  2. Если логи в отдельных папках, то сделать папки

    mkdir /var/log/apache2/[site]/
    mkdir /var/log/nginx/[site]/
  3. Скопировать файлы и поставить права, владельца

    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]/
  4. Создать конфиги в 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>
  1. Проверка корретности конфигов

    sudo apachectl -t
    sudo nginx -t
  2. Включить конфиг для сайта

    sudo a2ensite [site]
    sudo ln -s /etc/nginx/sites-available/[site].conf /etc/nginx/sites-enabled/[site].conf

    sudo a2ensite [site].conf не срабатывает

  3. Перезапусить сервер

    sudo systemctl reload apache2
    sudo systemctl reload nginx
  4. Проверка настройки виртаульных хостов 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

Похожие записи

Linux. Команда sed

Команда sed - это потоковый редактор текста. Вставляет/изменяет/добавляет текст не открывая файл визуально. Обычно используется в скриптах.

15 сентября 2019 г. в Linux, Unix