Об администрировании сервера

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

Не хочу никого пугать надуманными страшилками: в сервере нет ничего мистического, чаще всего это обычный Ubuntu, где все точно такое же, как и в десктопных версиях (только нет собственно десктопа). Умеешь пользоваться терминалом, можешь научиться и сервером управлять. Но сервер — это более специфическая среда, тут у вас не просто рут и «хомяк». Надо серьезно заботиться о правах доступа и постоянно думать о том, не под угрозой ли безопасность. На десктопе угрозы чаще всего условные — ваш комп никто извне не станет ломать, никому вы не нужны. А вот сервер попытаются запросто. Любой мало-мальски посещаемый сайт постоянно осаждают боты в попытках взломать или заспамить. Поэтому головным мозгом думать надо постоянно, взвешивая каждый свой шаг. chmod тут не для галочки.

Хорошая новость — Linux стабилен. Ядро падает крайне редко, я за всю жизнь ни разу не видел, чтобы система падала из-за проблемы именно в ядре. На десктопе все крахи из-за неправильно настроенных приложений. Чаще всего падает графическая подсистема (раньше это были «иксы» — X11, сейчас еще и Wayland), либо чудят драйверы. На сервере графики нет, и внешние устройства не подключаются, так что единожды запущенная система будет работать, пока какая-нибудь авария не случится. А сломать Linux нечаянно в процессе каких-то настроек — это надо иметь особую степень криворукости. Зато вот ломающиеся серверные приложения — это суровые будни админа! Софт под Linux встречается самого разного качества — Open Source же. Все всегда запускается на свой страх и риск. Можно очень легко попортить любые данные, если они не защищены от записи. Поэтому бэкапы надо делать регулярно. Никогда нельзя запускать никакие команды или скрипты, если не понимаешь, что они делают. На сервере все проблемы от бездумных действий. Если на десктопе обычно работаешь под непривилегированным пользователем, а sudo для административных действий — это исключение, то на сервере все наоборот: root — норма, работа под другими пользователями — исключение. Но постоянно приходится помнить: настраиваешь что-то из-под рута — готовься к ошибкам типа «permission denied». Создал из-под рута какой-нибудь файлик, забыл выставить нужные права — все, будешь полдня искать причину полома.

Скажу честно: я не большой фанат Docker, я предпочитаю все ставить самостоятельно прямо в систему. Докером пользуюсь только в тех случаях, когда надо что-то совсем уж экстраординарное и навороченное, в чем лень разбираться. Например, у меня в контейнере запущен Nextcloud. Да, лень — это вообще-то не самая уважительная причина в данном контексте, но и я не профессиональный админ, а просто юзер, которого жизнь заставила админить. Поэтому я и не адепт всей этой контейнерной религии — да и вообще не сторонник каких-либо определенных DevOps-практик. Мне кажется, чем проще, тем лучше. Если Docker упрощает жизнь — то хорошо, берем на вооружение, а если с ним все становится сложнее, то ну его.

Проще всего поставить классический комплект из веб-сервера, PHP и MySQL (или MariaDB). Справится абсолютный новичок. Даже сертификаты сегодня уже не обязательно самому ставить — Caddy делает это за вас. Нужно только немного понимать, как работает стек TCP/IP (впрочем, если вам только обычные сайты писать, то и полноценный сервер не нужен, достаточно shared-хостинга).

Наверное, у всех, кто что-то разрабатывал под веб, был период, когда хочется написать свою серверную программу. Так вот, это ровно до того момента, когда вы действительно сможете запустить ее на реальном сервере. Только тогда начинаешь понимать, что к чему в плане безопасности. Энтузиазм велосипедить отпадает, вырабатывается склонность ставить чужое, но надежное. Взять тот же WordPress — да, система неидеальная. Да, то и дело что-то там отваливается после обновлений. Да, плагины быстро устаревают. Но WP все равно лучше, чем самописный движок. Свое писать стоит, только если совсем уж нет никакого выхода, если у вас задача какая-то узкоспециализированная. Например, сложный CI/CD или игровой сервер.

Админство — совсем не творческое занятие, а жутко рутинное. Это постоянная правка всевозможных конфигов и написание скриптов, установка пакетов, управление Systemd, копание в логах, мониторинг портов и, конечно, лихорадочные поиски документации в Интернете. Запустили сервис, потестили, увидели проблему, остановили, фиксим. Потом еще раз, и еще, и еще… Главное, что я понял — лучше вообще не вкатываться во все это без особой насущной необходимости. Обычному человеку должно хватать бесплатных сервисов, предоставляемых корпорациями. Вот когда уже не хватает, и «хочется странного» — другое дело.

Например, мой путь в администрирование начался, когда понадобился личный/семейный VPN. Думал этим и ограничиться, но затем понеслось. Сервер — это мир больших соблазнов. Поставил одно, тут же хочется попробовать другое, ведь почти всем популярным сервисам есть self-hosted аналоги: можно поднять личные аналоги GitHub, Google Workspace, Spotify и бог знает чего еще. Настраивать и дорабатывать напильником все это можно бесконечно — есть маньяки, которые именно этим большую часть свободного времени и занимаются) Для меня идеал — один раз настроил и забыл, но, к сожалению, так получается далеко не всегда.

Обновления

bindbc-wgpu 0.19.0, соответствующий wgpu-native 0.19.x. Каких-то существенных изменений в этой версии нет, кроме того, что структуры и функции опроса статистики конвейера вынесены в платформоспецифичную часть API (bindbc.wgpu.types2).

Также рад сообщить, что bindbc-wgpu теперь успешно собирается и работает под Linux — как и демо-приложение с моделью Cerberus. Тестировал на Mint 21.2 с wgpu-native 0.19.1.1.

Работа над новым релизом Dagon продолжается: на днях внес множество исправлений, связанных с поддержкой Linux. В частности, теперь расширения dagon:newton и dagon:imgui загружают библиотеки из папки проекта, если не находят их в /usr/lib. При сборке под 64-битный Linux нужные библиотеки теперь копируются в папку с проектом — это должно упростить работу с расширениями, пользователи неоднократно жаловались на неинтуитивность подключения Newton. Также обновлен биндинг ImGui.

Я возвращаюсь на Linux!

Если вы читаете мой блог с самого начала, то должны помнить, что в первой половине десятых я в основном пользовался именно этой ОС: я даже написал две статьи о своем опыте работы с системой — Почему я выбираю Linux? (2012) и 7 лет с Linux (2015). К сожалению, с 2018 года мне по работе пришлось стать виндузятником. Не то, чтобы это создало какие-то неудобства, но времени на Linux хватать перестало — к тому же я купил новые компьютеры, а старый линуксовый ноутбук отдал родственникам. Систему, естественно, пришлось снести. Но недавно захотелось мне привести в рабочее состояние другой ноут, с ужасно тормозной OEM-версией Windows 10. Я выбрал для него все тот же Linux Mint, а именно 21.2 MATE Edition (кто не в курсе — MATE является форком классического рабочего стола GNOME 2). Кстати, впервые в жизни не стал ставить Linux в дуалбут с Windows, переформатировал весь диск — терять было нечего. И вот я опять как дома!

Я был приятно удивлен: за 5 лет моего отсутствия линуксовый десктоп стал заметно лучше. Системные приложения, конечно, в основном все те же, привычные для старого гномовода. Однако в мое время пакеты ставились вручную в консоли, при помощи apt-get — теперь же есть удобный каталог ПО с графическим интерфейсом. Хорошая поддержка оборудования: Wi-Fi заработал из коробки без необходимости устанавливать драйвер. Драйвер для видеокарты система сама обнаруживает и скачивает — правда, показалось странным, что при этом нужно вводить пароль Secure Boot. Ну, видимо, такие теперь порядки в эпоху UEFI.

Пожалуй, самое важное нововведение последних лет — это Flatpak. Я в свое время прошел все круги ада в плане установки приложений — наверное, каждому линуксоиду нулевых знакомы проблемы с зависимостями бинарников, версиями glibc, зоопарком звуковых подсистем. О том, чтобы ставить программы инсталляторами, как в Windows, приходилось только мечтать — я всегда твердил, что популярности Linux на десктопе мешает именно это. Похоже, что Flatpak решает данную проблему: это утилита для создания самодостаточных бинарных пакетов без зависимостей, которые запускаются в изолированном окружении-песочнице. Они могут взаимодействовать с ОС через механизм порталов — можно дать приложениям доступ к диску, сети, устройствам и т.д. При этом в системные папки типа /usr/bin, /usr/lib ничего не устанавливается, и это просто замечательно! Флатпаки, естественно, дистрибутиво-независимы — не нужно создавать отдельные пакеты на каждый дистрибутив и разные его версии, что всегда было дичайшей головной болью разработчиков. В Mint поддержка Flatpak встроена в менеджер приложений: вы можете устанавливать как традиционные deb-пакеты, так и пакеты с Flathub. Минусом такого подхода является то, что флатпаки достаточно много весят, но, по современным стандартам объемов носителей, это не так уж важно.

Очень понравилось, что в виде флатпаков можно установить все бесплатные приложения, нужные мне для работы: Figma, VS Code, GitHub Desktop и др. А еще в мое время под Linux было совсем мало игр. Сегодня ситуация гораздо позитивнее: есть Steam, где я обнаружил linux-версии многих своих любимых игр последних лет. Радует полноценная поддержка Linux в мейнстримных игровых движках, особенно свободных. Установил Node.js, и с полоборота запустились все мои тулчейны для разработки баннеров и браузерных игр — благо там почти все кроссплатформенное. Хобби-проекты теперь, конечно, тоже буду полноценно тестировать под Linux.

Единственный серьезный минус, который пока заметил: свежий Photoshop не запускается под WINE. Но в моем случае жить можно и без ФШ, учитывая, что linux-машина не является основной для работы. Может быть, получится запустить какую-нибудь старую версию — буду экспериментировать.

Растягиваемое окно

Atrium теперь поддерживает окна любого размера (развернуть окно игры на весь экран можно в режиме паузы — Esc). Также в свежей сборке исправлены различные баги физики и управления.

Сборка под Windows
Сборка под Linux

Новая демка Atrium

Скачиваем новую демку с тенями:

Для Windows (2,36 МБ)
Для Linux (3,89 МБ)

Под Windows запускайте с параметром --enableShadows=1, либо используйте прилагающийся bat-файл, в котором этот параметр уже указан.

Репозиторий Atrium на GitHub также будет обновлен в ближайшее время.

7 лет с Linux

Именно такой у меня «стаж». С некоторых пор я вовсе перестал активно пользоваться Windows — под Linux у меня буквально все: работа, учеба, хобби и развлечения. Начиналась вся эта история достаточно забавно: я сам очень люблю читать подобные статьи-воспоминания, поэтому хочу поделиться и своими.

Мое знакомство с Linux началось в 2006-2007 годах благодаря нижегородскому журналу «Мой друг компьютер». Помимо информации для начинающих пользователей ПК, различных обзоров софта и железа, он содержал и материалы по Linux — рецензии на дистрибутивы, инструкции по установке, полезные команды Bash, различные советы и хитрости по эксплуатации linux-систем.

Я мгновенно влюбился — пусть и «дистанционно». Забавно вспомнить: в то время у меня еще не было безлимитного подключения к Интернету, и скачать даже самый маленький дистрибутив было проблематично (с помегабайтной тарификацией и 10 Мб казались заоблачной цифрой). В компьютерных магазинах диски с этой системой тогда тоже почему-то было не найти, поэтому попробовать Linux на практике мне долгое время не удавалось — и я помногу перечитывал подшивку «МДК», смаковал, запоминал информацию…
В одном из номеров был опубликован обзор Ubuntu — тогда еще молодой и малоизвестной системы на основе Debian. Позиционировалась она как дружелюбный дистрибутив для начинающих, и отдельно подчеркивалась возможность запуска системы прямо с CD, без необходимости установки. Особенно поразила меня щедрость разработчиков: компания Canonical тогда бесплатно рассылала диски с Ubuntu по почте — для тех, кто не имеет возможности скачать ее. Ведь это же как раз про меня!

Я тут же оформил заказ, и через пару месяцев в руках у меня был диковинный заграничный пакет, а внутри — симпатично оформленный LiveCD с Ubuntu 7.10. Моему восторгу не было предела! Впрочем, радоваться, как выяснилось, было особо нечему: LiveCD запустился, но, то ли из-за бага в видеодрайверах, то ли из-за неправильных настроек, изображение на экране было ужасным: сквозь дико смещенные и постоянно подрагивающие ряды пикселей с трудом узнавался рабочий стол GNOME. Нечего было и думать о том, чтобы устанавливать систему в таком состоянии на жесткий диск…

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

Осенью 2008 года у меня, наконец-то, появилась безлимитка по телевизионному кабелю. Правда, на ужасающе низкой скорости — почти на уровне dial-up, менее 64 кб/c. Но и этого хватало, чтобы кое-как выкачать Slitaz — мой первый полноценно работающий дистрибутив. Узнал я о нем на сайте http://distrowatch.com — тогда это был самый авторитетный ресурс по Linux, на него неизменно ссылались все авторы статей «МДК».
При весе в 30 мегабайт Slitaz включал полноценный графический режим (Xvesa вместо Xorg, рабочий стол Openbox) и достаточно богатый для такого размера набор пркладных программ (аудиоплеер, браузер, текстовый редактор, просмотровщик изображений, простенький графический редактор наподобие Paint и даже несколько игр). Правда, в той версии дистрибутива не работала сеть, поэтому приходилось постоянно переключаться между Slitaz и Windows, чтобы посидеть в Интернете. Но я все равно был счастлив: наконец-то я пользуюсь Linux!

Slitaz я запускал исключительно в режиме LiveCD, первое время не пытаясь установить систему насовсем. Хотелось сначала попрактиковаться на чем-то легковесном, а для постоянного использования найти что-то посерьезнее. Постепенно я перепробовал множество разных LiveCD: Puppy Linux, MCNLive, Austrumi, CDLinux и т.д. В каждом было что-то уникальное: например, MCN «из коробки» поддерживал Compiz — спецэффекты для окон.

Одним из самых интересных был дистрибутив Slax — он мог работать с флешки в режиме чтения/записи. При этом для систем, которые не поддерживали загрузку с флеш-накопителей, была предусмотрена возможность начальной загрузки с CD, а затем управление передавалось системе на флешке, и дисковод можно было освободить для других нужд. В Slax я просидел довольно долго, почти полгода — научился устанавливать пакеты, работал с Blender, GIMP, офисным ПО. Единственное, что портило настроение: система изредка могла намертво зависнуть — видимо, сказывались мизерные 512 Мб памяти при отсутствии своппинга.

И все же полноценным линуксоидом я себя считать не мог, пока не установил систему на жесткий диск. Случилось это летом 2009 года — тогда я как раз добрался до дистрибутива Mint. Интернет у меня тогда был временно отключен, и тут, как назло, слетела Windows Vista на одном из ноутбуков, к которому не прилагалась ОС на диске. Другого компьютера под рукой не было, но необходимо было срочно выполнить несложную офисную работу — OpenOffice Write было бы достаточно. Не оставалось ничего иного, как установить Mint — и в тот знаменательный день мои эксперименты с дистрибутивами, столь характерные для всех начинающих, благополучно завершились.

Система (если быть точным, Mint 6, основанный на Ubuntu 8.10) прекрасно встала на мое железо, без особого шаманизма заработало практически все периферийное оборудование, за исключением графического планшета — но его я впоследствии тоже сумел запустить. Это были времена расцвета GNOME 2: классический десктоп и привычный набор приложений делал миграцию с Windows легкой и безболезненной — «из коробки» шли традиционные GIMP, OpenOffice.org, Firefox, Thunderbird, Pidgin и т.д.

Производительность системы, по сравнению с Vista, поражала воображение: до этого я и не подозревал, что бюджетные ноутбуки способны включаться за десять секунд, а выключаться — за три!

Mint 6 выжимал максимум из моей видеокарты: была поддержка OpenGL 1.4, но при этом — внушительный набор доступных расширений, в том числе GL_ARB_shading_language и GL_ARB_vertex_buffer_object. Для полного счастья не хватало разве что поддержки FBO. Конечно, без полной поддержки OpenGL 2.0 было невозможно играть в современные игры, но для работы в Blender и монтажа видео этого хватало с лихвой. Linux надолго продлил жизнь этого ноутбука.

Продолжение спустя 8 лет: Я возвращаюсь на Linux!

Обновление Atrium

Доступна новая демонстрация проекта Atrium:

  • В игру интегрирован физический движок dmech в его актуальном состоянии
  • Проект теперь использует графический движок DGL
  • Готова модель гравитационного излучателя с эффектом электрического разряда
  • Добавлен HUD, который отображается на дисплее внутри шлема. Забрало шлема можно открывать и закрывать (планируется сделать локации в вакууме, проходить которые можно только с закрытым забралом)
  • Идет работа над первой игровой локацией.

Скачать:
atrium-demo-03122014-windows.zip 
atrium-demo-03122014-linux.tar.gz 

Составные тела в dmech

В физическом движке dmech реализованы составные тела (поддержка нескольких геометрий на тело). Корректировка позиции теперь основана на псевдоскоростях. Кроме того, устранен артефакт дрожания (jittering), возникающий в некоторых ситуациях.
Также dmech теперь использует последнюю версию dlib.

Сборка для Windows
Сборка для Linux
Исходники

Репозиторий на GitHub будет обновлен в ближайшее время.

Журнал «FPS» №28

К выходу FPS №28 мы решили приурочить открытие сайта-блога http://fps-magazine.blogspot.ru, в котором постепенно собираемся разместить всю информацию из нашего старого, ныне несуществующего сайта (fpsmag.zymichost.com). Надеемся, этот ресурс поможет читателям, не зарегистрированным в Google+, не терять нас на просторах Интернета и быть в курсе обо всех событиях из жизни журнала.

А в этом выпуске FPS вы найдете следующие материалы:

  • Подборка новостей по Blender
  • Интервью с Ларри Гритцем, создателем OSL
  • Рисуем фрактал на D
  • Обзор альтернативных ОС
  • Игровые новости из мира Linux
  • Кому нужен Linux? Правда и вымыслы
  • Культовые игры: The Elder Scrolls V
  • Angry Birds в России
  • Как создавались игры 80-х и 90-х
  • Каково быть гиком в тюрьме? Исповедь Анонимуса

Журнал доступен для онлайн-чтения и загрузки на Документах Google, на Dropbox, а также на Issuu.com.

Последние новости по проекту вы можете узнать в публичной странице журнала в социальной сети Google+: http://gplus.to/fpsmag. Добавляйте нас в круги, оставляйте свои комментарии и отписывайтесь в нашем сообществе.

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

Журнал «FPS» №27

Вышел 27 номер электронного PDF-журнала «FPS», посвященного разработке игр, программированию, компьютерной графике и звуку.

Читайте в этом номере:

> Подборка новостей по Blender
> Тон Розендаль о будущем интерфейса Blender
> GIMP: цветокоррекция на Python
> От мольберта — к дисплею. Заметки о цифровой живописи
> Физический движок своими руками. Часть IV
> Математика в dlib
> Ranges: диапазоны в D
> Игровые новости из мира Linux
> Право на творчество

Номер доступен для онлайн-чтения и загрузки на сервисе Issuu.com, Документах Google и Dropbox.

Последние новости по проекту вы можете узнать в публичной странице журнала в социальной сети Google+: http://gplus.to/fpsmag. Добавляйте нас в круги, оставляйте свои комментарии и отписывайтесь в нашем сообществе.

Архив номеров журнала здесь.