Простой способ работать небольшой командой на Ubuntu сервере на любом языке

(Не для задров, для обычных людей)

Posted by snakers41 on March 15, 2017

Не претендую на огромные знания в этой сфере, просто хочу поделиться опытом очень быстрой организации среды разработки / анализа для небольшой команды из 3-5 человек (более 5-7 уже надо думать про CI, но это уже совсем другой уровень извращений, вероятно требующий настоящего админа). Понятное дело, что есть большое число "опытных" специалистов, которые возможно свой опыт получили 1 раз в жизни из третьих рук и готовы нести свет в массы, руками не собрав все с нуля - такая статья не для них. Также есть большое число реально опытных спецов, которые закоптились на работу с конкретной IDE и системой билдов (так называемые DevOps) - это тоже не для них. Преимущества данного подхода - он подходит практически для любых задач, связанных с прикладным использованием языков программирования как инструмента решения прикладных задач (расчеты, разработка, совместная работа на веб-приложением, анализ данных итд). Еще короче - если надо, чтобы был результат превыше процесса, а не наоборот.


Целевая аудитория статьи in a nutshell.


Вот список шагов и абстракций (конкретные команды зависят от многих факторов, поэтому гуглите их самостоятельно):

  • Система - Ubuntu предпоследней или версии (ведь ты не хочешь находить ошибки в опен-сорс софте?)(знакомые советовали Gentoo, мол он стабильнее, но по Ubuntu больше гайдов). Ставьте 32-битную систему (насколько я понимаю разницы особой нет, но по опыту несколько приложений не работает на 64-битной системе) (опять же - если нужно много памяти, то ставьте 64-битную);
  • Кто не делает бекапы просто еще их не делает. Напишите скрипт, который будет сохранять ваш код в tar-архив (желательно на другом диске или на другой машине!) и потом код, который будет делать бекапы бекапов. Поставьте скрипт на крон или используйте сервис, если целесообразно. Отдельно напишите скрипты бекапирования своей базы - чем проще тем лучше. Бекапы должны быть ФИЗИЧЕСКИ (другой диск, 10-RAID массив, другая машина, облачный сервис Амазона или Гугла) отделены от остального сервера;
  • Вместо IDE для начала проще использовать Sublime text 3 (он платный - 70 баксов, но можно сразу не платить). В нам надо сразу поставить package control (вообще вот канал, который по шагам описывает все что нужно) и следующие расширения (список): Bracket highligter, DocBlockr, Filebrowser, Github tools, Seti_UI, Seti_UX, SFTP, Sidebar enhancements, Themr, Sublime linter (обратите внимание, что каждый линтер требует установки доп. пактов и программ!). ST используют профессиональные верстальщики, но он также отлично подходит, когда вы решаете конкретные задачи в краткие сроки, а не пишете код за деньги или за часы;
  • Если ваша команда не очень велика, то скорее всего вам должно быть небезразлично то, что вы делаете. Юнит-тесты, репозитории, в которые вы пушите тюки, работая на галере, и прочее оправданы на большом масштабе или на "галере". Поэтому процесс может работать так ST => FTP => сервер => Github (вместо такого: что угодно => Github => сервер);
  • В качестве решения для доступа администрирования доступа разных людей для начала подойдет vsftpd (лучший гайд). Отвечая на вопрос "а что если Вася все удалит?" - читайте пункт про бекапы / доверие / размер команды;
  • Имейте систему тикетов. Самая гибкая на мой взгляд - Redmine (она опен сорс). Ее установка достаточно геморройный процесс, но этот гайд рабочий при соблюдении условий: i) чистая установка Ubuntu 16 server без зависимостей по ruby (у меня их не было) ii) Постгрес - у меня там заморочки с кластерами и базами, но проблем это не вызвало iii) Этот пакет вместо этого - гайд написан для MySQL - но там все само из коробки завелось даже без правок конфигов базы вручную. Шкурку рекомендую эту (она единственная по-настоящему адаптивная и красивая без излишеств). Не забудьте прикрутить почту. Можно даже Gmail (курите топики 1 2 3 4);
  • В идеале нужно закоптиться на минимальный мониторинг серверов, но я не смог найти РЕАЛЬНО простого решения. Отраслевым стандартом является Zabbix, но это реально админский уровень. Быдло уровень - пакет glances;

Ebanoe.it плохого не посоветует.


Отдельно обмолвлюсь, что тут нет ни слова про собственно софт ради которого затеяна игра - потому что в теории он может быть ЛЮБЫМ (в этом и красота - сюда пошли и Octave и Питон, и пых, и JS со всякими HTML приблудами).