Как создать поддомен на Apache-сервере

Проверим состояние HTTP-сервера Apache:
$ service apache2 status


Создадим папки для веб-сайтов:
$ sudo mkdir -p /var/www/example.com/public_html
$ sudo chown -R $USER:$USER /var/www/example.com/public_html

$ sudo mkdir -p /var/www/subdomain.example.com/public_html
$ sudo chown -R $USER:$USER /var/www/subdomain.example.com/public_html


Установим права drwxr-xr-x на папку /var/www:
$ sudo chmod -R 755 /var/www


Добавим файлов:
$ nano /var/www/example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success! The example.com virtual host is working!</h1>
  </body>
</html>

$ nano /var/www/subdomain.example.com/public_html/index.html
<html>
  <head>
    <title>Welcome to Subdomain.example.com!</title>
  </head>
  <body>
    <h1>Success! The subdomain.example.com virtual host is working!</h1>
  </body>
</html>


Создадим виртуальные хосты:
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
$ sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/subdomain.example.com.conf
$ sudo nano /etc/apache2/sites-available/subdomain.example.com.conf
<VirtualHost *:80>
    ServerAdmin admin@subdomain.example.com
    ServerName subdomain.example.com
    ServerAlias www.subdomain.example.com
    DocumentRoot /var/www/subdomain.example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


$ sudo a2ensite example.com.conf
$ sudo a2ensite subdomain.example.com.conf
$ sudo service apache2 restart

И наконец отредактируем файл /etc/hosts:
$ sudo nano /etc/hosts
127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 subdomain.example.com


Полезные ссылки по теме: