Как удалить rails приложение
Устанавливаем linux, настраиваем ssh доступ к серверу, работаем с файлами проекта под Linux на Windows машине, рассмотрим настройку пар серверов Nginx + Passenger, Apache + Passenger, Nginx + Unicorn, Puma + Nginx, установим Ruby on rails с помощью rbenv, используем базу данных PostgreSQL и заставим все это хозяйство работать вместе.
Основная цель.
Основная задача – развернуть Rails-приложение на сервере Linux. Также настроить автоматическое обновление файлов проекта из удаленного git-репозитория и автоматическое отображение обновленного приложения по адресу в интернете.
Все действия можно разделить на несколько шагов.
Каждый шаг - это независимая часть целого, которая может быть установлена и настроена отдельно от других, однако в процессе сборки инструментов и подготовке сервера для развертывания приложения в WEB лучше соблюдать последовательность настройки инструментов, т.к. некоторые шаги используют результаты предыдущих шагов. Также последовательность отвечает соображениям логики.
Пользователи на сервере.
База данных (Postgresql, MySQL)
Сервер Linux.
Результат этого шага – IP-адрес сервера, который откликается на ping.
Сервером, который будет хранить и запускать файлы нашего приложения обычно является некая машина (реальная или виртуальная) с установленной ОС Linux.
Виртуальная машина на локальной машине.
Устанавливаем на локальный компьютер программу для управления виртуальными машинами VirtualBox. Она бесплатна и хороша.
Скачиваем дистрибутив Linux Ubuntu и устанавливаем его на виртуальную машину.
Также устанавливаем дополнения гостевой ОС:
меню Устройства -> подключить образ диска Дополнений гостевой ОС.
Перезапуск.
Теперь гостевая ОС Linux
- Включить еще один Адаптер2 с типом подключения « виртуальный адаптер хоста »
- Изменить тип подключения первого (и единственного) адаптера с "NAT" на "Сетевой мост" (bridged).
Узнать IP-адрес сервера можно, используя команду в терминале:
Смотрим свойство inet addr. Скорее всего это будет что-то типа 192.168.56.101
VPS (Virtual Private Server)
виртуальный сервер, предоставляемый хостинг-провайдерами в интернете. Например, DigitalOcean, самый дешевый тариф на нем 5$ в месяц. Но можно найти где-нибудь и зарегистрироваться по реферальной ссылке и получить 10$ на счет аккаунта, которых хватит на 2 месяца аренды сервера.
Следуем инструкциям при настройке удаленного сервера и получаем IP и данные SSH подключения.
Пингуем полученный IP-адрес сервера и убеждаемся, что он виден по сети.
Как сделать общую папку из Linux на Windows.
Скажем, зачем-то вам понадобилось из среды Windows получить доступ к каталогу с проектом, который лежит на Linux виртуальной машине в вашей ЛВС. Мне, например, нужно было запускать и тестировать проект под Linux, но редактор и все другие инструменты были установлены в Windows, и все что было нужно, это получить доступ к ним на редактирование из под Винды.
Выход - это сделать общую папку между двумя машинами.
Установим утилиту samba на Linux машине:
Создадим на Linux машине в домашнем каталоге пользователя папку, которую будем делать общей. Установим ей свойства как на картинке
Затем добавим пользователя к samba:
Обычно это тот же пользователь ОС.
И поменяем пароль на папку
Теперь эта папка видна на windows по локальной сети. Эту папку можно использовать для редактирования файлов проекта в редакторе в среде windows. А сами файлы проекта будут находиться и запускаться на Linux машине.
Пользователи на сервере
На VPS создан пользователь root по умолчанию. Пользователь root может делать на сервере все, что угодно. Поэтому лучше создать еще одного пользователя и включить его в группу sudo. Тогда этот пользователь сможет выполнять действия «как root» только если введет свой пароль. Таким образом мы немного увеличим безопасность нашего сервера.
[Опционально] установим на сервер локаль русского языка:
Создаем пользователя с именем maksim :
Придумываем надежный пароль и запоминаем его.
Добавляем пользователя в группу sudo
Настройка SSH соединения
Результат этого шага – возможность подключиться из терминала (или командной строки на Windows) на сервер Linux, используя SSH протокол.
Для начала на Linux сервере нужно установить набор утилит OpenSSH. Для этого в терминале сервера набираем команду:
Далее на локальной машине ОС Windows.
Для работы с SSH нам понадобится утилита Putty. Качаем ее тут и устанавливаем.
Запускаем Putty.
В поле Host name (or IP address) вводим IP-адрес нашего Linux сервера.
В открывшемся окне вводим логин и пароль пользователя Linux сервера и оказываемся технически в терминале сервера и можем выполнять в нем все команды так, как если бы мы открыли терминал внутри самого Linux-сервер.
Если на локальной машине установлена ОС Linux или iOS, тогда вместо Putty используем просто терминал этой ОС
Теперь на локальной машине нужно сгенерировать пару ключей (private-public).
На Windows-машине нет полноценной поддержки OpenSSH, поэтому будем генерировать ключи с помощью утилиты PUTTYgen. Она устанавливается в одном пакете с Putty.
Подробнее о порядке генерирования ключей смотри тут.
Private-key сохраняем на локальной машине как mykey.ppk .
Public-key сохраняем на локальной машине как id_rsa.pub и переносим на Linux-сервер.
Также сохраните текст публичного ключа из поля Public key for pasting into OpenSSH authorized_keys file в какой-нибудь текстовый файл в той же папке с ключами. Он имеет формат пригодный для OpenSSH.
Далее нам нужно скопировать публичный ключ на сервер Linux.
Сначала в домашней папке пользователя Linux создадим папку .ssh (если ее там нет) и внутри файл authorized_keys . Для этого набираем в терминале Putty команды:
Чтобы скопировать публичный ключ на сервер в созданное нами хранилище ключей, можно воспользоваться текстовым редактором nano (встроенный в Ubuntu) или редактором Vim (его нужно установить предварительно). Открываем файл authorized_keys в редакторе вставляем туда текст публичного ключа для OpenSSH и сохраняем файл.
На локальной машине Linux, iOS.
Скопируем публичный ключ с локальной машины на сервер для пользователя deploy:
Повышаем безопасность сервера
Нужно сконфигурировать наш SSH для повышения его безопасности. Для этого нужно
- поменять порт,
- отключить авторизацию по паролю,
- и включить белый список пользователей, которые могут логиниться по SSH,
- включить в этот список нашего пользователя.
В терминале putty набираем команды:
находим и меняем следующие настройки:
После сохранения этих настроек и перезапуска терминала вход на сервер будет возможен только по SSH, только на порт 2503 и только пользователю maksim. Поэтому нужно сохранить эту информацию где-то иначе зайти на сервер будет уже невозможно.
Перезапускаем настройки SSH
В случае использования PuTTY можно (и нужно) сохранить профиль подключения к серверу.
Запускаем PuTTY.
Заполняем IP и порт сервера, к которому хотим подключаться.
Connection type – SSH .
В дереве слева Connection-> Data -> в поле Auto-login user заполняем имя пользователя Linux, под которым будем заходить на сервер.
В дереве слева Connection->SSH->Auth -> в поле Private key file for authentication выбираем ранее сохраненный файл приватного ключа mykey.ppk.
В дереве слева Session -> в поле Saved Sessions пишем название настроек и нажимаем Save .
В списке ниже появится запись с только что сохраненными настройками.
В последующем из этих настроек можно будет загружать значения (Load) и соединяться с сервером с этими настройками.
Устанавливаем Ruby с помощью rbenv.
Результатом этого шага будет наличие установленных на сервере rbenv и ruby , что возможно будет проверить флагом «–v», который покажет версию этих программ.
Наберем в поисковой системе браузера «Ubuntu 16 install rbenv» и найдем страницу с инструкцией, например, эту.
Далее все инструкции взяты с этой страницы.
Установка rbenv
Далее установим rbenv клонированием репозитория в папку
Для автоматической загрузки rbenv добавим две настройки в конфигурационный файл bashrc:
Выполним теперь этот файл:
Проверим, правильно ли мы настроили rbenv:
Должно получиться это:
Установим плагин ruby-build:
Использование переменных окружения.
Перед тем как развернуть наше приложение мы должны установить секретный ключ (production secret key) и пароль к базе данных. Легкий способ загружать секретный ключ и пароль к базе данных в приложение во время исполнения – это использовать плагин rbenv-vars . Для использования этого плагина, его нужно просто склонировать из github репозитория:
Затем редактируем файл .rbenv-vars, просто добавляя в него пары <имя переменной>=<значение переменной>:
Чтобы посмотреть, какие переменные содержит плагин:
Установка ruby.
Проверим список доступных версий ruby:
Установим последнюю версию (ну или нужную):
Сделаем эту версию языка ruby используемой по умолчанию:
Проверим версию установленного ruby:
Чтобы узнать где лежит исполняемый файл ruby:
Работа с гемами.
Отключим установку документации гемов вместе с гемами. Для этого добавим строку «gem: --no-document» в файл настроек
Далее установим bundler, утилита которая скачивает и устанавливает гемы для ruby:
Чтобы узнать куда будут установлены все гемы, наберем команду:
NGINX+Passsenger
В поисковой системе браузера наберем ubuntu 16 install nginx passenger и найдем страницу с описанием установки, например, эту. Далее все инструкции будут взяты с этой страницы. Passenger NGINX
Установка.
Подключаем APT repository для последующей установки пакетов из него:
Устанавливаем Passenger + Nginx:
Проверка В браузере введем IP-адрес сервера. Мы должны увидеть страницу приветствия “Welcome to NGINX!”.
Настройка NGINX.
Редактируем основной конфигурационный файл nginx.conf (кнопка “i” в редакторе vim):
нам нужно поменять путь к исполняемому файлу языка ruby passenger_ruby на результат вывода команды which ruby :
кнопкой esc завершаем редактирование. :wq - выход с сохранением. Перезапускаем nginx:
Проверим, что все работает как и раньше – зайдем на стартовую страницу «Welcome to Nginx”, набрав IP адрес в браузере.
Настройки для приложения.
Создадим файл настроек для нашего приложения, чтобы сервер nginx мог его обслуживать. Для этого в папке /etc/nginx/sites-available создадим новый файл myapp (по названию приложения или как угодно):
Откроется текстовый редактор. В нем напишем следующий код:
В каталоге www будут все файлы приложения, а папка public это стандартная папка rails приложения. На данный момент ее не существует, поэтому создадим ее, находясь в домашней папке пользователя:
Создадим в этой папке файл index.html с текстом «My first app!»:
Мы создали сервер для нашего приложения в папке sites-available . Теперь, чтобы он запустился, нужно сделать символьную ссылку на него в папке sites-enabled :
Затем удалим сервер по умолчанию default из папки sites-enabled :
Перезапустим сервер nginx:
И проверим стартовую страницу в браузере по ip адресу нашего сервера. Должна быть страница с надписью «My first app!». Для дальнейших шагов по настройке Linux сервера остановим сервер nginx:
NGINX + Unicorn
В поисковике можно найти, например, такую ссылку. Этот шаг лучше делать после копирования на сервер файлов приложения (шаги 6-8). Установим Unicorn просто добавив его в gemfile и запустив bundle install в каталоге нашего приложения.
*почему-то это нужно сделать, даже если bundler уже стоит в системе. GemFile:
Конфигурируем Unicorn.
Для этого отредактируем файл /config/unicorn.rb . Скопируем туда этот код:
Не забудем создать каталоги, которые используются в этом файле:
Дадим права на запуск файла unicorn.rb :
Затем создадим скрипт запуска/остановки Unicorn. Создадим и откроем на редактирование файл скрипта
Скопируем в него следующий код:
Не забудем поменять значение настроек USER и APPNAME на наши значения. USER – это пользователь Linux, под которым будет запускаться Unicorn. Установим разрешения на редактирования файла и включим автозапуск при старте системы:
Запустим службу Unicorn
Теперь наше приложение запущено в production под управлением Unicorn.
Установка и настройка NGINX.
Теперь откроем на редактирование настройку сервера для нашего приложения:
Заменим весь текст в нем на следующий:
Мы создали сервер для нашего приложения в папке sites-available . Теперь, чтобы он запустился, нужно сделать символьную ссылку на него в папке sites-enabled :
Удалим из sites-enabled настройку по-умолчанию:
Проверяем доступность приложения по IP сервера в браузере.
Puma+NGINX
В поисковике можно найти такую ссылку. Далее инструкции из нее.
Установим Puma, просто добавив его в Gemfile:
Конфигурируем Puma.
Нам потребуется узнать количество ядер процессора, которые имеет сервер. Это можно сделать, выполнив команду:
Скопируем туда текст файла:
Поменяем количество workers на количество ядер процессора.
Этот файл сконфигурирует Puma под конкретно наше приложение, под его сокеты, логи и PIDы. Этот файл можно редактировать под нужды приложения, если нужно.
Создадим в приложении каталоги pids, sockets, log , на которые ссылается этот файл:
Создаем Puma Upstart script.
Этот скрипт нужен для возможности быстрой остановки и старта сервера Puma, а также для автоматического старта при запуске сервера.
Скачаем Jungle Upstart tool из репозитория Puma в домашний каталог пользователя.
Откроем загруженный файл puma.conf, для настройки пользователя.
Найдем такие строки setuid и setgid , и заменим ‘apps’ на имя нашего пользователя в Linux.
Затем скопируем оба файла в сервисный каталог Upstart:
Скрипт puma-manager.conf ссылается на файл /etc/puma.conf для получения приложений, которыми он должен управлять.
Создадим такой файл и запишем туда путь к нашему приложению:
Добавим в него путь к нашему приложению
**На Ubuntu 16.04 скрипт Upstart не запустится. Нужно еще кое-что сделать. Подробнее тут и тут
Создадим файл puma.service в каталоге /etc/system/system/ и скопируем туда текст следующего содержания:
Не забудем поменять значения переменных User, WorkingDirectory, ExecStart на правильные.
Затем выполняем по-очередно эти команды:
Изначально я сделал 2 приложения (app_a и app_b) в одном проекте в Ruby. Теперь я хочу удалить один из них (скажем, app_a). Как я должен делать так? Достаточно ли удалить папку приложения?
2 ответа
Я разветвил проект rails и обнаружил, что использует SASS, я хочу удалить SASS и написать свой css от руки. Могу ли я просто удалить folder:public/stylesheets/sass? Удалите gem из gemfiles, а затем продолжите работу с файлами .css, сгенерированными sass?
Вам нужно удалить связанную базу данных, а затем удалить каталог приложений
команда Rails generator создает копию фреймворка. Идентификатор каталога приложений самодостаточен. Достаточно удалить его. Если вы используете sqlite в качестве базы данных, вы можете пропустить первую команду.
Удаление папки приложения позволит избавиться от нее. Обязательно очистите файл маршрутов, если это необходимо, а также избавьтесь от таблицы базы данных, если она была создана.
Похожие вопросы:
Я использую Ruby 2.2.0p0 и Rails 4.2.0. Приложение Rails в настоящее время по умолчанию использует minitest, хотя в файле Gemfile нет никаких тестовых драгоценных камней. Например, у меня есть rake.
Что я сделал : Я по ошибке установил rails не на тот набор драгоценных камней . $ rvm use 1.9.3 Using /home/username/.rvm/gems/ruby-1.9.3-p125 $ gem env gemdir.
У меня есть приложение rails, в котором я реализовал некоторую функцию. Теперь я хочу удалить эту функцию, не нарушая код. Поскольку приложение работает на рабочем сервере, это делает его немного.
Я разветвил проект rails и обнаружил, что использует SASS, я хочу удалить SASS и написать свой css от руки. Могу ли я просто удалить folder:public/stylesheets/sass? Удалите gem из gemfiles, а затем.
Как правильно удалить CocoaPods из проекта? Я хочу удалить весь CocoaPod. Из-за некоторых ограничений, наложенных моим клиентом, я не могу его использовать. Мне нужно иметь только один xcodeproj.
Я добавляю некоторые тесты API к существующему проекту Rails 4, который имеет rspec в своем Gemfile. Поскольку в существующем проекте не было никаких тестов, а у меня есть тесты в minitest, которые.
Я хочу удалить django-taggit из своего проекта, но когда я удалил приложение 'taggit' из INSTALLED_APPS , произошла следующая ошибка: raise NodeNotFoundError(self.error_message, self.key.
Я настроил ESLint для своего проекта , используя eslint --init , он настроен для моего проекта. Теперь я хочу удалить его из своего проекта, потому что он показывает ненужные ошибки по всему.
Давайте построим: с Ruby On Rails - Приложение "Библиотека книг" - Добавление подписок и Stripe - Часть 5
Я установил гем в свое приложение Rails (разработка). После того, как я установил гем, я понял, что он мне не нужен.
Я хочу удалить гем, его зависимости и файлы, которые он создал в моем приложении. Другими словами, я хочу восстановить систему до того состояния, в котором она была до драгоценного камня. Как я могу это сделать? (Я использую Ruby on Rails 3.)
Devise использует некоторые генераторы для генерации представлений и добавления его в ваше приложение. Если вы запустили этот генератор, вы можете легко отменить его с помощью
Ты можешь использовать
- 8 Почему за это так много голосов? Вопрос в том, как его убрать из RoR применение. А для этого нужно просто удалить его из Gemfile.rb а также bundle еще раз. Вот и все. А для удаления зависимостей вам нужно удалить связанные файлы и зависимости.
- А для новых приложений Rails мы можем воспользоваться irb чтобы сохранить вашу систему и работать в виртуальных средах на основе рубиновых версий.
Если вы используете Rails 3+, удалите гем из Gemfile и запустите bundle install .
Если вы используете Rails 2, надеюсь, вы поместили объявление в config / environment.rb. Если да, то удалите его оттуда и запустите rake gems:install должен сделать свое дело.
- Удалит ли это также файлы, созданные гемом?
- Обычно он не добавляет никаких файлов, если вы явно не укажете его, но может изменить некоторые из существующих файлов, например routes.rb. Если вы хотите откатить эти изменения, вы можете вернуться через исходный элемент управления, как сказал @harald.
- Это тоже удалит все генераторы?
Для Rails 4 - удалите имя гема из Gemfile а затем запустить bundle install в вашем терминале. После этого также перезапустите сервер.
Как насчет чего-то вроде:
(это предполагает, что вы не используете сборщик, но я думаю, что это не так, поскольку удаление gemspec из вашего пакета решит проблему)
Вы используете какой-то контроль версий, верно? Тогда должно быть довольно просто восстановить фиксацию до того, как вы добавили гем, или вернуть ту, в которую вы его добавили, если у вас есть несколько ревизий после этого, которые вы хотите сохранить.
Если вы используете RVM, зачем беспокоиться даже об удалении системы ruby?
Я устанавливаю как 1.8.7, так и 1.9.2-rc через RVM.
После того, как вы установили RVM вы можете установить RVM 1.8.7 как стандартную рубиновую установку. Просто не устанавливайте RVM как root.
Убедитесь, что вы прочитали инструкции о том, какие пакеты вам необходимо установить Ubuntu перед установкой 1.8.7 через RVM. Если вы не установите их, у вас могут возникнуть проблемы с некоторыми драгоценными камнями.
Я тоже собирался ответить на это! Не тратьте впустую свое время, новая среда RVM будет иметь приоритет над вашей средой с бортовыми системами. – Derek 3 January 2011 в 16:14 Установка RVM, похоже, не работает за брандмауэром. – slikts 30 November 2011 в 21:20Используя synaptic, вы можете удалить пакеты Ruby (выберите «полностью удалить»). Я думаю, это эквивалент командной строки: sudo apt-get purge
Теперь для драгоценных камней: они не рассматриваются как пакеты. Вам нужно будет удалить их вручную (если вы не хотите использовать Ruby для этого, но, поскольку вы говорите, что это сломано . )
По умолчанию камни Ruby установлены в вашей домашней папке, под .gem. Если вы действительно хотите, чтобы все было чисто, просто удалите
/ .gem, и этого должно быть достаточно. Когда вы переустановите Ruby и все, папка будет создана снова, и вам будет хорошо идти.
Если вы установили Ruby с помощью RVM, следующая команда полностью удалит установленную директорию RVM:
Запуск этой команды попросит ваше подтверждение удалить каталог .rvm. [!d1 ]
Обратите внимание, что вам может потребоваться вручную удалить / etc / rvmrc и
/ .rvmrc, если они существуют все еще. Пожалуйста, проверьте все .bashrc .bash_profile .profile и .zshrc для исходных строк RVM и удалите или закомментируйте, была ли это установка для каждого пользователя.
Читайте также: