Настроить этот локальный сервер

Как создать, установить, настроить локальный сервер на компьютере

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

Что такое локальный сервер?

Локальный сервер – программное обеспечение, позволяющее сделать отладку сайта на локальном (домашнем) компьютере, без выхода в интернет. Локальный сервер полностью имитируют работу хостинга и имеет аналогичный функционал.

Те, кто занимался сайтостроением с использованием лишь html и css знают, что необходимости в локальном сервере нет, так как браузер прекрасно обрабатывает и понимает язык гипертекстовой разметки и таблицы каскадных стилей. Но, стоит добавить какой-нибудь PHP скрипт и Вас тут же ждет конфуз – браузер не выдаст результат работы PHP. А происходит это потому, что браузеры не понимают PHP. И чтобы пользователь увидел страницу сайта в том виде, в котором эта страница должна быть, необходимо, чтобы сервер обработал и преобразовал PHP код в html.

Все CMS а-ля WordPress и Joomla содержат в себе PHP скрипты. Соответственно, чтобы сайты, созданные с помощью систем управления содержимым, могли работать на домашнем компьютере, необходим локальный сервер.

Читайте также:  Не работает правый наушники airpods pro что делать если

Мой сайт создан с помощью WordPress, постоянно приходится тестировать какие-то плагины, расширения, копаться в PHP коде. Вполне логично, что рано или поздно, такие действия могут привести к утрате работоспособности сайта, из-за допущенной ошибки. Само собой большинство хостингов поддерживает восстановление (бек ап) сайта и базы данных. Да и грамотные веб мастера держат, на всякий случай, запасную на своем компьютере. Я вообще параноик, кроме хостинга и моего компьютера, еще и на флешку записал. Надо будет еще куда-нибудь на облачный сервис закинуть =).

Да и не стоит забывать, что не все разработчики плагинов заботятся о корректном удалении своих продуктов, и часто, даже удалив продукт, можно наблюдать следы не до конца стертого плагина в базе данных. И чем дольше сайт живет, тем больше подобного хлама будет висеть в базе.

Собственно говоря, с перечисленными задачами и проблемами (и не только) поможет справиться локальный сервер.

Как создать локальный сервер?

На самом деле создавать сервер не нужно, все и так уже создано, достаточно просто скачать и установить готовый набор необходимых компонентов. Установку и настройку одного из популярных локальных серверов рассмотрим ниже.

Как установить локальный сервер?

Один из самых популярных и стабильных локальных серверов – Денвер (Denwer). Название расшифровывается как: джентльменский набор веб разработчика – Д. н. в. р. Его установку мы то и рассмотрим.

Базовый пакет содержит:

  • Инсталлятор.
  • Сервер Apache.
  • PHP 5.
  • MySQL5, поддерживающая транзакцию.
  • phpMyAdmin — система управления MySQL, позволяющая работать с базами данных через браузер.
  • Эмулятор sendmail и SMTP-сервера – имитация функции отправки почты. Все отправленные письма будут расположены в директории Z:\tmp\!sendmail в формате .eml, а не отправляться на указанную почту.

Одним из плюсов можно назвать то, что сервер можно установить на флеш-накопитель. И где бы вы ни оказались, вы сможете работать над своими проектами.

Ну и, конечно же, самый главный плюс – Denwer абсолютно бесплатен.

Скачать Денвер последней версии (на данный момент 3) можно тут: http://www.denwer.ru/

Так же его можно скачать проще — по ссылке Denwer3 (это избавит от необходимости регистрироваться).

Установка Denwer

    1. Запускаем скачанный файл и соглашаемся с установкой базового пакета.

    2. Затем, откроется окно браузера, которое необходимо закрыть для продолжения или отмены установки.
    3. Для продолжения установки нажимаем Enter.

    4. Затем, необходимо указать директорию, в которой будут расположены файлы. По умолчанию: C:\WebServers. Смело жмем Enter и продолжаем.

    5. Следуя инструкции, жмем Enter.
    6. Далее, инсталлятор предложит выбрать букву виртуального диска. По умолчанию предлагается буква Z. Если на компьютере нет диска с таким именем, то можно смело продолжать установку, нажав Enter, если же есть – то выбираем другую.

    7. После того как все файлы дистрибутива будут скопированы, предложат на выбор 2 варианта создания виртуального диска:

  1. Виртуальный диск создавать при включении компьютера.
  2. Создавать виртуальный диск только при явном вызове, то есть – при клике ярлыка старта на рабочем столе (я выбрал этот вариант).

Вот собственно и все, на этом установка Денвера окончена.

Теперь можно протестировать работу локального сервера. Если все сделано верно, то на рабочем столе появятся 3 ярлыка: Start Denwer, Stop Denwer, Restart Denwer.

Нажимаем Start Denwer для запуска. Если зайти в мой компьютер, то можно увидеть, что появился выбранный локальный диск. А в трее (возле часов) появятся 2 значке в виде шляпы и пера.

Откройте окно браузера и в адресную строку введите следующее: http://localhost/

Откроется окно с сообщением: «Ура, заработало!», символизирующее, что все сделано правильно и можно смело приступать к роботе с локальным сервером.

Открывшаяся страничка содержит много полезного:

  1. Можно найти необходимую документацию по PHP, MySQL, Apache, Perl, PostgreSQL, воспользовавшись соответствующим поиском.
  2. Так как Денвер – бесплатный софт, то для поддержания проекта, создатели принимают от благодарных пользователей пожертвования. Ну, и я заметил партнерскую ссылку на хостинг «Джино».
  3. Можно проверить работу компонентов, перейдя по следующим ссылкам:

subdomain.localhost/ssl.php — проверяем активен ли SSL.

subdomain.localhost/ — проверяем «не-Интернет» домены второго уровня, а также SSI

test1.ru/ — проверка доменов второго уровня.

subdomain.test1.ru/ — проверка поддоменов (субдоменов)

localhost/Tests/phpnotice/index.php — можно проверить перехват PHP Notice.

localhost/Tests/PHP5/index.php5 — информация по PHP 5.

localhost/Tools/phpMyAdmin — доступ к phpMyAdmin и MySQL.

custom-host:8648 — проверяем хост с другим IP-адресом и портом (127.0.0.2:8648)

localhost/Tests/sendmail/index.php — проверяем работу sendmail (отправка почты).

Все эти ссылки лишь для тестирования работы всех компонентов. Из нужного тут лишь доступ к phpMyAdmin. Основная настройка локального сервера закончена.

Сайт в Денвере отображается иероглифами

Проблема с иероглифами иногда случается, если используется кодировка utf-8. В Опере и Хроме, вместо моего текста выводились жуткие наскальные надписи. А Internet Explorer, как ни странно, все показывал как надо. Но как бы там ни было, проблему надо решать. И сделать это можно следующим способом:

Создать в корневой директории сайта (в папке www) файл .htaccess и прописать там следующее: AddDefaultCharset UTF-8

Если же файл уже есть, то просто добавляем туда эту строчку.

Как удалить Денвер?

Удалить через панель управления – удаление программ Денвер не получится, так как он не пишет файлы в директорию Windows и не оставляет записей в реестре, соответственно деинсталлятор не нужен. Поэтому, просто удаляем папку с файлами локального сервера (предварительно остановив работу Денвера с помощью ярлыка на рабочем столе): C:\WebServers, удаляем ярлыки с рабочего стола и из Автозагрузки.

Как сделать локальный сервер Denwer доступным в сети интернет.

Прежде всего, стоит усвоить, что Денвер предназначен для локального использования. И разработчики предупреждают, что сделав локальный сайт видимым в интернете, можно подвергнуть локальную машину опасности быть взломанной, так как Denwer – не есть надежный и полноценный сервер.

Денвер запускается с правами администратора, поэтому недоработанные скрипты могут представлять потенциальную опасность, а именно — открыть «дыру», через которую хакер может навредить компьютеру.

Если же вы грамотный администратор и полностью понимаете, что вы делаете, то что бы открыть доступ к локальному сайту следует:

  1. Прежде всего, необходимо иметь статический ip адрес. Динамические айпишники будут меняться при перезагрузке машины (роутера).
  2. В Windows есть встроенный антивирус — брандмауэр, который блокируют доступ с внешних компьютеров. Для того, чтобы сделать локальный сайт доступным, эту блокировку необходимо отключить в Пуск — брандмауэр Windows. Следует понимать, что это так же снизит защиту компьютера.
  3. Ну, и последнее, что нужно сделать – создать на виртуальном диске Денвера такую иерархическую структуру из папок: /home/192.168.0.1/www

Вместо указанного в предыдущем пункте ip адресе, необходимо указать свой, выданный вашим интернет провайдером.

В случае если провайдер предоставляет, кроме айпишника, еще и привязанный к нему домен, то сайт будет доступен по нему.

В следующей статье рассмотрим установку WordPress на локальный сервер.

Источник

Как запустить свой сервер с белым ip из локальной домашней сети

Disclaimer

Я не являюсь сетевым инженером, я просто студент, который решил записать свои действия, чтобы поделиться со знакомыми и не забыть, что я вообще делал. Буду очень рад если меня поправят в комментариях. Этот конспект написан по другим статьям с различных ресурсов, прошу поддержать авторов тех гайдов, у них некоторые моменты расписаны более подробно и возможно вам подойдет именно их статья.

Буду стараться писать очень подробно, чтобы человек, знающий столько сколько я в начале своего пути, все понял.

Вступление

Мне очень давно хотелось поднять видимый извне сервер в своей домашней локальной сети, чтобы использовать его для pet проектов или же возможно для сайта-визитки.

Возникает вопрос: почему не использовать для этого самую простую VPS и не тратить мощности своего компьютера? Ответ очень прост: статический белый ip у меня уже был и давно, а в качестве сервера я решил использовать не основной пк а старый ноутбук. Поэтому дополнительных затрат не предвиделось.

Что мы имеем?

Для справки, на момент написания публикации (2021) стоимость минимальной VPS на доверенном ресурсе — 400 руб. , стоимость белого ip у моего провайдера — 179 руб.

Ноутбук (intel core i5 M 560 2,67 GHz, 4/60Gb) с установленной Ubuntu Server 20.04.3 (для создания установочной флешки советую использовать rufus (win) или balenaEtcher (os x)

роутер провайдера с подключенным пакетом «статический ip адрес»

второй компьютер для тестов (все что делается через браузер можно, конечно, сделать и на телефоне, вопрос удобства)

хорошая музыка чтобы процесс не был скучным

Какая цель?

Сделать python3 flask (взял для простоты) сервер доступный из вне.

Установка постоянного локального адреса на сервер

Приступим. Во-первых установим постоянный ip для нашего сервера в локальной сети. По идее изначально используется DHCP (протокол, по которому каждое устройство в сети получает относительно случайный ip адрес, а нам нужен постоянный для сервера, чтобы роутер всегда знал куда отправлять внешние запросы)

Смотрим интерфейс, который мы используем, с помощью ifconfig

В зависимости от того какой тип соединения мы используем (кабель или wi-fi) выбираем файл в катологе /etc/netplan

И настраиваем его примерно так:

ethx — название нашего устройства по которому идет подключение

Здесь важно понимать что означают строки:

addresses (6) — адрес нашего сервера в локальной сети, как раз то что мы делаем постоянным

/24 означает маску сети (255.255.255.0), в данной ситуации первые 3 числа должны совпадать с локальным адресом роутера, а последнее число произольно. Я выбрал адрес 192.168.1.200

gateway4 — шлюз нашей сети, то есть роутер. Его адрес 192.168.1.1, обычно он общий для всех роутеров одного провайдера, так что погуглите (иногда его адрес указывается там же где и пароль от wi-fi)

в строке nameservers: addresses (9) указываем тот же адрес что и в gateway4 (простите, но я беспонятия что это)

dhcp4: no и dhcp6: no указывают, что мы не будем использовать протокол DHCP

На этом этапе возможно потребуется проверка:

sudo tcpdump -i ethx icmp and icmp[icmptype]=icmp-echo

Чтобы следить за тем кто нас пингует.

И пингуем его с другого пк внутри локальной сети по адресу 192.168.1.200 .

Также строит проверить есть ли доступ к интернету у нашего ноутбука-сервера: используем команду ping с доменом google.com .

Все это подробно описано в этой статье для Ubuntu, для других дистрибутивов гуглите «Установка статического ip «.

Все работает? Идем дальше!

Рассказываем роутеру про сервер

Теперь наш сервер знает, что мы имеем дело с постоянным ip и не используем протокол DHCP. Самое время рассказать роутеру, что внешние запросы нужно отправлять на сервер. Чтобы получить доступ к настройкам роутера вбиваем в поисковую строку его ip адрес.

Есть два варианта:

Установить DMZ зону внутри настроек роутера и указать туда локальный адрес нашего сервера. Этим действием мы делаем наш сервер публичным и теперь любой может попробовать подключиться к нему.

Пробросить порты нужных нам ресурсов через роутер на сервер (перенаправление портов). Не забудьте порт SSH (22) и flask (5000)

Попробуйте пингануть его из внешней сети.

Все норм? Теперь наш сервер виден из вне, самое время подумать о безопасности.

Защита сервера

Я буду настраивать SSH , Firewall и fail2ban по вот этому очень хорошему гайду. (еще раз, моя цель не скопипастить все что я нашел, а собрать все в одно место, чтобы не забыть) Я делаю все для Ubuntu Server, но в том гайде есть для CentOS и Red Hat.

Во-первых сделаем еще одного пользователя помимо root (1), зададим ему пароль (2) и разрешим использовать root привелегии через sudo (3):

Настраивайте по инструкции в статье упомянутой выше. Там мне совсем нечего добавить, кроме подроностей о public и private ключах:

ssh-keygen -t rsa генерирует 2 ключа открытый (тот что имеет . pub ) и приватный который (не имеет такого расширения)

Открытый ключ отправляется на сервер в файл authorized_keys в папке /.ssh в домашней директории пользователя ( /home/username/.shh/authorized_key )

Для этого можно использовать команду:

Закрытый ключ используется для аутентификации, скопируйте его куда-нибудь чтобы не потерять

Использовать ключ для входа можно командой:

Важно отключить аутентификацию по паролю иначе мы все это делали зря.

Firewall

Используя проброс портов мы разрешаем доступ к нашему серверу лишь посредством подключений к определенным портам, но DMZ зона допускает почти все типы запросов. Используя DMZ зону нам строит поднять FireWall на сервере, который как раз и ограничит количество портов которые могут принимать внешние запросы.

Разрешим использование SSH (1) и порта 5000 (2) в ufw (Firewall), и запустим Firewall (3):

Подняв FireWall важно не забыть разрешить доступ к порту SSH (22) и порту Flask (5000) (ну или другого ПО, которое мы собираемся использовать). Я забыл и долго не понимал, почему мой сервер не отвечает.

На сайте хорошо разобраны команды для управления Firewall-ом.

Fail2ban

Fail2ban ограничивает количество попыток подключения, это сильно усложнит подбор аутентификационных данных SSH.

Для начала установим его (1) и запустим (2, 3):

Теперь можем настроить его, используя эти конфигурационные файлы: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf . Во втором находятся ограничения на количество подключений за определенный промежуток времени и время бана.

Теперь сделаем проверку более сложного уровня

Установим flask и python3:

Скопируем код тестового сервера с сайта в файл server.py :

Находясь в директории с этим файлом, запустим сервер:

Сервер запущен и теперь мы можем попробовать подключиться к нему с внешнего устройства прямо через строку в браузере, вводя внешний адрес нашего роутера, к примеру:

Если все работает мы должны увидеть строку «Hello, World!». Не заработало? Пройдитесь по моим заметкам в этом гайде еще раз.

Источник

Оцените статью