![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Проект и инструкция по деплойменту: https://github.com/iced/worm-reports
На данный момент деплоймент этого дела выглядит как пошаговая стратегия.
Причем ребе айсед принимает активное участие в деплойменте, см https://github.com/iced/worm-reports/commits/ за 06.02
1) поставить curl 2) bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) [[ -s "/home/zju/.rvm/scripts/rvm" ]] && source "/home/zju/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 3) source ~/.profile
инсталлятор меняет ~/.profile но в инструкции по rvm написано ~/.bash_profile
про ~/.profile сказано только в выводе bash
Первый затык:
инсталляция rvm и запуск rvm requirements выдает набор текста:
100 799k 100 799k 0 0 175k 0 0:00:04 0:00:04 --:--:-- 276k Upgrading the RVM installation in /home/zju/.rvm/ Removing rvm loading line from '/home/zju/.profile'. Adding rvm loading line to '/home/zju/.profile'. Upgrade Notes: * No new notes to display. # RVM: Shell scripts enabling management of multiple ruby environments. # RTFM: https://rvm.beginrescueend.com/ # HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net) # Screencast: http://screencasts.org/episodes/how-to-use-rvm # In case of any issues read output of 'rvm requirements' and/or 'rvm notes' Upgrade of RVM in /home/zju/.rvm/ is complete. # zju, # # Thank you for using RVM! # I sincerely hope that RVM helps to make your life easier and more enjoyable!!! # # ~Wayne zju@ubuntu00:~$ source ~/.profile zju@ubuntu00:~$ rvm requirements Requirements for Linux ( DISTRIB_ID=Ubuntu DISTRIB_RELEASE=10.04 DISTRIB_CODENAME=lucid DISTRIB_DESCRIPTION="Ubuntu 10.04.3 LTS" ) NOTE: 'ruby' represents Matz's Ruby Interpreter (MRI) (1.8.X, 1.9.X) This is the *original* / standard Ruby Language Interpreter 'ree' represents Ruby Enterprise Edition 'rbx' represents Rubinius bash >= 4.1 required curl is required git is required (>= 1.7 for ruby-head) patch is required (for 1.8 rubies and some ruby-head's). To install rbx and/or Ruby 1.9 head (MRI) (eg. 1.9.2-head), then you must install and use rvm 1.8.7 first. Additional Dependencies: # For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following: ruby: /usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsq lite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion # For JRuby, install the following: jruby: /usr/bin/apt-get install curl g++ openjdk-6-jre-headless jruby-head: /usr/bin/apt-get install ant openjdk-6-jdk # For IronRuby, install the following: ironruby: /usr/bin/apt-get install curl mono-2.0-devel
Я считаю, что это понятно только тому, кто варится в руби. Очевидно, админ-деплоер в норме руби знать не будет.
Далее, выполняем:
/usr/bin/apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Я то знаю, что это значит, что нужно запускаться от root, но где это в документации? :)
Далее:
инструкция по rvm: rvm install 1.9.3
Инструкция айседа: rvm install 1.9.3 --default
Я знаю, чем это отличается и какую из команд выбрать, но будет ли это знать тот, кто выполняет деплоймент?
git checkout git@github.com:iced/worm-reports.git - тут ошибка, правильно
git clone https://github.com/iced/worm-reports.git или же скачать zip
далее: cd worm_reports -> cd worm-reports
далее: настраиваем postgresql и базу worm_reports_development. Это не относится к проекту, т.к. я сразу сказал что база будет готовая, но надо проверить как отработает миграция. Кстати, в инструкции нигде не сказано, что база должна быть создана и пользователь должен существовать):
1) sudo -u postgres psql
2) create user worm password 'worm' createdb;
3) \q
4) psql -U worm -d template1
5) create database worm_reports_development;
Далее bundle:
bundle Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /home/zju/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/home/zju/.rvm/rubies/ruby-1.9.3-p0/bin/ruby --with-pg --without-pg --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib --with-pg-config --without-pg-config --with-pg_config --without-pg_config Gem files will remain installed in /home/zju/.rvm/gems/ruby-1.9.3-p0/gems/pg-0.12.2 for inspection. Results logged to /home/zju/.rvm/gems/ruby-1.9.3-p0/gems/pg-0.12.2/ext/gem_make.out An error occured while installing pg (0.12.2), and Bundler cannot continue. Make sure that `gem install pg -v '0.12.2'` succeeds before bundling. zju@ubuntu00:~/worm-reports$
не работает. Валится на сборке гема 'pg'. Ребе айсед пофиксил документацию, дописал нужную команду: apt-get install libpq-dev
Я бы это собрал и сам, но при деплойменте рыться в логах bundler и вспоминать в каком пакете живет хидер от postgresql - печально. Ладно, ставим libpq-dev, перезапускаем bundle. Откуда мы знаем, что повторный запуск безопасен? Ну, верим в честное слово линуксоидов, как обычно.
далее: можно пойти по оригинальной версии инструкции и запустить rake:dbmigrate:
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
(See full trace by running task with --trace)
читаем обновленнную версию инструкции и идем читать https://github.com/sstephenson/execjs и https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager (не забываем, мы деплоим у клиента, в ебенях ада, под чутким надзором службы безопасности и ИТ-службы клиента). Делаем, как там написано, ставим левый софт и левый репозиторий (http://ppa.launchpad.net/chris-lea/node.js/ubuntu/ lucid/main Translation-en_US):
sudo apt-get install python-software-properties sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Далее rake db:migrate, rake db:seed и rails -s отрабатывают как положено. Приложение отдеплоено (в девелопмент режиме, с Webrick?), будем проверять( инструкцию не читаем, само собой):
http://test:3000
Routing Error
No route matches [GET] "/"
Try running rake routes for more information on available routes.
zju@ubuntu00:~/worm-reports$ rails s => Booting WEBrick => Rails 3.2.1 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2012-02-06 14:27:13] INFO WEBrick 1.3.1 [2012-02-06 14:27:13] INFO ruby 1.9.3 (2011-10-30) [i686-linux] [2012-02-06 14:27:13] INFO WEBrick::HTTPServer#start: pid=26298 port=3000 Started GET "/" for 192.168.240.18 at 2012-02-06 14:29:11 +0300 ActionController::RoutingError (No route matches [GET] "/"): actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app' railties (3.2.1) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' rack (1.4.1) lib/rack/runtime.rb:17:in `call' activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.1) lib/rack/lock.rb:15:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call' railties (3.2.1) lib/rails/engine.rb:479:in `call' railties (3.2.1) lib/rails/application.rb:220:in `call' rack (1.4.1) lib/rack/content_length.rb:14:in `call' railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call' rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' /home/zju/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' /home/zju/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' /home/zju/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' Rendered /home/zju/.rvm/gems/ruby-1.9.3-p0/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (2.1 ms)
Ответ ребе айседа: "http://test:3000/reports блядь". В документации это написано, но мы ее не читаем, само собой(ибо заебались от предыдущего всего).
TL;DR: У меня приложение поставилось (по последней версии инструкции) без явных проблем, вперемежку с записью результатов в ЖЖ и спорами с айседом. Тем не менее, первая версия инструкции содержала ошибки и несколько умолчаний (nodejs, lib_pqdev).
У
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Частично проблема в том, что она спешит, не всегда читает вывод команд и промахивается по кнопкам, а опыта для диагностики странных ошибок по оккультным сообщениям у нее недостаточно. Как минимум, один такой случай я видел.
(переформулирую более литературно: у нее мало опыта, чтобы не допускать чортово вуду на автомате(как это делают айсед, я и прочие ребе) и мало опыта, чтобы допущенное чортово вуду исправлять, исходя из оккультной симптоматики).
Проблемы:
1) .bash_profile и .profile - это упоминается в выводе инсталлятора rvm, но среди полстраницы вывода нужно заметить это и увязать с тем, что нужно выполнить source ~/.profile а не source ~/.bash_profile, как написано на сайте rvm. Т.е. "ответвление в инструкции".
2) rvm не поставился. По той причине, что rvm requirements не выдал список требований. Я не знаю, почему.
3) Вывод rvm requirements понятен только тем, кто варится в руби или вообще в разработке под линукс.
Итого: подобный деплоймент годится только для разработчиков или продвинутых админов, которым не влом делать весь вышеописанный ад.
Как бы переделал инструкцию по деплойменту:
1) Все инструкции с внешних сайтов перенес бы в свою.
2) Для каждой команды добавил бы подробное описание, что она делает, и какой должен быть вывод. Это обязательно, т.к. даже я не знаю, что делает та или иная команда и верно ли она отработала - это я решал при своем деплойменте реально НАУГАД.
Насчет того, что ставить надо из пакетов и реп: все верно, но ребе айсед сознательно выбрал идеологически другой метод, т.е. формально его сравнить с пакетным менеджером и прочим сложно. Как лучше делать, я не знаю. Лично я бы предпочел стабильный метод с пакетами, потому что мне подобная идеология ближе.
Приложение работает, его я оттестирую чуть попозже.
no subject
Date: 2012-02-06 10:51 am (UTC)no subject
Date: 2012-02-06 10:55 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 10:56 am (UTC)no subject
Date: 2012-02-06 10:54 am (UTC)no subject
Date: 2012-02-07 12:35 pm (UTC)no subject
Date: 2012-02-06 11:02 am (UTC)Все мои энтерпрайзи-поделия запускаются как java -jar myEnterpriseShit.jar, и самоконфигурируются (а если не могут само- — задают вопросы).
Или учитесь у инсталлятора вордпресса.
no subject
Date: 2012-02-06 01:02 pm (UTC)смысла делать хороший инсталятор для "давайте померяемся ЯП" я не вижу.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 01:40 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 03:05 pm (UTC)Деплоить так продакшин никто не будет в здравом уме. РВМ тащить на продакшин тоже тот еще изврат (разве что на дешевый виртуальный сервер, где крутиться 10 разных версий руби).
Гемсеты создавать смысла нет, если используется bundler. А он тут используется.
Рантайм для ассетов ставят из тех же пакетов шефом.
По коду тоже есть замечания, но так как программировалось на скорость, как я понимаю, все вполне нормально выглядит, разве что куча респондеров режет глаза. Я бы вынес логику в lib. Почему в lib валяется сторонняя (?) библиотека, я тоже не понимаю.
(no subject)
From:no subject
Date: 2012-02-06 04:08 pm (UTC)no subject
Date: 2012-02-06 04:33 pm (UTC)если мы предпологаем что жаба стоит уже такая какая надо, то давай предположим что стоит и такой какой надо руби. а гемы забандлим, хуле. и весь деплой будет `rails s`.
(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 11:08 am (UTC)no subject
Date: 2012-02-06 11:15 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2012-02-07 06:24 am (UTC) - Expand(no subject)
From: (Anonymous) - Date: 2012-02-07 06:36 am (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2012-02-06 03:26 pm (UTC) - Expand(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 11:21 am (UTC)no subject
Date: 2012-02-06 11:27 am (UTC)Нуслирубы.no subject
Date: 2012-02-06 11:36 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 11:47 am (UTC)no subject
Date: 2012-02-06 11:56 am (UTC)no subject
Date: 2012-02-06 11:58 am (UTC)напился и сидит в вытрезвителидисквалифицировался. артурег не может залить проект на гитхаб и наверное заливает на мегааплоад.no subject
Date: 2012-02-06 11:58 am (UTC)no subject
Date: 2012-02-06 12:01 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 12:37 pm (UTC)no subject
Date: 2012-02-06 01:02 pm (UTC)Чтобы даже при ошибках было понятно "куда идти дальше".
no subject
Date: 2012-02-06 02:31 pm (UTC)no subject
Date: 2012-02-06 02:50 pm (UTC)no subject
Date: 2012-02-06 04:41 pm (UTC)no subject
Date: 2012-02-06 04:49 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-06 06:13 pm (UTC)Я хз как оно вообще по-жизни, но, по-моему, лучше криво деплоящееся решение на руби, нежели вовсе отсутствующие решения на пхп или жабе.
no subject
Date: 2012-02-06 06:18 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 02:54 am (UTC)жаль что руби а не питон =) ну да фиг с ним =)
а где остальные участники регаты??
где реальные прожекты на кровавом интрепрайс жаба и моем любимом php ??
no subject
Date: 2012-02-07 03:33 am (UTC)Про рhр пока не слышно, но это ожидаемо - для рhр почти любая задача слишком сложная. :)
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-02-07 03:05 am (UTC)no subject
Date: 2012-02-07 12:32 pm (UTC)Плюнул и завел софт айседа на FreeBSD :)
(no subject)
From:(no subject)
From: