Pull to refresh

Comments 64

Все это, конечно, замечательно, но вы действительно думаете что это кому-то нужно?
Ведь проблема разворачивания веб-сервера Rails на IIS не в том что это сложно сделать, а в том что это вряд ли является удачным решением. Если говорить об ASP.NET, то выбора особо нет, но зачем использовать windows там, где можно использовать linux или другие системы. И я не думаю что что-то действительно поменялось с развертыванием продакшн-серверов с приходом Helicon Zoo. Для девелопмента, конечно, сойдет, но какой смысл если есть встроенный webrick.
Если, конечно, отвлечься от промо MS серверов. Объективно.
Например, вы сисадмин в каком-нибудь пенсионном фонде, где у вас есть один только сервер с Windows Server, на которой что-то там стоит и удачно работает. А тут вам какой-то умник начальник приносит что-то написанное на рельсах и говорит, чтобы завтра работало (он понятия не имеет о windows, linux, все что он знает у вас есть сервер, и туда можно это поставить). Что будете делать?
Я предпочитаю не работать в таких организациях и не загонять себя в такие условия. Да и в наших архаичных госструктурах вряд ли что-то будет на рельсах, тем более 3.x.
Но вы правы, если выхода нет, то будем пользоваться.
Виртуалку. Когда начинал работать на Rails, первый проект писал под Windows. Познакомился с огромным набором костылей для того чтобы все работало (и еще столько же для emacs;), но сейчас я под vim), но последней каплей стало осознание того что окружение, в общем-то, небольшого проекта загружалось несколько минут — каждый раз, запуская тесты я мог идти пить кофе. Тогда я думал что просто я криворукий:) Но под Linux все заработало превосходно. Причины того провала производительности я так и не нашел, возможно дело в 1.8, или каком-то геме, который не смог скомпилироваться и работал «как есть», необходимости не было)
Вы в какой стране живете? какую виртуалку? там может быть такой «сервер», что еле держит то, что сейчас на нем стоит. Часто ставят только для 1С на пару бухгалтеров.
Боюсь, если с производительностью рельс под Windows на данный момент такие же проблемы какие были у меня 2 года назад, то виртуалка с Ubuntu Server 10.04 будет эффективней запуска рельс в винде. Или, как более быстрый вариант — andLinux, но я бы не стал ставить это на сервер.
Для пары бухгалтеров обычно, афаик, сервер не ставят, а просто шарят папку…
Задам тот же вопрос, что и выше — зачем?

И позвольте ответить на гипотетический вопрос. Если мне в пенсионный фонд принесут, что-то на рельсах — попрошу денег на офисную машину. Если не будет — что 99,99% так и будет) Сниму хостинг без претензий на рельсах. Оформлю проект на себя — а когда буду уходить с пенсионного фонда — поставлю перед фактом — поддержка извне стоит столько-то.
Да вы что? Вы в какой стране живете? Вам сколько лет, что вы верите в такое вот светлое происходящее? Кто вам даст денег на новый компьютер? И вам говорят «надо», ибо может быть сверху пришло указание, что нужно в какой-то программе делать отчеты.
Не гоните беса.
Семь лет работаю в конторе, если мне нужно железо — я его получаю.
Если была дана задача реализовать что-то для получения прибыли — нужно что-то потратить для этого.
А если просто на уровне идеи — то можно найти другую реализацию этой самой идеи.

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

В итоге — имею под собой чуть более тысячи машин с виндой, около 40 серверов с фрибсд и прочего хлама машин 5.

Так что да, я верю в светлое будущее и живу в Украине. И мне 26.

пс. С каких пор в роре бухи делают отчеты? о_О
Подозреваю, что у вас не государственная контора и даже не прогосударственная.
Что негосударственная выдаёт фраза «Если была дана задача реализовать что-то для получения прибыли»
Да, не государственная.
А Вам что — важна пенсия и оплачиваемый отпуск и белая зп?
— до пенсии еще дожить нужно;
— отпуск и так норм, правда маленький;
— нет разницы какого цвета зп — главное зеленые деньги.

И если случиться так, что в гос. конторе будет крутится проект на роре — я обязательно туда пойду на пол ставки.
Или у Вас были прецеденты уже?
Объективно, какие именно недостатки веб серверов Windows вы считаете существенными/критичными в данном случае? Это ни коим образом не для холивара, мы не Microsoft и даже на них не работаем. Для нас чем больше недостатков тем больше работы для нас = profit!
Производительность самого языка (запуск везде подтормаживает, я имею в виду обычное функционирование), работа IIS со стримингом Rails (в этом случае я бы предпочел если бы была адаптирована связка nginx+unicorn), что будет актуально в ближайшие месяцы, совместимость си-расширений, нативность posix для работы с консолью, гитом и т.д.

Но у меня основная претензия не к вашему продукту, а именно к тому чтобы рассматривать WinServer в качестве production сервера. Он не может похвастаться скромным потреблением памяти, стабильностью и удобством администрирования в сравнении с linux/freebsd. Есть области где WinServer хорош – это, например, терминальные серверы для распределенной торговой сети, работающей на 1С, возможность создания локальной сети из тонких клиентов на основе сетевой загрузки linux с RDP клиентом для работы на терминале опять же – огромная экономия+централизация, ASP.NET серверы.

Но мне не понятна мотивация человека, который, имея все необходимые компетенции, развернул бы боевой сервер Rails для масштабного проекта на этой системе. В первую очередь я бы задумался об отказоустойчивости данного решения. Во-вторых об удобстве управления. Зачем одевать плавки поверх смокинга, если можно по-нормальному. Запишите меня в конченные линуксятники.
Я вот считаю себя почти конченным линуксятником (по технологическим, а не идеологическим причинам), но если мне дадут возможность в несколько кликов или строк в консоли (всё под линуксом) развернуть на удаленном сервере рельсовое приложение, созданное и оттестированое в дев-окружении в линуксе, без переживаний «а не накосячил ли я при развёртывании окружения», то мне будет всё равно какая ось стоит на этом сервере — хоть линукс, хоть бсд, хоть винда — главное чтобы разница в стоимости аренды этого сервера была незначительной…
Зачем использовать windows там, где можно использовать Linux или другие системы

Наверное затем, что есть люди, для которых вопрос стоит наоборот: зачем использовать linux там, где можно использовать windows?
Мы ведь сейчас обсуждаем сервера для веб-проектов, а не то как будет удобнее домохозяйке вконтакте сидеть. Здесь надо мыслить не прихотью, а взвешивать за и против, выбирать наилучшее решение для обеспечения качества конечного продукта.
Если в качестве «дано» имеются специалисты по работе с windows, экономить на операционной системе не выгодно.
Дело ни в коем случае не в платности операционной системы. А в том насколько она приспособлена для решения конкретной задачи. Веб-серверы для php, ruby, python, perl в большинстве не используют windows из-за объективных факторов. Производительность, стабильность, работа с расширениями, работа с памятью, администрирование, взаимодействие с линуксовыми серверными приложениями на одной машине и прочее.

Но в общем все сводится к холивару на тему хорош ли Windows Server для работы в качестве веб-сервера на данных технологиях. Статистика неумолима. А для решения небольших локальных проектов – вопросов нет, можно даже webrick использовать, как я сказал.
Это сложный вопрос, особенно что касается Ruby. Опять же, к сожалению, интерпретатор Ruby изначально писался таким образом чтобы работать под Windows медленнее. Это не связано с преимуществами или недостатками самих операционных систем, а лишь с выбором и технологиями конкретной реализации. Разумеется его можно было бы написать так чтобы под Windows он вообще не работал и это было бы законное право автора. Мы с благодарностью работаем с тем что имеем.

Сейчас ситуация меняется. Из серьезных проблем осталась пока разьве что проблема медленного первого старта, которую в принципе тоже можно решить путем некоторых ухищьрений. Есть также JRuby, который последнее время показывает весьма приличную производительность. Пока тестов у нас нет, но могу сказать что JRuby под Windows весьма очевидно и значительно быстрее MRI.

Теперь если говорить о работе самого сервера не применительно конкретно к Ruby, а например к Perl, Django и т.д. Разработка нашего проекта идет очень активно. Мы многого не успеваем, но наработок тоже очень много. Нужно время чтобы дошлифовать проект и сделать развернутое тестирование. Однако по предварительным прикидкам я смею надеятся, что мы сможем показать производительность и устойчивость как минимум адекватную связке Ubunthu + Nginx, оставив далеко позади Apache, Mongrel и т.п.

Хотя мне сложно что то сейчас обещать, так как тут участвует слишком много факторов от нас не зависящих. И все же наша цель сделать удобное решение для людей, а не доказывать чью либо правоту.
Что «веб-серверы для php, ruby, python, perl в большинстве не используют windows» ложь, причем явная, ибо я уже лет 10 использую Apache под Windows и спокойно запускаю Perl и PHP приложения, причем довольно успешно работают. Статистика это лишь еще один путь обмана себя же. Под виндой Apache ведёт себя прекрасно, очень даже прекрасно.
Ну вы теперь можете поставить один Windows сервер, на котором хостить и ASP.NET проект и рельсовый проект внутри какой-то организации. А вот с Linux уже такое не прокатывает. Разве не здорово?
Да, возможность есть. Так же могу ответить, что если вы захотите завести специфичный линуксовый софт в сочетании с Rails-приложением, то Windows нечего мне предложить.

Я здесь говорю только об адекватности деплоинга на данную систему. Да, это будет дешевле при условии что у меня есть windows server и нет отдельных машин под эту задачу. Но меня интересует вопрос, будет ли эта система работать стабильнее, быстрее, эффективнее на серьезном нагруженном проекте с учетом требований к непрерывной интеграции и развития этого проекта.
Время покажет. Текущие хостинги для Rails, наверное, тоже не идеальны? :)
Не идеальны, но откровенных жалоб не слышал. :)
Вам может быть и нет, а многие люди очень удачно используют связки Rails, PHP приложений c MS SQL базами, интеграцией с MS Office, Outlook на уровне enterprise Интранет решений связка просто шикарна, это просто другой мир за пределами веба, стартапов, хайлоадов и т.п. но именно он так в тени приносит многим миллионы долларов и не жужжит :)
Могу вас заверить, что есть множество специалистов которые и для web-проекта предпочтут windows.

К тому же если рассматривать вариант с сетью в которой которая уже базируется на windows платформе, вряд-ли кто-то станет специально под одно приложение разворачивать линукс-машину, пусть даже и на виртуалке.
Что значить «для web-проекта предпочтут windows» мне не понятно?
Предпочтут разрабатывать RoR приложения на windows или деполоить RoR под wondows?
Может быть и тот и другой вариант:

Первый вариант актуален если у разработчика большой опыт работы windows и ему эффективнее работать на знакомой и проверенной платформе.

Второй вариант — как уже говорил выше, если есть налаженная инфраструктура. В таком случае установка линуск-машины может усложнить и удорожить поддержку этой инфраструктуры.
Если мне всё равно куда разворачивать приложение в продакшен (но под линуксом сталкиваюсь с проблемами, т. к. я разработчик, а не админ), но разрабатывать его я предпочитаю под линуксом — есть ли преимущества у вашего продукта?
«Специалисты» должны понимать, что некоторые вещи, типа RoR, должны работать в естественной среде, а не на костылях.
Если по какой-то причине разработчику для которого профильной технологией является ASP.NET, или допустим C++ CLI необходимо разобраться, или написать код на Ruby — то ему проще использовать известные инструменты чем разворачивать для этого отдельно ОС и разбираться не с незнакомой средой.
Это будет просто неэффективно с точки зрения процесса разработки.
Разработчики не должны ничего разворачивать в продакшне, а разрабатывать они могут на чём угодно, хоть на ReactOS.
Так вы сами только что говорили про то что Ruby должен работать в «естественно среде». А теперь вот значит и на ReactOS можно :)

Что же касается production — я об этом написал в ответе sUAron. Это актуально в ситуации если у вас уже есть инфраструктура построенная на Windows.
Работать и разрабатываться — это не одно и то же.
Согласен.
Но вопрос возник по поводу того в каких ситуациях может понадобится такое решение.
Исходя из собственного опыта я привел два сценария которые могут быть наиболее вероятны.
А в чем отличие, если сформулировать зачем linux если есть windows? Решение-то ведь рабочее, а для Интранет сайтов интегрированных с MS SQL и рядом windows сервисов и с желанием использовать COM самое-то.
А nginx + mod_rails не судьба поднять на Windows?
А есть mod_rails под windows?
Можно попробовать скомпилить.
К сожалению nginx написан таким образом, чтобы по Windows работать со значительным снижением производительности. Это связано с использованием спецефичных технологий. Рассматривать его как production решение под Windows не стоит.
Как-то ради интереса решил запустить написанный блог на винде, сразу отвалилось несколько гемов (вроде factory_girl и что-то еще). Возможно сейчас ситуация стала лучше, но что-то не верится…
factory_girl у меня под виндой работал, точно помню;)
Возможно, я уже точно не помню :-) Но из этого
group :development, :test do
gem 'spork'
gem "rspec-rails", :git => "git://github.com/rspec/rspec-rails.git"
gem "rspec", :git => "git://github.com/rspec/rspec.git"
gem "rspec-core", :git => "git://github.com/rspec/rspec-core.git"
gem "rspec-expectations", :git => "git://github.com/rspec/rspec-expectations.git"
gem "rspec-mocks", :git => "git://github.com/rspec/rspec-mocks.git"
gem 'factory_girl_rails'
gem 'capybara'
gem 'launchy'
gem 'database_cleaner'
gem 'simplecov', '>= 0.4.0', :require => false
gem 'rails_best_practices', :require => false
end

Что-то точно не работало…
И зачем для запуска на винде нужны development гемы?
Это было just 4 fun, посмотреть, можно ли начать писать простенький блог на линуксе, а потом продолжить на винде)) С первого раза не вышло, что-то отвалилось.
rspec у меня не взлетел вроде тогда
«Программирование в MSPaint» — на картинках все работает в реальности RedMine нельзя даже запустить на IIS
RedMine последняя версия зависит от 4х гемов rails, mysql, i18n, и rake в остальном это чистое RoR.
Полезность запуска пустого приложения = 0
Вот у нас прямо сейчас он работает. Чуть дошлифуем и выложим так чтобы его можно было прямо из репозитория ставить.
Вы планируете ошлифовать RedMine чтобы он работал под IIS?
Он уже у нас работает, да и шлифовать его нам врядли кто позволит. Нам нужно немного доработать наше решение. Мы не первый год на рынке серверных технологий и уже научены, в том числе и собственным горьким опытом, не выкладывать не проверенных на 100% и откатанных решений. Мой прогноз — мы добавим RedMine в наш репозиторий через 2 недели.
Не понял, это инструкция для разворачивания уже существующего приложения на сервере или для создания дев-окружения? Ведь не может же это быть инструкцией по созданию продакшен окружения с нуля «Hello world» и последующей разработке в нём же.
Парадигма работы Microsoft Web Platform Installer и WebMatrix отличается от привычной парадигмы работы «рубиста». Мы напишем про это отдельную статью. Если коротко, то это фактически инструкция создания продакшн окружения и инструкция создания дев-окружения.

В парадигме WebPI/WebMatrix все дистрибутивы разденены на Products и Applications.

Products — это различные фреймворки, сервера базы данных, языки, надстройки над сервером и т.п. Их ставит администратор хостинга/сервера.

Applications — это то что ставится под сайт и может иметь зависимости из продуктов.

В данном случае администратор хостинга/сервера может поставить Blank Rails Project куда угодно на сервере. Однажды установленный он установит с собой зависимости, необходимые для запуска Rails приложений.

Разработчки также может использовать Blank Rails Project чтобы развернуть dev-окружение у себя. Он может начать разработку с этого пустого проекта или использовать другой. Затем он нажмет у себя кнопку Deploy (или просто загрузит файлы по FTP). Итого, если администратор сервера установил предварительно все зависимости, от которых зависит проект клиента, то он заработает на его сайте.

Сейчас описанная процедура у нас пока не доведена до конца, некоторые вещи приходится делать вручную. Это связано с особенностями работы Rails, Django (а именно предположением в них наличия SSH у пользователя). Мы эту процедуру скоро доделаем, и когда будет адекватно работать депроймент готовых open source приложений, можно будет говорить об автоматическом деплойменте пользовательских проектов.
Сорри, я сейчас не в состоянии воспринимать абстрактные рассуждения (праздную три праздника :) ), потому конкретизирую свою проблему с рельсами (и, кстати, с джангой аналогично):
Я в состоянии создать дев-окружение для рельс (или джанго, или ASP .NET MVC) локально (под линуксом). В состоянии разработать приложение и с помощью «такой-то матери» заставить его работать на продакшене (также под линуксом). Но основной причиной почему я не перехожу на Рельсы, Джангу или ASP .NET MVC (под Mono) является то, что нет удобной процедуры разворачивания приложения, а главное среды его выполнения на «голом» сервере и поддержки этой среды в актуальном и совместимом с приложением состоянии. Для разворачивания приложения под LAMP мне достаточно на «голом» сервере (Debian-based) дать две-ьри команды и отредактировать пару конфигов. С приложениям на языках отличных от PHP я встречаюсь с трудностями в развёртывании и администрировании окружения. Решает ли схема описанная в посте мои проблемы?
Ответ зависит от требований к окружению. В третьих рельсах можно сделать bundle package, это переместит все джемы и зависимости непосредственно в прложение. После этого приложение можно довольно легко деплоить простым копированием. Разумеется это не будет работать в случае если ваше приложение зависит от специфичных компонент, к рельсам в общем-то не относящихся. Например драйвер базы данных придется установить и т.п.
WebMatrix/WebPI позволяет деплоить заранее сконфигурированные пакеты. Он не может самостоятельно определить зависимости вашего собственного приложения. Это должно быть реализовано средствами самого фреймворка, в котором приложение разрабатывается. В общем случае лучше если фреймворк будет создавать приложения по методу «все в себе». Т.е. когда приложение зависит только от наличия самого фреймворка в системе, а все остальное что ему нужно держит внутри себя. Примерно так работает LAMP и, надеюсь, скоро так же будут работать Rails, Django и другие.
Интересно же будет посмотреть на запуск 3.1 под виндой. С его asset pipeline(sprockets). Что-то мне кажется, что заработает такая шутка не скоро. Ну а про всякие unicorn и thin и говорить нечего.
Как мне кажется, проще найти сервер (vds или виртуалка) и запускать на нём. Если этих ресурсов не хватит — тогда явно надо выбивать деньги, и странно, если их не будет для таких нагрузок
Вот кто этот сервер администрировать будет? Я могу заставить работать рельсовое приложение хоть под линуксом, хоть под фряхой, хоть под виндой. Но брать на себя ответсвтенность за это заставление я не хочу — наверняка в нём найдутся дыры конфигурации. На Heroku с радостью разверну, но мои заказчики не готовы столько платить…
странно, после всех вышерписанных манипуляций пункты меню что у вас с рельсами и джангами так и не появились!
беру свои слова обратно, после 5 раза все случилось! Все дело в «волшебных пузырьках»
UFO just landed and posted this here
Как ни крути, а в мире миллионы Windows серверов. На западе их используют чаще потому, что не думают о том, что они дороже решений на базе Linux или BSD.
Мы получили бесплатное, поддерживаемое компанией production-решение для запуска Django и Rails проектов на Windows. И это по-моему замечательно.
Ареал обитания Python и Ruby растёт!
UFO just landed and posted this here
Sign up to leave a comment.

Articles