Приветствую всех habr'овчан! Это моя первая статья, поэтому прошу отнестись с пониманием. Хочу рассказать как я случайно получил в руки материнскую плату от ноутбука, еще пару комплектующих и решил попробовать сэкономить на хостинге и сделать некий «сервер» для моего сайта, которого еще нет :)

Вот такой device у меня получился
Вот такой device у меня получился

Для моих нужд вполне подойдет. Потребление электроэнергии смешное, охлаждение пассивное, даже батарея живая, ее хватает примерно на 4 - 5 часов работы. Сайт будет совершенно простым - это мой учебный проект.

Кратко о характеристиках:

  • Процессор: Intel Atom processor E3800

  • Память: 2 Gb soDIMMM DDR3

  • Устройство хранения: FoxLine 8Gb HalfSlim SATA SSD

  • Сетевые интерфейсы:

    • Realtec RTL810xE Fast Ethernet controlle 100 Mbit

    • Realtec RTL8723BE PCIe Wireless Network Adapter

Установка Debian 11

Для начала я скачал iso-образ Debian 11, затем скачал Rufus и создал загрузочную флешку. Описывать особенно нечего, программа интуитивно понятная: просто выбираем образ для записи, выбираем носитель, но который этот образ писать и нажимаем start.

Загрузочная флешка готова - приступим к установке. Я не стал использовать графическую установку, а выбрал пункт Install.

Первый экран - это выбор языка (я выбрал English), затем предлагается выбрать страну (мой выбор: other - Europe - Russian Federation), далее locale (United States), наконец, раскладка клавиатуры (American English). А вот после этого у меня выпало такое сообщение:

прошу прощения за качество картинки
прошу прощения за качество картинки

Сообщение говорит примерно следующее: некоторое из устройств требует не бесплатное (несвободное) микропрограммное обеспечение. Оно может быть загружено с внешнего носителя, например с флешки. В моем случае у материнской платы только два usb-порта: один занят клавиатурой, другой - флешкой, с которой устанавливается система. Но есть еще и кард-ридер!

Я нашел карту SD и, записав на нее требуемый файл (сслыка на rtl8723befw_36.bin), нажал yes. Теперь будет работать wi-fi модуль. После этого выпадает окно с выбором сетевого адаптера, который будет нами использоваться. Я выбрал wi-fi.

Тут многие скажут - СТОП, wi-fi канал уже проводного и будут правы, но я делаю не профессиональный хостинг, это просто проект для саморазвития, к тому же разве не интересно, как это будет работать после того как установщик подхватил прошивку ;) Итак, выбираю wi-fi модуль и в следующем окне вижу доступные беспроводные сети. Выбираю свою nik’s_wireless, ввожу пароль и все подключилось.

Далее задал имя хоста (debian), имя домена (lan), пароль root, полное имя пользователя (Nikolai Kutuzov), имя учетной записи (nikkutuzov), пароль учетной записи, часовой пояс.

Потом работа с разделами (Guided - use entire disk), выбор диска, на который будем устанавливать систему. Схему я выбрал рекомендуемую (All files in one partition). Нажимаю Finish partitioning and write changes to disk - заканчиваю с разметкой и записываю изменения на диск. Настраиваю менеджер пакетов (Russian Federation - proxy (если не используется прокси, оставьте строку пустой) - deb.debian.org - NO). Я почти у финиша и мне предлагают выбрать какое программное обеспечение установить, я оставил звездочки только у web server и ssh server:

На запрос об установке Grub даю положительный ответ, выбираю диск, на который его установить. На следующем экране вижу сообщение об окончании установки, нажимаю continue и после перезагрузки вижу:

Настройка Wi-Fi

Во время установки я подключился к своей wi-fi сети, но после перезагрузки подключения нет. Первым делом ЛОКАЛЬНО логинимся под root’ом и выполняем команду:

# /sbin/iwconfig

wlp4s0 - это наш интерфейс (у Вас может называться по-другому), он не подключен ни к одной сети. Сейчас все исправим.

Ограничим права пользователей на файл для защиты ключа (pre-shared key) (PSK):

# chmod 0600 /etc/network/interfaces

Отредактируем файл:

# nano /etc/network/interfaces

«auto» подключит интерфейс wlp4s0 при запуске системы. Если этого не требуется, можно удалить или закомментировать эту строку.

для получения адреса по DHCP - используется слово dhcp:

 Для статического адреса исползуется слово static:

Меня интересуют только строки address - это будет ip-адрес этого компьютера, netmask - маска подсети, gateway - основной шлюз и dns-nameservers - ip-адрес dns-сервера (я прописал сервер от google). Далее идут wpa-ssid - это имя Вашей беспроводной сети, а wpa-psk - ее пароль. Я использую статический адрес, который указан на скриншоте. Сохраняем изменения в файле (ctrl+o), закрываем файл (ctrl+x) и перезагружаемся:

# systemctl reboot

Настройка sudo

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

В терминале набираю ssh nikkutuzov@192.168.1.111, где nikkutuzov - имя пользователя (не root’а), а 192.168.1.111 - ip-адрес, указанный мною выше. Ввожу пароль и вуаля - я в системе. Для начала я установил sudo, чтобы не работать под root’ом. Выполняется в три команды:

$ su - чтобы переключиться на root’а и вводим пароль

# apt update - обновить список пакетов

# apt install -y sudo - устанавиваем sudo

 После установки набрал команду:

# visudo

Перехожу на строчку после root ALL=(ALL:ALL) ALL и пишу там nikkutuzov ALL=(ALL:ALL) ALL, где вместо nikkutuzov укажите имя своего пользователя.

 Сохраняю изменения в файле (ctrl+o), выхожу из nano (ctrl+x) и  переключаюсь с root на своего пользователя:

 # su nikkutuzov

Настройка FTP

Чтобы настроить FTP выполняю следующие команды. Кстати, теперь можно ощутить всю прелесть sudo. Воспользуюсь установленным ранее sudo:

$ sudo apt install vsftpd - для установки vsftpd (сслыка на Wikipedia)

$ sudo systemctl status vsftpd

active (running) - говорит, что все работает и все хорошо.

Теперь создам уникального пользователя для ftp:

$ sudo adduser ftpuser

Добавляю созданного пользователя FTP в список разрешенных пользователей для входа:

$ echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

Создам и назначу соответствующие права доступа к каталогу и права собственности:

$ sudo mkdir -p /home/ftpuser/ftp_dir

$ sudo chmod -R 750 /home/ftpuser/ftp_dir

$ sudo chown -R ftpuser: /home/ftpuser/ftp_dir

Потребовалось еще несколько манипуляций для окончательной настройки. Для этого немного поправил файл конфигурации, предварительно установив vim:

$ sudo apt install -y vim

$ sudo vim /etc/vsftpd.conf

Я не буду перечислять каждую строку отдельно, а лучше покажу на скриншотах, что нужно раскомментировать, что изменить и что добавить. Если кто-то захочет повторить мой опыт или просто взять часть информации, я буду только рад, но эта статья не является руководством.

 Перезапустил службу и проверил ее статус:

Проверяю работоспособность:

Настройка mariadb

Следующим этапом была настройка базы данных. Я использую mariadb. Её установка производится простой командой:

 $ sudo apt install -y mariadb-server

После установки нужно выполнить скрипт первоначальной настройки:

$ sudo mysql_secure_installation

Вся предварительная настройка сводится к нескольким ответам:

  1. Ввести пароль root для текущей базы данных (не путать с root’ом системы!). Он пустой, поэтому просто нажимаю enter;

  2. При установке на системы Debian пользователь root MariaDB настроен для аутентификации с помощью плагина unix_socket , а не с помощью пароля. Во многих случаях это обеспечивает более высокую безопасность и удобство, однако это также может осложнить ситуацию, если вам нужно предоставить права администратора внешней программе (например, phpMyAdmin). Поэтому на предложение использовать этот плагин я ответил отрицательно, так как позже планирую поставить phpMyAdmin;

  3. На предложение установить пароль root’а нажимаю n. Дело в том, что в Debian учетная запись root для mariadb тесно связана с автоматизированным обслуживанием системы, так что мы не должны менять этот пароль. Позже я настрою дополнительную учетную запись для доступа через пароль;

  4. На вопрос об удалении анонимных пользователей отвечаю «y»;

  5. На запрет подключения под root’ом удаленно отвечаю «y»;

  6. Удалить тестовую базу данных - «y»;

  7. Наконец, сохраняем изменения, ответив на последний вопрос «y».

Теперь, как я говорил в пункте 3, настраиваю дополнительную учетную запись для входа под паролем:

$ sudo mariadb

MariaDB [(none)]> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> exit

Проверяю:

 $ mariadb -u admin -p

Установка и настройка php и phpMyAdmin

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

$ sudo apt install -y php libapache2-mod-php php-mysql

Потом поправить файл:

$ sudo vim /etc/apache2/mods-enabled/dir.conf

Он должен выглядеть вот так:

Записываем изменения в файле и перезапускаем apache:

Устанавливаю phpMyAdmin:

$ sudo apt install -y phpmyadmin

Во время установки откроется несколько окон настройки, делаем все как на скриншотах (пароль я установил такой же как и при настройке дополнительного пользователя mariadb):

Проверяем сначала apache, он должен был работать с самого начала без какой-либо настройки, для этого в строке браузера набираем ip-адрес нашего «сервера», в моем случае 192.168.1.111:

Работает! Проверим phpMyAdmin - 192.168.1.111/phpmyadmin:

Попробуем залогиниться:

Вся настройка прошла без проблем. Никаких нюансов мне не встретилось. Надеюсь, что у остальных, кто захочет сделать тоже самое по моему описанию, все пройдет также гладко. Далее нам нужен статический ip-адрес - его предоставляет (за отдельную плату, естественно) провайдер, доменное имя (уже лет пять как куплено, но до сего дня так и не использовал) и так как у меня «сервер» за файрволом роутера на openWRT, нужно открыть нужные порты. Это я опишу в следующей статье.

Также будет описан способ настройки виртуальных хостов, получение сертификата для будущего сайта (бесплатно!) и установка wordpress. Информации получилось много, возможно, нужно было разбить на несколько частей, но получилось как получилось.

Список информационных источников:

https://wiki.debian.org/ru/WiFi/HowToUse

https://ru.wikipedia.org/wiki/Vsftpd

https://setiwik.ru/kak-ustanovit-i-nastroit-ftp-server-vsftpd-v-debian-11/

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mariadb-php-lamp-stack-debian9-ru

Комментарии (54)


  1. ZekaVasch
    11.12.2021 14:16
    +20

    В современном интернете так мало инструкций как установить апач, пхп и мускуль.

    Но я рад что из стало на 1 больше.


    1. nikkutuzov Автор
      11.12.2021 14:26
      -4

      Спасибо за коммент. Я описал свой опыт, статья не планировалась быть инструкцией. ;)


      1. Shaz
        11.12.2021 15:49
        +5

        А тогда зачем? Какую пользу для комьюнити он несёт?


        1. nikkutuzov Автор
          11.12.2021 19:01
          -5

          Возможно, он кому-то пригодиться... я так надеюсь.


          1. ZekaVasch
            12.12.2021 00:34
            +5

            Вам при защите диплома задавали главный вопрос? "В чем новизна вашей работы?"

            Или тоже вдруг кому пригодится?


        1. olegkusov
          12.12.2021 11:00
          -9

          Не душни тут ок?


          1. Shaz
            12.12.2021 12:06
            +3

            А то что? Продолжите писать токсичные коменты?


            1. olegkusov
              12.12.2021 13:18
              -4

              Токсичные комменты вы пишите. Вместо благодарностей автору


              1. Shaz
                12.12.2021 13:20
                +1

                Благодарность за копипасту мануала с DO?)

                И таки нет, токсичное поведение тут у Вас.


                1. olegkusov
                  12.12.2021 13:30
                  +1

                  Если не нравится статья, можно ничего не писать ????‍♂️ Я с удовольствием прочитал


                  1. Shaz
                    12.12.2021 14:12
                    +1

                    Не нравятся коментарии? Не читайте комментарии)


    1. eegdude
      11.12.2021 22:32

      This, but unironically


  1. tigreavecdesailes
    11.12.2021 14:26


    1. nikkutuzov Автор
      11.12.2021 14:26
      -1

      Забавно :)


  1. maverickcy
    11.12.2021 14:56
    +7

    Всё, сажусь писать свой опыт замены лампочки B22


  1. Filatto
    11.12.2021 15:01

    Теперь стоит погрузиться в дивный новый мир облачных решений - AWS, Cloudflare, Netlify и т.д. Например бэк - на aws, фронт - на Cloudflare. И там и там - бесплатно


    1. nikkutuzov Автор
      11.12.2021 15:10
      -2

      Все еще впереди.


  1. r8tboy
    11.12.2021 15:01
    +1

    Спасибо за материал. Нет опыта по разворачиванию облака под приложения: с Java, Docker, Tomcat и прочего?


    1. nikkutuzov Автор
      11.12.2021 15:09
      -2

      Спасибо. По разворачиванию облака опыта пока нет :)


  1. nixtonixto
    11.12.2021 15:27

    Тут многие скажут — СТОП, wi-fi канал уже проводного и будут правы

    Устаревшая информация, 802.11ax на выставке CES 2018 разгоняли до 11 Гбит/с, в ноутбуках и роутерах с Wi-Fi 6 достижима скорость выше гигабита. А проводное подключение в массовом сегменте застряло в 1 Гбит/с.


    1. nikkutuzov Автор
      11.12.2021 15:40
      -1

      Но у меня устаревшее оборудование


    1. burst
      11.12.2021 17:23

      А есть реальные данные по отзывчивости? wi-fi всегда страдал значительным увеличением ping`а, я уж не говорю о том, что пиковая пропускная способность очень отличается от постоянной скорости. Одним словом если нужна надежность и безопасность, то медь и оптика лучшее решение по сравнению с wi-fi.


      1. nikkutuzov Автор
        11.12.2021 18:23

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


      1. nixtonixto
        12.12.2021 06:06
        +1

        Вот результат теста AX201 в моём компьютере до сервера провайдера в моём городе, пинг 5 мс. И автору ведь не играть надо, в его случае пинг несущественен. По скорости передачи данных могут быть нюансы, т.к. канал один на все подключенные к роутеру устройства, но для веб-сервера автора это тоже несущественно. В многоэтажке могут мешать соседи, занявшие все каналы, но в нашей на 5 ГГц пока только 2 роутера, все остальные сидят в 2,4 ГГц на модемах провайдера.

        Я не говорю, что нужно срочно переходить на эфир - основная мысль была в том, что вайфай ужЕ не уступает проводному подключению. Основное потребление трафика сейчас - с мобильных устройств, как их подключить по меди или оптике? И медь хороша только до тех пор, пока в доме - не больше 4 устройств, иначе начинается нагромождение свитчей и проводов...


      1. nikkutuzov Автор
        13.12.2021 11:01

        ping за сутки:

        от хоста до роутера
        от хоста до роутера
        от роутера до хоста
        от роутера до хоста

        speedtest:

        Железяка находится на расстоянии 3 - 4 метра от роутера (TP-Link TL-WR1043ND v2 под управлением openWRT). На wi-fi помимо сидят: телевизор, два смартфона, нутбук).


  1. HALM
    11.12.2021 17:30

    Может стоит просто панель управления хостом поставить, зачем эти лишние телодвижения?

    Или как вариант bitrixenv, там красивое меню :)


  1. nikkutuzov Автор
    11.12.2021 18:26

    Вообще, спасибо все вам - тем кто плюсовал, тем, кто минусовал, всем кто хоть немного обратили на статью - очень приятно. Тем более, что это моя первая статья вообще. И спасибо хабру, что он существует. Всем добра и всяческих благ!


  1. Yser
    11.12.2021 20:22
    +2

    У вас ошибка в тексте: Как сделать из ненужного что-то ненужное.

    Если бы не дизайн этого сайта, подумал бы что попал в 2008 год :) Но да "программист С++" который устанавливает Debian из GUI конечно тоже выдает :)


    1. BeMySlaveDarlin
      12.12.2021 14:04
      +1

      Студент же)

      Льет воду ради зачёта)


  1. BigDflz
    11.12.2021 20:51
    -1

    для полноты картины было б хорошо и почтовый север поставить...

    а так надо писать статью по итогам года работы сервера - когда проявятся все взломы php.
    и будет опыт в настройке apache


  1. BigDflz
    11.12.2021 20:55

    а так идея хорошая, вот и я не отказался от подобного железа, а то системник и шумит и кушает...


    1. nikkutuzov Автор
      11.12.2021 22:53

      Благодарю, почтовый в планах… Про системник верно подмечено.


      1. zorn-v
        12.12.2021 18:30

        почтовый в планах

        `apt install exim4 && dpkg-reconfigure exim4-config`

        Выбрать первый пункт. Там что то вроде "internet site, allow to spam" (send emails или типа того :)


  1. 321785
    11.12.2021 23:30

    Ладно пусть будет +1 инструкция по установке LAMP, их же так мало в этих наших интернетах....

    У меня только один вопрос, зачем? Зачем вы поднимаете из пучин забвения демона FTP? Чем вам SFTP не угодил?


    1. nikkutuzov Автор
      12.12.2021 08:16

      По скрину в статье видно, что я пользуюсь sftp, а ftp я настроил, чтоб попробовать сделать для него шифрование трафика. Так сказать для разминки.


      1. zorn-v
        12.12.2021 18:36

        По скрину в статье видно, что я пользуюсь sftp

        Где ?

        FTP протокол не позволяет шифровать трафик. Он должен быть забыт.

        Вам правильно указали на ненужность этого действия (установки *ftpd на 21 порт).


        1. nikkutuzov Автор
          12.12.2021 19:59

          Где ?


          1. zorn-v
            12.12.2021 20:17

            И правда пропустил. Наверное потому что это в разделе настройки FTP.

            А теперь объясните, какую службу вы проверяли на скрине ? sshd же ? )


            1. nikkutuzov Автор
              12.12.2021 21:38

              С sshd прямо в точку! Прошу прошения за нелогичное изложение.


        1. nikkutuzov Автор
          12.12.2021 22:13

          По поводу шифрования:

          ...supports TLS… я что-то неправильно понял?


          1. zorn-v
            12.12.2021 22:48

            А зачем "it supports" если по факту вы пользуетесь нормальным ssh ?

            Ну можно еще пачку всякого г... наставить, но не надо это "для начинающих" делать. Они же тупо повторять будут.

            В итоге после вашего "мануала", на сервере висит vsftpd...

            PS. И нафиг это гавно в ввиде FTPS и прочего, если есть SFTP из коробки ?

            https://ru.wikipedia.org/wiki/FTPS
            Так же на помойку )

            Хотя был не прав, FTP поддерживает шифрование... через жопу )

            Любой Man In The middle и все...


            1. nikkutuzov Автор
              12.12.2021 23:24
              -1

              Согласен. Но хотелось старый ftp с шифрованием попробовать. Кстати только что попробовал:

              Без шифрования
              Без шифрования

              Дает:

              С шифрованием:

              С шифрованием
              С шифрованием

              дает:


              1. zorn-v
                12.12.2021 23:32

                Странные у вас выводы "надо попробовать гавнище", когда вам говорят - НЕ СТАВЬ ЭТО НА СЕРВЕР.


                1. nikkutuzov Автор
                  12.12.2021 23:36

                  Отключу обязательно ;) Спасибо за feedback. для меня это очень важно.


  1. pae174
    11.12.2021 23:37
    +1

    1) Вы, судя по тексту, собрались выставить apache голой жопой непосредственно в интернет. Это чревато простейшими атаками типа медленных запросов, которые вам легко может напулять любой скрипт-кидди. Если вам кажется, что вы никому не нужны и всё такое, то это широко распространённое заблуждение.

    2) тема проброса портов не раскрыта. "хост" сидит на адресе из приватного блока. Значит сверху должна быть ещё какая-то коробка с NAT. У неё, кстати, очень неожиданно могут случиться какие-нибудь лимиты на размер таблицы трансляции или что-нибудь в этом духе. Особенно прикольно будет, если эта коробка провайдерская а не ваша.

    3) FTP? Серьёзно? Зачем FTP если уже есть SSH? Проброс портов на FTP сильно зависит от возможностей коробки с NAT. Легко может оказаться, что FTP клиент снаружи не сможет в активный режим из-за своего фаерволла а в пассивный режим из-за вашего.

    4) Стандартные системные утилиты не выбраны на этапе установки. Это может аукнуться потом при администрировании.


    1. ctocopok
      11.12.2021 23:50

      Критикуя - предлагай! Не помню, где я этот лозунг впервые вычитал, но мне он понравился.

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


      1. pae174
        12.12.2021 01:12

        Под FreeBSD для этого есть accept filters / http ready. Под Linux неполноценным аналогом является включение опции TCP_DEFER_ACCEPT, но по сравнению с http ready это полумера.

        Второй вариант это Nginx с включенной буферизацией запросов.

        Ещё можно под Cloud Flare хост поставить. Надо только на фаерволле закрыть tcp/80 от всех адресов кроме Cloud Flare.


    1. nikkutuzov Автор
      12.12.2021 08:02

      Спасибо за вопросы, попробую ответить.

      1) апач за роутером с NAT

      2) в следующий раз планирую описать в том числе и проброс портов на моем роутере под управлением openWRT

      3) именно с пассивным режимом и столкнулся на примере filezilla - это тоже будет описано.

      4) недостающее всегда можно установить отдельно как мне кажется.


      1. zorn-v
        12.12.2021 18:44

        апач за роутером с NAT

        Я думаю имелось ввиду "почему не nginx ?"

        именно с пассивным режимом и столкнулся на примере filezilla - это тоже будет описано.

        Лучше не описывайте, а выкиньте FTP на помойку (где ему и место).

        недостающее всегда можно установить отдельно как мне кажется.

        Тут согласен, претензия мимо. Более того, мне даже больше по душе "доустанавливать когда пригодится", а не просто "что предлагает установщик". В убунте например установщик docker-compose из snap ставит, который я недолюбливаю. `apt install docker-compose` мне не сложно потом набрать.


        1. nikkutuzov Автор
          12.12.2021 19:51

          1. Про apache vs nginx: выбрал апач, просто так "звезды сошлись..." )))

          2. Согласен, но хотелось попробовать - я попробовал

          3. Я думаю, многие такого же мнения

          Спасибо за уделенное внимание.


  1. glestwid
    12.12.2021 01:35

    Смущает то, что на первой фотке дисплея нет от слова совсем, в тексте он не упомянут тоже, а дальнейшие скрины явно сдернуты с какого-то экрана. Как автор умудрился материнскую плату от ноута завести без дисплея? Или внешнего моника оказалось достаточно?


    1. pae174
      12.12.2021 02:31

      дальнейшие скрины явно сдернуты с какого-то экрана

      Это скрины локальной виртуалки Oracle Virtual Box.


      1. nikkutuzov Автор
        12.12.2021 08:06

        Совнршенно верно. Это дублировал специально, чтобы телевизор не фотографировать, хотя несколько раз все равно пришлось…


    1. nikkutuzov Автор
      12.12.2021 08:04

      Внешнего монитора по hdmi оказалось достаточно. Если совсем откровенно, то телевизора )))