Основы работы с VPS / Установка и настройка nginx. Работа с scp

Чтобы создать сайт, даже самый простой, нам нужен сервис, который будет уметь работать с http-запросами. Сейчас в мире два главных сервиса, которые выполняют эту задачу:

причем nginx превосходит apache по скорости работы и в настоящие время является по сути стандартом в веб разработке (типа как git). Apache все еще часто используется на хостингах благодаря возможности конфигурировать сервер без прав администратора.

В общем мы будем использовать nginx. Идем его ставить. Пишем

sudo apt install nginx -y

после того как сервер поставлен. Можно проверить что он работает. Сначала глянем его статус через systemctl

sudo systemctl status nginx

если выдало как у меня, значит все ок =)

Как только вы поставили nginx, вы можете открыть ссылку на ваш сервер в браузере. В качестве ссылки используйте имя хоста у меня это ovz2.mkatash.m29on.vps.myjino.ru. Увидим стандартное приветствие:

Как же это работает? По сути nginx по умолчанию раздает папку, в которой лежит файлик index.html с данным содержимым. Давайте найдем этот файлик.

Настройки nginx хранятся, как и положено в /etc/nginx, там есть подпапка sites-enabled.

В это папке хранятся настройки так называемых виртуальных сайтов (или как обычно называют виртуальных хостов). Виртуальные они потому что можно на одном сервере хранить и раздавать хоть 100 сайтов. И добавляя файлики в эту папку мы добавляем очередной сайт. По умолчанию там один файлик с именем default.

Глянем что в нем находится:

nano /etc/nginx/sites-enabled/default

если убрать все комменты то в нем следующее содержимое

server {
        # мы слушаем 80 порт, он подставляется по умолчанию в бразуере 
        listen 80 default_server;
        listen [::]:80 default_server;

        # собственно папка в которой лежат файлы
        root /var/www/html;
        
        # index файл, выбирает первые который совпадет с данным списком
        index index.html index.htm index.nginx-debian.html;
        
        # сюда обычно пишут домен на который этот конфиг реагирует, 
        # если написать _ то конфиг срабатывает для любого
        server_name _;

        location / {
                # это мы уже проходили, просто ищет файл в папке, 
                # если найдет, то раздаёт, а если нет -- вернет 404
                try_files $uri $uri/ =404;
        }
}

как видим данный конфиг говорит, что наш index.html который мы только что видели в браузере должен лежать в папке /var/www/html

глянем в нее:

есть такой! =)

Теперь посмотрим его содержимое:

собственно, то самое приветствие.

Создаем новый виртуальный хост

Давайте попробуем создать новый виртуальный хост. Чтобы был сайт надо завести сначала папку которую мы будем раздавать. Идем в нашу домашнюю папку и создаем папку test_site01

и давайте создадим в папке файлик index.html со следующим содержимым

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
        Всем привет! =)
</body>
</html>

вот так должно получится

теперь идем в папку /etc/nginx, взглянем на нее еще раз. Там есть две папки sites-available и sites-enabled

принято конфиги для новых виртуальных сайтов создавать в sites-available, а в папку sites-enabled делать символическую ссылку, когда хочется данный хост активировать. Если глянуть сейчас содержимое этим папок, то там будет файлик default. В sites-available – просто файл, а в sites-enabled – ссылка на файл.

И так, создаем в sites-available файлик

sudo nano /etc/nginx/sites-available/test_site01.conf

и загоняем в него:

server {
  listen 80;
  
  # создадим поддомен test1
  server_name test1.ovz2.mkatash.m29on.vps.myjino.ru;
  
  # тут путь к нашей папке
  root /home/dev/test_site01;
  
  # тут имя index файлика
  index index.html;
  
  # ну и обработка путей
  location / {
    try_files $uri $uri/ =404;
  }
}

теперь создадим ссылку в папку sites-enabled

sudo ln -s /etc/nginx/sites-available/test_site01.conf /etc/nginx/sites-enabled/test_site01.conf

далее проверим что тот конфиг, который мы написали корректный, запустим команду:

sudo nginx -t

если нигде не ошиблись в конфиге, то увидим

теперь обновим конфиг сервиса nginx

sudo systemctl reload nginx

и теперь можно попробовать проверить ссылку в браузере http://test1.ovz2.mkatash.m29on.vps.myjino.ru, у вас она будет отличаться. Так как у вас должно быть другое имя хоста.

Копируем файлы на сервер

На Windows

Чтобы скопировать файлы выбираем

ну и можно выбрать файлик и указать ему папку на сервер и тыкнуть upload:

ну и в результате можно проверить как файлик появился на сервер

Аналогично можно отправить папку

Собственно вот и все. Поздравляю, теперь вы умеете выкладывать статические сайты! =)

На linux

Если у вас есть папка

то чтобы скопировать отдельный файлик, напишите

scp index.html dev@ovz2.mkatash.m29on.vps.myjino.ru:/home/dev/test_site_01

если хотите целиком папку то пишите

scp -r test_site_on_local dev@ovz2.mkatash.m29on.vps.myjino.ru:/home/dev/test_site_01

то есть добавляет флаг -r и указываете имя папки, если вы уже внутри папки то пишите:

scp -r * dev@ovz2.mkatash.m29on.vps.myjino.ru:/home/dev/test_site_01

еще если у вас папка с кучей файлов, то имеет смысл зайти в нее и копировать файлы использую сжатие в архив вот так:

tar czf - . | ssh dev@ovz2.mkatash.m29on.vps.myjino.ru "cd /home/dev/test_site_01 && tar xvzf -"
4

По аналогии с подсказкой, создайте папку для нового виртуального хоста, подключите ее к поддомену, загрузите 9 задание из лабы по Верстке, и проверьте что все работет.