Server unix: Вы заблудились на сайте компьютерного мастера

Настройка Unix-сокетов и нескольких рабочих процессов

Настройка Unix-сокетов для веб-сервиса

Выполненные ранее настройки показывают, как запустить веб-сервис tessa с привязкой к порту localhost:5000, после чего веб-серверы Nginx или Apache работают как reverse proxy на этот порт. Работу веб-сервиса можно ускорить при высокой нагрузке, если настроить использование unix-сокетов. Также это позволяет упростить настройку нескольких рабочих процессов.

При настройке сервиса tessa необходимо указать имя сокета tessa.sock в настройке ExecStart. При условии, что настройки по ссылке уже выполнены, откройте для редактирования конфигурационный файл сервиса:

sudo nano /etc/systemd/system/tessa.service

Добавьте перед строкой ExecStart следующую:

ExecStartPre=/bin/rm -f /home/tessa/tessa/sockets/tessa.sock

Замените существующую строку ExecStart на следующую:

ExecStart=/home/tessa/tessa/web/Tessa. Web.Server /home/tessa/tessa/sockets/tessa.sock

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Для Calculate Linux и системы инициализации OpenRC:

sudo nano /etc/init.d/tessa

Замените строку с настройкой DAEMONARGS на следующую строку:

DAEMONARGS="/home/tessa/tessa/sockets/tessa.sock"

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Для всех дистрибутивов:

Создайте папку, содержащую файл сокета. Доступ на чтение и на запись должен быть у пользователя tessa и у группы www-data (или у того пользователя, от имени которого запускаются сервис tessa и веб-серверы Nginx или Apache).

sudo usermod -a -G www-data tessa

mkdir ~/tessa/sockets

sudo chgrp www-data ~/tessa/sockets

sudo chmod g+rwxs ~/tessa/sockets

Перезагрузите конфигурационные файлы сервиса и перезапустите веб-сервис tessa:

sudo systemctl daemon-reload

sudo systemctl restart tessa

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

sudo systemctl status tessa

Если информация по сервису не закроется сама, нажмите [q].

Для Calculate Linux и системы инициализации OpenRC:

sudo /etc/init.d/tessa restart

Проверьте статус сервиса, отобразив содержимое файла лога:

cat ~/tessa/logs/tessa.log

Если последняя отображённая строка выглядит как “Application started”, то сервис успешно перезапущен.

Настройка Unix-сокетов для веб-сервера Nginx

Если вы используете веб-сервер Nginx, то помимо настройки веб-сервиса также требуется настроить проксирование трафика по сокету к веб-сервису tessa.

Откройте конфигурационный файл:

sudo nano /etc/nginx/sites-available/default

Найдите строку:

proxy_pass http://localhost:5000/;

Замените её на:

proxy_pass http://unix:/home/tessa/tessa/sockets/tessa.sock:/;

Important

В случае, если вы используете PathBase, удостоверьтесь, что он так же передается и в proxy_pass (например: http://unix:/home/tessa/tessa/sockets/tessa. sock:/awesome_path_base; ).

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Перезапустите веб-сервер Nginx:

sudo systemctl restart nginx

Теперь проверьте функционирование системы.

Настройка Unix-сокетов для веб-сервера Apache

Если вы используете веб-сервер Apache, то помимо настройки веб-сервиса также требуется настроить проксирование трафика по сокету к веб-сервису tessa.

Note

Для использования Unix-сокетов требует Apache версии 2.4.7 или старше.

Откройте конфигурационный файл:

sudo nano /etc/apache2/sites-available/000-default.conf

Найдите строку:

ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/

Замените её на:

ProxyPass / unix:/home/tessa/tessa/sockets/tessa.sock|http://localhost/ ProxyPassReverse / unix:/home/tessa/tessa/sockets/tessa.sock|http://localhost/

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Доступ к файлу сокета /home/tessa/tessa/sockets/tessa.sock должен иметь одновременно и веб-сервис tessa, и веб-сервер Apache. Для этого необходимо настроить права доступа. Для упрощения настройки, для запуска веб-сервиса tessa использовалась учётная запись пользователя tessa. Веб-сервер Apache по умолчанию запускается от имени группы www-data. Настройте запуск Apache от имени того же пользователя tessa, чтобы доступ к файлу сокета был гарантирован без дополнительных настроек.

Tip

Для повышенной безопасности веб-сервера настройте права для запуска веб-сервиса tessa от имени группы www-data, тогда не следует изменять пользователя для веб-сервера Apache, пропустите следующие настройки.

Откройте конфигурационный файл envvars:

sudo nano /etc/apache2/envvars

Найдите строки:

export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data

Замените в них группу www-data на учётную запись пользователя tessa:

export APACHE_RUN_USER=tessa export APACHE_RUN_GROUP=tessa

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Также измените права доступа для следующих папок на пользователя tessa (укажите имя дважды через точку, если пользователь называется иначе):

sudo chown tessa.tessa -R /var/lock/apache2 /var/log/apache2

Перезапустите веб-сервер Apache:

sudo systemctl restart apache2

Перезапустите веб-сервер Apache:

sudo systemctl restart apache2

Теперь проверьте функционирование системы.

Настройка нескольких рабочих процессов веб-сервиса

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

Остановите процесс веб-сервиса tessa, настроенный ранее, и отключите его автозапуск.

sudo systemctl stop tessa && sudo systemctl disable tessa

Tip

Если вы уже настроили и запустили веб-сервис для Unix-сокетов, то также явно удалите файл сокета, созданный веб-сервисом: sudo rm /home/tessa/tessa/sockets/tessa. sock

Если папка, содержащая файлы сокетов, ещё не создана, то создайте её. Доступ на чтение и на запись должен быть у пользователя tessa и у группы www-data (или у того пользователя, от имени которого запускаются сервис tessa и веб-серверы Nginx или Apache).

sudo usermod -a -G www-data tessa

mkdir ~/tessa/sockets

sudo chgrp www-data ~/tessa/sockets

sudo chmod g+rwxs ~/tessa/sockets

Создайте шаблон SystemD-сервиса, который позволяет запускать несколько сервисов параллельно. В этом примере каждый сервис работает для своего файла .sock.

sudo nano /etc/systemd/system/[email protected]

Вставьте следующее содержимое:

[Unit] Description=Syntellect TESSA process %i

[Service] WorkingDirectory=/home/tessa/tessa/web ExecStartPre=/bin/rm -f /home/tessa/tessa/sockets/tessa.%i.sock ExecStart=/home/tessa/tessa/web/Tessa.Web. Server /home/tessa/tessa/sockets/tessa.%i.sock PIDFile=/var/run/tessa.%i.pid Restart=always RestartSec=10 SyslogIdentifier=tessa.%i User=tessa UMask=002 Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install] WantedBy=multi-user.target

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Теперь настройте автозапуск нескольких процессов веб-сервиса и запустите их. В примере ниже указано 4 процесса, но вы легко можете увеличить их количество до требуемого. Мы рекомендуем запускать один процесс на каждое физическое ядро CPU (без учёта hyper-threading).

sudo systemctl enable tessa@{1..4} && sudo systemctl start tessa@{1..4}

Статус всех процессов можно вывести командой:

sudo systemctl status tessa@{1..4}

Если для всех процессов выведен зелёный кружок, то веб-сервис настроен корректно. Используйте стрелки для прокрутки вниз. Чтобы закрыть окно, нажмите [q].

Настройка нескольких рабочих процессов для веб-сервера Nginx

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

Откройте конфигурационный файл:

sudo nano /etc/nginx/sites-available/default

Добавьте в его начало перечисление всех файлов .sock в зависимости от количества настроенных процессов. Для заданных выше 4 процессов настройки выглядят так:

upstream tessa { ip_hash; server unix:/home/tessa/tessa/sockets/tessa.1.sock; server unix:/home/tessa/tessa/sockets/tessa.2.sock; server unix:/home/tessa/tessa/sockets/tessa.3.sock; server unix:/home/tessa/tessa/sockets/tessa.4.sock; }

Note

Указанный параметр ip_hash позволяет “привязывать” сессии пользователей к рабочим процессам, чтобы последовательные запросы от одного и того же пользователя переходили к одному и тому же процессу. Это ускоряет обработку запросов для веб-сервиса tessa.

Найдите настройку proxy_pass:

proxy_pass ...;

И замените её на:

proxy_pass http://tessa;

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Настройте количество рабочих процессов веб-сервера Nginx, каждый из которых будет проксировать трафик к одному из процессов веб-сервиса tessa.

Откройте конфигурационный файл nginx.conf:

sudo nano /etc/nginx/nginx.conf

Найдите строку вида:

worker_processes ...;

Укажите такое же количество рабочих процессов, которые указали ранее. В данном примере это 4 процесса:

worker_processes 4;

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Перезапустите веб-сервер Nginx:

sudo systemctl restart nginx

Теперь проверьте функционирование системы.

Настройка нескольких рабочих процессов для веб-сервера Apache

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

Установите плагин с алгоритмом балансировщика запросов:

sudo a2enmod lbmethod_byrequests

Откройте конфигурационный файл:

sudo nano /etc/apache2/sites-available/000-default.conf

Добавьте в его начало перечисление всех файлов .sock в зависимости от количества настроенных процессов. Для каждого из процессов необходимо указать уникальный адрес сервиса. Если все рабочие процессы должны проксироваться на один и тот же адрес, например localhost, необходимо добавить для них алиасы в hosts: localhost2, localhost3, localhost4 и т.п.

Для заданных выше 4 процессов настройки выглядят так:

Header add Set-Cookie "ROUTEID=. %{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

<Proxy "balancer://tessa"> BalancerMember unix:/home/tessa/tessa/sockets/tessa.1.sock|http://localhost route=1 BalancerMember unix:/home/tessa/tessa/sockets/tessa.2.sock|http://localhost2 route=2 BalancerMember unix:/home/tessa/tessa/sockets/tessa.3.sock|http://localhost3 route=3 BalancerMember unix:/home/tessa/tessa/sockets/tessa.4.sock|http://localhost4 route=4 ProxySet lbmethod=byrequests stickysession=ROUTEID </Proxy>

Note

Указанные настройки stickysession=ROUTEID, а также настройки add Set-Cookie и route=X позволяют “привязывать” сессии пользователей к рабочим процессам, чтобы последовательные запросы от одного и того же пользователя переходили к одному и тому же процессу. Это ускоряет обработку запросов для веб-сервиса tessa.

Ниже найдите строки вида:

ProxyPass / http://localhost:5000/ ProxyPassReverse / http://localhost:5000/

И замените их на:

ProxyPass / balancer://tessa/ ProxyPassReverse / balancer://tessa/

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Теперь откройте файл /etc/hosts на редактирование:

sudo nano /etc/hosts

Укажите псевдонимы для вашего сервера (в примере это localhost, доступный по адресу 127.0.0.1, для которого нужны псевдонимы для 4 серверов):

127.0.0.1 localhost localhost2 localhost3 localhost4

Сохраните и закройте файл: [Ctrl]+[X], [Y], [Enter].

Перезапустите веб-сервер Apache:

sudo systemctl restart apache2

Теперь проверьте функционирование системы.

Dr.Web Server Security Suite для Unix


Поможем с выбором продукта Dr.Web

Позвоните

Бесплатно по России: 8-800-333-79-32




Закажите звонок




Напишите

Импортозамещение не доставит проблем

Dr. Web поддерживает все актуальные версии операционных систем, создаваемые и используемые в рамках импортозамещения, и обеспечивает оперативную техподдержку. Наши клиенты используют самые различные операционные системы, созданные на базе Linux – мы защищаем множество Linux-подобных ОС, в том Alt Linux и Astra Linux.

Кроме того, Dr.Web совместим:

  • с РЕД ОС 7.1 МУРОМ и с РЕД ОС 7.2 МУРОМ компании «РЕД СОФТ»;
  • с ОС ROSA Enterprise и ОС РОСА КОБАЛЬТ компании «РОСА»;
  • с облачной платформой Valo компании «Интеллектуальный резерв»;
  • с «Р-Виртуализацией» и «Р-Хранилищем» компании «Р-Платформа»;
  • с рядом ОС семейства «Эльбрус»;
  • с системой выявления инцидентов безопасности MaxPatrol SIEM.

Совместимость отечественного Dr.Web с другим российским ПО подтверждается сертификатами правообладателей.

Сертифицированные по требованиям ФСТЭК, ФСБ и Минобороны версии Dr.Web для Linux позволяют защищать персональные данные, данные уровня «совершенно секретно» и объекты КИИ, а также компании, занимающиеся самой различной деятельностью.

Мы имеем значительный опыт разработки средств защиты информации и можем работать в самых разных конфигурациях самых различных операционных систем. Так для Astra Linux Special Edition, созданной для обеспечения защищенной работы, мы поставляем подписанное специальной подписью приложение, целостность которого будет гарантироваться операционной системой, обеспечиваем работу в мандатном режиме доступа.

Всего один пример: поскольку «Доктор Веб» с 2000 года является ведущим поставщиком антивирусов для Минобороны России, Dr.Web используется на тысячах ПК под управлением Astra Linux Special Edition – не только Минобороны России, но и организаций, чья работа связана с деятельностью данного министерства.

Преимущества

  • Высокая производительность и стабильность работы
  • Высокая скорость сканирования при минимальной нагрузке на операционную систему, что позволяет Dr. Web идеально функционировать на серверах практически любой конфигурации
  • Гибкая клиентоориентированная система настройки – выбор объектов проверки, действий с обнаруженными вирусами или подозрительными файлами
  • Отличная совместимость – не конфликтует с известными межсетевыми экранами и файловыми мониторами
  • Поддержка систем мониторинга (Cacti, Zabbix, Munin, Nagios и т. д.)
  • Удобство администрирования, простота установки и настройки

Ключевые функции

  • Проверка томов сервера по заранее заданному расписанию или запросу администратора
  • Сканирования «на лету» – непосредственно при записи или открытии файлов на сервере с рабочих станций
  • main_green_5″/>Многопоточная проверка
  • Автоматическое отключение станции — источника вирусной угрозы — от сервера
  • Мгновенное оповещение администратора
  • Изоляция инфицированных файлов в карантине
  • Лечение, восстановление и/или удаление файлов из карантина
  • Ведение журнала действий антивируса
  • Автоматические обновления вирусных баз

Системные требования находятся в документации.

Хостинг на выделенном сервере UNIX

| Colocation America

Colocation America предлагает выделенные серверы Unix для клиентов, которым нужна мощная и гибкая операционная система для установки на выделенный сервер.

Зачем использовать Unix?

Поскольку серверная ОС UNIX является центральной фигурой в индустрии серверов, на платформе веб-сервера UNIX доступно множество пользовательских приложений, адаптированных к конкретным потребностям пользователей. Кроме того, наличие выделенного сервера Unix выгодно для предприятий электронной коммерции, которые ищут надежный и безопасный сервер для ведения своего бизнеса. Запуск сервера с проверенной временем ОС Unix Linux гарантирует, что сервер сможет выдержать внезапный всплеск большого объема трафика или внезапное увеличение использования полосы пропускания. Серверы Unix спроектированы как надежная операционная система с безопасным и непробиваемым брандмауэром. Выделенный хостинг Unix предлагает исключительную безопасность для большинства веб-приложений электронной коммерции, а также защиту данных для защиты конфиденциальной информации.


Для чего используется Unix?

Некоторые из основных особенностей операционной системы UNIX:

  • Многозадачная операционная система
  • Операционная система с разделением времени для нескольких пользователей
  • Высокая степень модульности и переносимости
  • Стабильная файловая структура и безопасность системы
  • Устройство независимость для полной настройки системы
  • Шифрование файлов данных и паролей
  • Функции системного учета

 


Каковы преимущества сервера Unix?

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


Что такое UNIX?

Созданная в начале 1970-х годов разработчиками Кеном Томпсоном, Деннисом Ритчи, Брайаном Керниганом, Дугом Макилроем и Джо Оссанной операционная система Unix была разработана для того, чтобы сделать использование компьютера более интерактивным для пользователя. Unix была первой операционной системой, которая модернизировала то, как мы используем компьютеры сегодня. Пользователи любых серверов Windows, Linux или Mac OSX могут поблагодарить Unix, поскольку каждая из этих операционных систем была разработана на основе основных исходных кодов операционной системы Unix, что делает Unix отцом современной операционной системы. Таким образом, это одна из наиболее часто используемых операционных систем для выделенных серверов.


Каковы ключевые компоненты Unix?

Файловая система Стандартная файловая система Unix имеет следующие каталоги, которые аналогично делятся всеми Unix-подобными операционными системами, такие как Freebsd:

Директор
. Корневой каталог, где начинается все дерево
/bin Содержит основные исполняемые файлы (т.е. двоичные файлы), обычно используемые всеми пользователями в системе (например, chmod, cp, mv, grep, and tar )
/etc Contans local configuration files, subdirectories containing configuration files for large software packages
/lib Contains shared библиотеки, необходимые для загрузки системы и выполнения команд в корневой файловой системе
/tmp Локальное свободное пространство для хранения временных файлов, которые могут быть удалены без уведомления
/usr/bin The primary directory for most executables used by normal users on the system (e. g., emacs , make , scp , sftp , ssh , and yum )
usr/lib Содержит статические и динамические библиотеки, несколько исполняемых файлов, которые обычно не вызываются напрямую, и подкаталоги для сложных программ

*Табличная информация через Университет Индианы Ядро Ядро — это управляющая программа или то, что управляет памятью системы Unix Linux. Он также предоставляет драйверы для различных типов оборудования. Оболочка Оболочка UNIX — это программа-мост между ОС и пользователем. Оболочка принимает данные, введенные пользователем, и передает их ядру.

Linux и Unix: в чем разница?

Если вам от 20 до 30 лет, и вы разработчик программного обеспечения, значит, вы выросли в мире, где доминирует Linux. Он был важным игроком в центрах обработки данных на протяжении десятилетий, и, хотя трудно найти точные отчеты о доле рынка операционных систем, доля Linux в операционных системах для центров обработки данных может достигать 70%, а варианты Windows несут почти весь оставшийся процент. . Разработчики, использующие любое крупное общедоступное облако, могут рассчитывать на то, что целевая система будет работать под управлением Linux. Доказательств того, что Linux есть везде, в последние годы стало больше, когда вы добавили встроенные системы на базе Android и Linux в смартфоны, телевизоры, автомобили и многие другие устройства.

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

Итак, что же это за Unix? На карикатурах рассказывается о похожих на волшебников «седобородых», сидящих за светящимися зелеными экранами, пишущих код C и сценарии оболочки, питаясь старомодным кофе, сваренным по каплям. Но у Unix гораздо более богатая история, чем у тех бородатых программистов на C из 19-го века. 70-е годы. В то время как статей, подробно описывающих историю Unix и сравнений «Unix и Linux», предостаточно, эта статья предложит общий фон и список основных различий между этими взаимодополняющими мирами.

Начало Unix

История Unix начинается в AT&T Bell Labs в конце 1960-х, когда небольшая группа программистов стремилась написать многозадачную многопользовательскую операционную систему для PDP-7. Двумя наиболее известными членами этой команды в исследовательском центре Bell Labs были Кен Томпсон и Деннис Ритчи. Хотя многие из концепций Unix были производными от его предшественника (Multics), решение команды Unix в начале 1970-е годы, чтобы переписать эту маленькую операционную систему на языке C, — вот что отделило Unix от всех остальных. В то время операционные системы редко, если вообще когда-либо, были переносимыми. Вместо этого, по характеру своей конструкции и низкоуровневому исходному языку, операционные системы были тесно связаны с аппаратной платформой, для которой они были созданы. Благодаря рефакторингу Unix на языке программирования C, Unix теперь можно было портировать на многие аппаратные архитектуры.

В дополнение к этой новой переносимости, которая позволила Unix быстро расшириться за пределы Bell Labs для других исследовательских, академических и даже коммерческих целей, несколько ключевых принципов дизайна операционной системы были привлекательны для пользователей и программистов. Во-первых, философия Unix Кена Томпсона стала мощной моделью модульного проектирования программного обеспечения и вычислений. Философия Unix рекомендовала использовать небольшие специализированные программы в сочетании для выполнения сложных общих задач. Поскольку Unix была разработана вокруг файлов и конвейеров, эта модель объединения входных и выходных данных программ в линейный набор операций на входе до сих пор остается в моде. На самом деле нынешняя модель облачных бессерверных вычислений во многом обязана своим наследием философии Unix.

Быстрый рост и конкуренция

В конце 1970-х и 80-х годах Unix стала корнем генеалогического древа, которое расширилось за счет исследований, научных кругов и растущего коммерческого бизнеса операционных систем Unix. Unix не был программным обеспечением с открытым исходным кодом, и исходный код Unix можно было лицензировать по соглашениям с его владельцем, AT&T. Первая известная лицензия на программное обеспечение была продана Университету Иллинойса в 1975 году.

Unix быстро росла в академических кругах, а Беркли стал важным центром деятельности, учитывая творческий отпуск Кена Томпсона там в 70-х годах. Со всей активностью вокруг Unix в Беркли родилась новая поставка программного обеспечения Unix: Berkeley Software Distribution, или BSD. Первоначально BSD была не альтернативой Unix от AT&T, а надстройкой с дополнительным программным обеспечением и возможностями. К тому времени, когда 2BSD (Второй дистрибутив программного обеспечения Беркли) появился в 1979 Билл Джой, аспирант из Беркли, добавил такие известные программы, как vi и оболочку C (/bin/csh).

В дополнение к BSD, которая стала одной из самых популярных ветвей семейства Unix, в 1980-е и в 90-е коммерческие предложения Unix резко возросли с такими именами, как HP-UX, IBM AIX, Sun Solaris, Sequent и Xenix. По мере того, как ветви вырастали из первоначального корня, начались «войны Unix», и стандартизация стала новым направлением для сообщества. Стандарт POSIX родился в 1988, а также другие продолжения стандартизации через The Open Group в 1990-е годы.

Примерно в это же время AT&T и Sun выпустили System V Release 4 (SVR4), которая была принята многими коммерческими поставщиками. Отдельно семейство операционных систем BSD с годами выросло, что привело к появлению некоторых вариантов с открытым исходным кодом, которые были выпущены под уже знакомой лицензией BSD. Это включало FreeBSD, OpenBSD и NetBSD, каждая из которых имела несколько разные целевые рынки в индустрии серверов Unix. Эти варианты Unix продолжают использоваться и сегодня, хотя многие из них столкнулись с тем, что их доля на рынке серверов сократилась до однозначных цифр (или ниже). Сегодня BSD может иметь самую большую установочную базу среди всех современных систем Unix. Кроме того, каждый аппаратный блок Apple Mac, поставленный в недавней истории, может быть заявлен BSD, поскольку его операционная система OS X (теперь macOS) является производной от BSD.

Хотя полная история Unix и ее академических и коммерческих вариантов может занять еще много страниц, ради нашей статьи давайте перейдем к подъему Linux.

Enter Linux

То, что мы сегодня называем операционной системой Linux, на самом деле представляет собой комбинацию двух усилий начала 1990-х годов. Ричард Столлман стремился создать по-настоящему бесплатную альтернативу проприетарной системе Unix с открытым исходным кодом. Он работал над утилитами и программами под именем GNU, рекурсивной аббревиатурой, означающей «GNU — это не Unix!» Несмотря на то, что был запущен проект ядра, он оказался трудным, и без ядра мечта о свободной операционной системе с открытым исходным кодом не могла быть реализована. Именно работа Линуса Торвальда — создание работающего и жизнеспособного ядра, которое он назвал Linux, — привела к жизни полную операционную систему. Учитывая, что Линус использовал несколько инструментов GNU (например, GNU Compiler Collection, или GCC), сочетание инструментов GNU и ядра Linux идеально подходило друг другу.

Дистрибутивы Linux ожили с компонентами GNU, ядром Linux, графическим интерфейсом MIT X-Windows и другими компонентами BSD, которые можно было использовать по лицензии BSD с открытым исходным кодом. Ранняя популярность таких дистрибутивов, как Slackware, а затем и Red Hat, дала «обычному пользователю ПК» 1990-х годов доступ к операционной системе Linux, а вместе с ней ко многим проприетарным системным возможностям и утилитам Unix, которые они использовали в своей работе или академической жизни.

Благодаря тому, что все компоненты Linux являются бесплатными и с открытым исходным кодом, любой мог создать дистрибутив Linux, приложив немного усилий, и вскоре общее количество дистрибутивов достигло сотен. Конечно, многие разработчики используют Linux либо через облачных провайдеров, либо используя популярные бесплатные дистрибутивы, такие как Fedora, Canonical Ubuntu, Debian, Arch Linux, Gentoo и многие другие варианты. Коммерческие предложения Linux, которые обеспечивают поддержку в дополнение к бесплатным компонентам с открытым исходным кодом, стали жизнеспособными, поскольку многие предприятия, включая IBM, перешли от проприетарной Unix к предложениям промежуточного программного обеспечения и программных решений поверх Linux. Red Hat создала модель коммерческой поддержки Red Hat Enterprise Linux, как и немецкий поставщик SUSE с SUSE Linux Enterprise Server (SLES).

Сравнение Unix и Linux

До сих пор мы рассматривали историю Unix и развитие Linux, а также поддержку GNU/Free Software Foundation бесплатной альтернативы Unix с открытым исходным кодом. Давайте рассмотрим различия между этими двумя операционными системами, которые во многом разделяют одно и то же наследие и многие из тех же целей.

С точки зрения взаимодействия с пользователем разница невелика! Большая часть привлекательности Linux заключалась в доступности операционной системы для многих аппаратных архитектур (включая современные ПК) и возможности использовать инструменты, знакомые системным администраторам и пользователям Unix.

Из-за стандартов и соответствия POSIX программное обеспечение, написанное для Unix, может быть скомпилировано для операционной системы Linux с обычно ограниченным объемом усилий по переносу. Сценарии оболочки во многих случаях можно использовать непосредственно в Linux. В то время как некоторые инструменты имели несколько разные флаги/параметры командной строки в Unix и Linux, многие из них работали одинаково в обеих системах.

Одно замечание заключается в том, что популярность аппаратного обеспечения и операционной системы macOS как платформы для разработки, ориентированной в основном на Linux, может быть связана с BSD-подобной операционной системой macOS. Многие инструменты и сценарии, предназначенные для системы Linux, легко работают в терминале macOS. Многие программные компоненты с открытым исходным кодом, доступные в Linux, легко доступны с помощью таких инструментов, как Homebrew.

Остальные различия между Linux и Unix в основном связаны с моделью лицензирования: программное обеспечение с открытым исходным кодом или проприетарное лицензионное программное обеспечение. Кроме того, отсутствие общего ядра в дистрибутивах Unix имеет значение для поставщиков программного и аппаратного обеспечения. Для Linux поставщик может создать драйвер устройства для конкретного аппаратного устройства и ожидать, что в разумных пределах он будет работать в большинстве дистрибутивов. Из-за коммерческих и академических ветвей дерева Unix поставщику может потребоваться написать разные драйверы для вариантов Unix, а также иметь лицензирование и другие проблемы, связанные с доступом к SDK или моделью распространения программного обеспечения в виде двоичного драйвера устройства во многих Варианты Unix.

Поскольку за последнее десятилетие оба сообщества повзрослели, многие из достижений Linux были приняты в мире Unix. Многие утилиты GNU были доступны в качестве надстроек для систем Unix, где разработчикам нужны были функции программ GNU, не являющиеся частью Unix. Например, IBM AIX предлагала набор инструментов AIX для приложений Linux с сотнями программных пакетов GNU (таких как Bash, GCC, OpenLDAP и многие другие), которые можно было добавить в установку AIX, чтобы облегчить переход между системами AIX на базе Linux и Unix. .

Проприетарный Unix все еще жив и здоров, и, поскольку многие крупные поставщики обещают поддержку своих текущих выпусков вплоть до 2020-х годов, само собой разумеется, что Unix будет существовать в обозримом будущем. Кроме того, ветвь BSD дерева Unix имеет открытый исходный код, а NetBSD, OpenBSD и FreeBSD имеют сильные базы пользователей и сообщества с открытым исходным кодом, которые могут быть не такими заметными или активными, как Linux, но сохраняют свои позиции в последних отчетах о совместном использовании серверов. , что намного выше проприетарных номеров Unix в таких областях, как веб-обслуживание.

В чем Linux продемонстрировал значительное преимущество перед проприетарной Unix, так это в его доступности на огромном количестве аппаратных платформ и устройств. Raspberry Pi, популярный среди любителей и энтузиастов, работает под управлением Linux и открыл двери для всего спектра устройств IoT под управлением Linux. Мы уже упоминали устройства Android, автомобили (с Linux автомобильного класса) и смарт-телевизоры, где Linux занимает большую долю рынка.