Пишем сервер под линукс

Обновлено: 06.07.2024

Качаем образ Ubuntu Server и записываем его на флешку:

Далее потребуются ненужный системный блок, монитор, мышка и клавиатура.

Ставим Ubuntu, в качестве имени хоста указываем, например, ubuntu-server , не забываем отметить Install OpenSSH Server , так как для управления сервером мы будем использовать ssh. После успешной установки перегружаемся.

Ставим на сервере Avahi Daemon, который делает машину доступной в локальной сети по имени хоста как <имя-хоста>.local .

Проверяем запущен ли сервис:

В Ubuntu особой настройки Avahi не требуется.

Делаем файлопомойку. У меня, например, есть несколько HDD, которые я объеденил в RAID-0 массив. Данные в RAID-0 записываются поочередно на два и более устройств, что увеличивает скорости чтения и записи. Недостатком является утеря данных при выходе одного из дисков, но для файлопоймойки это не принципиально.

Для общего доступа к файлам юудет использоваться NFS. Альтернативой NFS является Samba, которая сложна в настройке и без тонкой конфигурации показывает довольно низкую скорость передачи данных 7-11 MiB/s.

В /etc/exports добавляем строку:

И чтобы применить изменения вызываем:

Lines below this comment will be discarded

Подключение к серверу

Avahi нужен для того чтобы заработало подключение к хосту по имени (этот шаг можно пропустить и в дальнейшем подключаться по IP).

Так же нужно отредактировать /etc/nsswitch.conf , строчку hosts , добавив mdns_minimal [NOTFOUND=return] до resolve :

Запускаем Avahi демона:

Подлючение по SSH

Генерируем пару RSA-ключей для подключения по SSH (если требуется):

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

Подкоючаемся к серверу:

Способы подключения по SSH

Запускаем PowerShell от имени администратора и ставим Putty:

image

Если у вас установлен WSL, то одключение к серверу ничем не будет отличаться от способа для Linux.

image

Доступ к расшаренным данным

image
image

Баг моей версии Windows: если при подключении сетевого диска указать имя хоста, то в проводнике он будет отображаться как Disconnected Network Drive.

Чтобы создать терминальный, файловый (FTP) или почтовый сервер на Linux, надо уметь работать в этой операционной системе. Иначе разобраться будет сложно. ОС не нужен мощный компьютер. Потому что она не расходует лишние ресурсы на графическое оформление. Дистрибутивы Линукса можно развернуть даже на старом ПК. Поэтому для создания различных серверов часто используют Linux или Ubuntu Server.

Ubuntu Server

Об этом написано много различной литературы. Некоторые книги о Линуксе насчитывают тысячу страниц. Работать придётся через терминал и все команды вводить вручную. Но всё же вы сможете сделать небольшой Linux-сервер своими руками, который будет включать файловое хранилище, Web-сервисы и почтовый протокол.

Установка и настройка Ubuntu Server

Ubuntu Server создана на базе операционной системы Linux. Для её работы не нужен современный процессор, хорошая видеокарта или большой объём оперативной памяти. С Линукс можно развернуть сервер даже на старом ноутбуке. И в нём будут все нужные компоненты: почта, FTP, Web.

У Ubuntu упрощённый интерфейс. В нём нет никаких графических излишеств. Эта ОС прекрасно подходит, чтобы сделать Linux-сервер своими руками. С ней ресурсы компьютера будут использоваться для нужд домена. Ведь ей для работы нужно совсем немного.

Её установка проходит так:

  • Выберите язык и регион, в котором проживаете.
  • Придумайте имя администратора. Оно используется для управления сервером.
  • Также задайте имя пользователя в поле «Username for your account». Под этим аккаунтом вы будете общаться с техподдержкой Ubuntu.

Имя пользователя в Ubuntu

Указываем имя пользователя в Ubuntu

Пароль учетной записи

Вводим пароль учетной записи

  • Укажите домен, если он есть. На нём будут находиться все сервисы: файловый (FTP), почтовый, хостинг для сайтов и так далее.
  • Подождите, пока установится система.
  • После этого она предложит дополнительные компоненты.

Вот список того, что необходимо для сервера Linux и его полноценной работы:

  • Open SSh. Используется для удалённого администрирования. Пригодится, если вы решите управлять сервисом с другого компьютера. Тогда на ПК с Линуксом можно будет отключить монитор и видеоадаптер.
  • LAMP. Комплекс утилит Linux, который включает Apache (Web-сервер). MySQL (базы данных) и PHP (язык программирования для CMS). Эти компоненты нужны для создания управляющего интерфейса.

Далее указано то, что устанавливать необязательно. Выбор дистрибутивов опционален и зависит от того, что вы хотите в итоге получить.

  • Samba file server. Позволяет настроить обмен файлами между компьютерами. Если вам нужен FTP-сервер, выберите этот пункт.
  • Virtual Machine host. Устанавливайте, если собираетесь пользоваться возможностями виртуализации.
  • Print server. Сетевые принтеры.
  • DNS server. Система доменных имён. С ней можно распознать IP-адрес по имени компьютера и наоборот.
  • Mail server. Почтовый сервер.
  • PostgreSQL database. Объектно-реляционные базы данных.

Выберите то, что вам нужно, и подтвердите установку. При первом запуске надо будет ввести логин администратора и пароль. Откроется консоль. Она похожа на командную строку Windows или интерфейс операционной системы MS DOS.

Консоль Ubuntu

Изначально вам надо будет проверить наличие обновлений. Введите команду «Sudo apt-get update» или «Sudo apt-get upgrade» без кавычек. После апдейта можно заняться настройкой всех компонентов серверов: FTP, почтового, Веб.

Для Ubuntu существует псевдографический интерфейс — Midnight Commander. Это аналог оболочки Norton Commander, которая разработана для системы MS DOS. С таким интерфейсом легче работать — всё нагляднее, чем в консоли.

Запуск терминала Linux

В современных Linux вместо консоли используется терминал. Чтобы в него зайти:

  1. Откройте «Приложения».
  2. Нажмите «Стандартные».
  3. Там будет «Терминал».

Терминал в Linux

Терминал в Linux

В него можно вводить команды так же, как в Ubuntu Server.

  • Чтобы установить компоненты LAMP (если их ещё нет), надо последовательно ввести команды «sudo apt-get update», «sudo apt-get install tasksel» и «sudo tasksel install lamp-server». После каждой нажимайте Enter.
  • Чтобы загрузить Open SSh, введите «sudo apt-get install openssh-server».
  • Чтобы поставить Samba file server, напишите «sudo apt-get install samba».

При установке MySQL из пакета LAMP нужно будет задать пароль администратора, для SQL.

Локальный Web-сервер

Для создания Web у сервера должен быть свой выделенный IP. Тогда после установки LAMP по этому IP-адресу будет доступна тестовая страница Apache. Это и есть будущий Веб. В дальнейшем на него можно будет поставить FTP, базы данных, почтовый протокол. Для настройки Web-сервера:

  • Установите phpMyAdmin. Для этого в терминале или в консоли введите друг за другом введите «sudo apt-get install phpmyadmin»

Команда «sudo apt-get install phpmyadmin»

Команда «sudo apt-get install phpmyadmin»

  • И потом «sudo service apache2 restart».
  • Компонент загрузится. Apache будет перезагружен. Дальнейшие действия зависят от версии операционной системы.

Если у вас Ubuntu 13.1 и выше, используйте команды:

  1. sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
  2. sudo a2enconf phpmyadmin
  3. sudo /etc/init.d/apache2 reload

Вбивайте их последовательно друг за другом, после каждой нажимайте Enter.

В Ubuntu 16.04, нужны другие указания:

  1. sudo apt-get install php-mbstring php-gettext
  2. sudo phpenmod mcrypt
  3. sudo phpenmod mbstring
  4. sudo systemctl restart apache2
  • Конфигурация и данные о ней находятся в папке сервера Apache «etc/apache2/». Apache2.conf — конфигурационный файл для дистрибутива
  • В директориях «mods-available»/«sites-available» и «mods-enabled»/«sites-enabled» находятся моды и сайты.
  • В Ports.conf расписаны прослушиваемые порты.
  • Если вы добавите после команды «sudo /etc/init.d/apache2» слово «Stop», Apache приостановит работу. Если «Start» — снова запустится. Если «Restart» — перезагрузится.
  • Чтобы самостоятельно выбирать путь для сохранения сайтов, последовательно введите в терминал «sudo a2enmod rewrite» и «sudo a2enmod userdir».

Каждый раз после внесения каких-либо изменений надо перезапускать службу командой «Restart».

Почтовый сервер

  • Установите компонент Postfix. Для этого наберите в консоли «sudo apt-get postfix».
  • Когда он загрузится, напишите команду «sudo /etc/initd/postfix start». Сервис начнёт работать.
  • В Postfix уже прописаны параметры, которые нужны для полноценной работы с протоколом SMTP. Но всё же не помешает небольшая настройка.
  • Откройте файл /etc/postfix/main.cf.
  • Найдите в нём значение «mydomain =». После знака «=» напишите имя домена.
  • Потом отыщите «myhostname =». И введите имя машины.
  • Теперь почтовый сервер может отправлять письма другим компьютерам, которые находятся с ним в одной сети. Чтобы он мог посылать корреспонденцию и на другие домены в интернете, в файле «main.cf» найдите строчку «inet_interfaces =». Поставьте после неё слово «all».
  • В переменной «mynetworks =» пропишите диапазон адресов всех компьютеров вашей подсети (например, 127.0.0.0/8).

Не рекомендуется открывать доступ к серверу извне. Такие «публичные» ресурсы очень часто используются для рассылки спама. Из-за этого ваш домен может оказаться в чёрном списке у других почтовых сервисов.

Файловый сервер

FTP-сервер Linux может понадобиться для обмена документами и загрузки файлов. Существует несколько версий таких ресурсов: vsFTPd, Samba, proFTPd.

Подробнее остановимся на vsFTPd. Его можно установить и запустить одной командой — «sudo apt-get install vsftpd». Дальнейшие настройки зависят от ваших предпочтений и от того, какой сервис вы хотите сделать. Для изменения параметров могут понадобиться права администратора.

Команда «sudo apt-get install vsftpd»

Команда «sudo apt-get install vsftpd»

  1. Сразу после загрузки программы система создаёт нового пользователя и добавляет в домашнюю директорию папку, которая предназначена для работы с серверным хранилищем. Также в каталоге «etc» появляется файл «ftpusers». Туда можно добавлять пользователей, которым запрещён доступ к файлам.
  2. После установки лучше сменить директорию, в которой должны находиться файлы, в папку «var». Для этого от имени администратора напишите команду «usermod -d /var/ftp ftp && rmdir /home/ftp».
  3. Создайте новую группу пользователей. Например, «userftp». Напечатайте в консоли «addgroup userftp».
  4. Добавьте в неё новый аккаунт (для простоты назовём пользователя и группу одинаково). Используйте команду «useradd -a /var/ftp -g userftp userftp». Она заодно создаёт пользователя. Чтобы включить в группу уже существующий никнейм, вместо «useradd» напишите «usermod».
  5. Надо придумать пароль новому пользователю. Введите в терминале «passwd userftp».
  6. Напечатайте «chmod 555 /var/ftp && chown root:userftp /var/ftp», чтобы предоставить аккаунту доступ к корневой папке файлового сервера.
  7. Теперь создайте публичную директорию. Последовательно введите «mkdir /var/ftp/pub» и «chown userftp:userftp /var/ftp/pub».

Изначально FTP запускается в автономном режиме. У неё есть скрипт, который играет роль демона. При такой функциональности доступно несколько команд. Они вводятся после строки «sudo service vsftpd».

Команда «sudo service vsftpd»

Команда «sudo service vsftpd»

  • Stop и Start. Отключение и включение.
  • Restart и Reload. Перезапуск. Нужен для применения новых настроек. Разница между командами в том, что во второй перезагрузка происходит без полного отключения.
  • Status. Информация о состоянии.

Дальнейшая настройка сервера заключается в переписывании файла конфигурации, который находится в etc/vsftpd.conf. У него простая и понятная структура. Разобраться в нём достаточно просто. Хотя для этого нужны определённые знания. Перед изменением этого файла имеет смысл сделать его резервную копию. Чтобы в случае выявления ошибок можно было всё восстановить. Введите команду «cp /etc/vsftpd.conf /etc/vsftpd_old.conf» и информация будет сохранена.

После этого можно приступать к редактированию.

  • В параметре «listen=» напишите «YES». Тогда сервер будет работать в независимом режиме.
  • «Local_enable» разрешает вход локальным пользователям.
  • «Write_enable» даёт им доступ в домашние каталоги.
  • «Anonymous_enable». Можно ограничить права анонимных пользователей, если поставить «NO». Также есть опция «no_anon_password» — анонимные входят без пароля. Её тоже можно запретить.

Если вы хотите делать публичный сервер, то после строки «listen» надо добавить несколько дополнительных параметров.

Терминальный сервер

Терминальный сервер на Linux предназначен для предприятий и офисов, все компьютеры в которых объединены в одну сеть. Очень удобно, когда с любого ПК (если у него есть доступ) организации можно зайти на терминал. Это открывает большие возможности для удалённого администрирования.

Для такой задачи подходит LTSP — Linux Terminal Server Project. Программа есть в стандартном пакете Ubuntu. Чтобы её установить:

  1. Введите команду «ltsp-server-standalone».
  2. Потом напишите «apt-get update && apt-get install ltsp-server-standalone».
  3. Подождите, пока всё загрузится и обновится.
  4. Теперь надо поставить клиентскую систему. Напечатайте «ltsp-build-client».
  5. Затем «ltsp-build-client -dist trusty -arch i386 -fat-client-desktop lubuntu-desktop».
  6. Используйте команду «debootstrap», и дистрибутив автоматически развернётся в директорию «opt/ltsp/i386».

Linux Server может работать даже на слабых ПК. Поэтому его очень часто используют для создания серверов и удалённого администрирования. На этой операционной системе делают почтовые сервисы, FTP-хранилища, терминалы.

Web сервер

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

Наибольший плюс ручной установки и настройки – возможность оптимизировать систему под свои задачи, установив только нужные модули. Второй плюс – после такой операции вы будете больше знать.

В первую очередь необходимо установить операционную систему. Здесь вы можете выбирать, какая вам больше нравится, главное, чтобы не было графического окружения – постоянная работа на сервере не предполагается, а лишние ресурсы лучше отдать основным задачам. Простые операции можно сделать и в консоли. Лично мои предпочтения – последний выпуск Ubuntu с длительной поддержкой, на текущий момент это 16.04.3. Также на сервер можно поставить Debian – он при выборе конфигурации установки позволяет установить только серверную часть. Обязательно надо установить сервер OpenSSH для удалённого управления, всё остальное, включая LAMP, не надо – нужные модули добавим вручную немного позже.

Установка Ubuntu уже описана на этом сайте, с тех пор мало что изменилось. Единственно различие – для серверной версии установка пройдёт в текстовом режиме, а все «окна» будут отрисованы с помощью псевдографики. IP-адрес в таких случаях задаётся статический, поэтому в примерах будем использовать его, например, 10.1.1.100.

После установки у нас возможны два варианта – к серверу ещё подключены клавиатура и мышь, или же от него сразу отключили всю периферию, подключили к локальной сети и к питанию и запустили. Разницы в выполнении операций не будет, отличаться будет только способ входа. При подключенной периферии просто введите логин и пароль (при вводе пароля в консоли Linux-систем не отображаются даже звёздочки), при их отсутствии подключитесь с другого компьютера. Для Windows (и для Linux тоже) есть программа клиент Putty, также в Linux можно набрать в терминале следующую строку:

после чего ввести пароль. «root» – учётная запись администратора Unix-подобных систем.

Для начала установим веб-сервер:

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

На вопрос о sudo сразу отвечаю – сейчас мы и так работаем с правами администратора, поэтому в этой команде нет смысла.

В зависимости от операционной системы страница может быть разной – от простого «It works!» («Оно работает!») до технической информации по настройке.

Минимальная конфигурация есть, но этого мало – в таком варианте будут работать лишь статичные сайты (ну и JavaScript, который выполняется в браузере пользователя), что нас явно не устроит. Поэтому продолжаем дело. Теперь очередь сервера баз данных MySQL:

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

И последний шаг – установка поддержки языка PHP:

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

В такой конфигурации веб-сервер уже может работать, только ему ещё не хватает нескольких вещей. Во-первых, это ряд дополнительных модулей для PHP (можно подключить все или почти все, но лучше только то, что реально будем использовать). Во-вторых, надо обеспечить FTP-подключение к серверу для загрузки на него файлов сайта. Но об этом в следующей части.

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

В качестве основной рабочей системы у меня Elementary OS, которая постоена на базе Ubuntu. Установить в неё VirtualBox можно из штатного AppCenter, либо, если хочется новейшую версию, тогда следуя инструкциям с официального сайта. В качестве системы для веб-сервера традиционно Debian. Я использовал для установки образ debian-*-netinst.iso . Найти его или другой подходящий вам можно здесь.

В предыдущей статье я уже описывал настройку веб-сервера на Debian, установленный в VirtualBox. Тогда в качестве основной системы была Windows 10. В этой статье я не буду повторяться. Цель приследуется аналогичная. Установка Debian в виртуальную машину — один к одному. Поэтому все подробности там. Здесь я уделю внимание лишь деталям, которые имеют место именно в случае работы под Linux. Итак, порядок будет такой:

  • Устанавливаем Debian на вартуальную машину. Всё как и в предыдущей статье, но немного по-другому настраиваем проброс портов. Смотрите ниже.
  • Настраиваем в виртуальной машине доступ по SSH для root, устанавливаем дополнения гостевой ОС, появляется общая папка. Настраиваем веб-сервер и т.д. Внутри виртуальной машины ничего нового, всё аналогично можно делать! В том числе аналогично размещаются и настраиваются ваши локальные сайты. Едиственное, я сейчас начал использовать PHP7, вместо PHP5. Если для вас это актуально, то тоже смотрите ниже.
  • Настройка основной системы Linux, чтобы в ней без шаманств открывались сайты, работающие на локальном веб-сервере виртуальной машины.

Hosts-файл

В основной системе Linux ваши локальные сайты нужно будет прописывать в файл /etc/hosts в таком виде:

Оно сразу начинает работать.

Проброс портов

В Linux не получится пробросить для web из VirtualBox порт с 80 на 80. Точнее, это можно сделать, но для этого потребуется каждый раз запускать VirtualBox с правами root. Конечно, такое нафиг не надо, поэтому пробрасываем порт с 80 на 3080:

Пробрасываем порт с 80 на 3080

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

Чтобы этого не делать и открывать локальные сайты просто по адресу потребуется настроить для них прокси в Nginx. Обращаю внимание, что речь идет об Nginx в основной системе, а не в виртуальной. Чтобы не мучиться с sudo сразу:

Создаём файл /etc/nginx/sites-available/webdev с настройками:

Таким образом, для всех своих локальных сайтов прописываем настройки прокси в одном файле. Подключаем настройки:

Все! Теперь локальные сайты должны открываться по простому адресу.

PHP 7

За PHP 7 будущее и сайты на нём работают гораздо быстрее. Поэтому его стоит однозначно использовать для новых сайтов и, по возможности, переводить на него старые. Сейчас актуален PHP 7.1. Эта версия ещё отсутствует в репозиториях Debian 8.7.1, поэтому его установка чуточку сложнее. Ещё я сразу предупреждаю, что в отношении других пакетов, которые вы будете ставить на веб-сервер, тоже не помешает проявлять осторожность. Связанные с PHP пакеты из репозитория актуальной версии Debian по умолчанию будут пытаться установить вам заодно PHP 5, ведь они будут видеть, что его нет в вашей системе. В приципе, таких пакетов обычно не много, и эту небольшую сложность тоже вполне можно пережить. Перед установкой:

Я не рекомендую производить установку PHP 7.1 одной командой:

Она сделает всё верно, но установит заодно и всякий хлам, типа Apache. А он нафиг не нужен на современном веб-сервере, использующем Nginx и php-fpm. Поэтому ставим только то, что реально нужно:

Требуемые дополнительно модули PHP устанавиливаются, как и раньше, просто везде добавляется 7.1, например:

Чтобы на ваших локальных сайтах работал PHP 7.1 нужно немного изменить их конфиги Nginx. Вот простейший пример из предудущей статьи:

Меняем одну строчку, было:

После не забудьте перезапустить Nginx.

SSHFS

SSHFS — это Secure SHell FileSystem, программа позволяющая монтировать удаленную файловую систему. Это можно использовать вместо «Общих папок» в VirtualBox.

Работает это очень быстро. Хотя у меня и случались проблемы, когда смонтированный каталог отваливался. Обычно это происходило, когда я начинал работать с каталогом, в котором очень много файлов. Типа проекта на 1С-битрикс, где порядка 500 тысяч файлов.

Важно указать uid — это id вашего пользователя. В данном случае нет никаких проблем с записью. В смонтированном каталоге можно спокойно работать.

NFS — это Network File System, протокол распределенной файловой системы, позволяющий получить доступ к файлам по сети. Смысл тот же. Можно использовать вместо «Общих папок» в VirtualBox.

Читайте также: