Веб-сервер на виртуальной машине Linux

Начальные требования

Серверная часть

Гостевой сервер:

VM сервер:

  • установлены nginx, php.

Клиентская часть:

  • Возможность подключения к гостевому серверу по ssh.
  • Возможность подключения к виртуальной машине по ssh (доступ через гостевой сервер). 
    • под ОС Linux используйте Терминал
    • под ОС Windows можно использовать PuTTY

Заходим на гостевой сервер по ssh:

ssh username@server-host-name

где username имя пользователя на гостевом сервере server-host-name. Вводим пароль для пользователя username.

ЭТАП №1. Гостевой сервер

НЕОБХОДИМО заменить в тексте примеров и командах:
  • DOMAIN.RU в примере на реальное доменное имя вашего веб-сервера, который будет работать на VM сервере;
  • 192.168.122.10 - на IP адрес вашей VM, которая запущена на гостевом сервере.

Настройка работы связки по http протоколу гостевого и VM серверов. 

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

sudo mcedit /etc/nginx/sites-available/DOMAIN.RU

Копируем в него содержимое примера конфигурационного файла nginx на гостевом сервере.

# Пример конфигурационного файла nginx на гостевом сервере

server {
#                   v-МЕНЯЕМ-v
        server_name DOMAIN.RU;
#                                  v-МЕНЯЕМ-v   
        access_log  /var/log/nginx/DOMAIN.RU-access.log;
#                                  v-МЕНЯЕМ-v
        error_log   /var/log/nginx/DOMAIN.RU-error.log;

        client_max_body_size 512m;

        location / {
#                                   v---МЕНЯЕМ---v
                proxy_pass   http://192.168.122.10:80/;
                proxy_set_header   Host      $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header  X-Real-IP  $remote_addr;
         }
}

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

Подгружаем новые настройки в nginx:

sudo ln -s /etc/nginx/sites-available/DOMAIN.RU /etc/nginx/sites-enabled/DOMAIN.RU
sudo service nginx reload

ЭТАП №2. Сервер VM

НЕОБХОДИМО заменить в тексте примеров и командах:

  • DOMAIN.RU - на реальное доменное имя вашего веб-сервера, который будет работать на VM сервере;
  • 192.168.122.1 - на внутренний IP адрес вашего гостевого сервера, на котором запущен virsh;
  • php7.4-fpm - на 7.4 для Ubuntu 20.04 LTS, 7.2 для Ubuntu 18.04 LTS.

Заходим на VM по ssh с гостевого сервера:

ssh user@server-name

где user имя пользователя на VM server-name. Вводим пароль для пользователя user.

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

sudo mcedit /etc/nginx/sites-available/DOMAIN.RU

Копируем в него содержимое примера конфигурационного файла nginx на сервере VM.

# Пример конфигурационного файла nginx на сервере VM

server {
#                   v-МЕНЯЕМ-v
        server_name DOMAIN.RU;
        root /var/www/html;
        index index.php;

#                        v---МЕНЯЕМ---v
        set_real_ip_from 192.168.122.1;

        real_ip_header X-Real-IP;
#                                  v-МЕНЯЕМ-v
        access_log  /var/log/nginx/DOMAIN.RU-access.log;
#                                  v-МЕНЯЕМ-v
        error_log   /var/log/nginx/DOMAIN.RU-error.log;
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
}

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

Подгружаем новые настройки в nginx:

sudo ln -s /etc/nginx/sites-available/DOMAIN.RU /etc/nginx/sites-enabled/DOMAIN.RU
sudo service nginx reload

На своем ПК под любой ОС открываем браузер. Открываем страницу сайта DOMAIN.RU

Должны увидеть следующее:

Веб-сервер по адресу DOMAIN.RU работает по незащищенному протоколу http.

Выходим с сервера VM при этом возвращаемся в консоль гостевого сервера:

exit

Настройка работы веб сервера по защищенному https протоколу

Устанавливаем пакет certbot для получения бесплатных сертификатов на гостевом сервере:

sudo apt -y install certbot python3-certbot-nginx

Получаем сертификат для домена DOMAIN.RU (обязательно сменить на СВОЙ домен):

sudo certbot -d DOMAIN.RU

Вывод диалога получения сертификата (такого вида будет диалог, если вы уже запускали certbot)

Перезагружаем настройки nginx:

sudo service nginx reload

На своем ПК под любой ОС открываем браузер. Открываем страницу сайта DOMAIN.RU

Должны увидеть следующее:

Веб-сервер по адресу DOMAIN.RU работает по защищенному протоколу https.

ЭТАП №3. Сертификат на сервере VM

Этот этап необходим для корректной работы, например, с CMS Joomla

Заходим на VM по ssh с гостевого сервера:

ssh user@server-name

где user имя пользователя на VM server-name. Вводим пароль для пользователя user.

Устанавливаем пакет certbot для получения бесплатных сертификатов на VM сервере:

sudo apt -y install certbot python3-certbot-nginx

Получаем сертификат для домена DOMAIN.RU (обязательно сменить на СВОЙ домен):

sudo certbot -d DOMAIN.RU

При первом запуске certbot у вас будут запрошены:

  • e-mail для почтовых сообщений о статусе сертификата;
  • согласие с правилами сервиса letsencrypt;
  • согласие отчитываться вашим электронным почтовым адресом для поддержки сервиса.

Вывод диалога получения сертификата

Выходим с сервера VM при этом возвращаемся в консоль гостевого сервера:

exit

Открывем конфигурационный файл для nginx на редактирование:

sudo mcedit /etc/nginx/sites-available/DOMAIN.RU

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

# меняем HTTP на HTTPS
# меняем 80 на 443

# было
                proxy_pass   http://192.168.122.10:80/;
# стало
                proxy_pass   https://192.168.122.10:443/;

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

Перезагружаем настройки nginx:

sudo service nginx reload

На своем ПК под любой ОС открываем браузер. Открываем страницу сайта DOMAIN.RU

Должны увидеть следующее:

Ничего не изменилось, на первый взгляд. Веб-сервер по адресу DOMAIN.RU работает по защищенному протоколу https. 

Теперь можно установить CMS Joomla на веб-сервер.


Печать