Настройка Web-сервера

Нужна помощь?


Вы всегда можете задать вопрос нашему специалисту и мы постараемся Вам помочь!

Установка Ubuntu VPS для хостинга приложений Ruby On Rails

Предположим, что вы построили небольшое приложение Ruby on Rails на локальном компьютере. Пришло время примененить его в жизни. Но где вы должны  его держать? У вас (или вашего клиента) не так много денег, поэтому вы рассматриваете различные варианты. Вы сразу видите, что управляемый хостинг приложения довольно дорог. Heroku, хороший вариант, но он не дает вам место для хранения приложения, и что более важно он не дает полный контроль. К счастью у вас есть подходящая альтернатива: VPS.

Это руководство поможет вам пошагово создать VPS на Ubuntu, который способен размещать несколько приложений Ruby on Rails. Первая часть этого руководства посвящена тому, как запустить локальную машину для приложения Ruby on Rails. Мы рекомендуем  вам изучить сначала первую часть, и использовать туже локальную машину Ubuntu в дельнейшем.

Что такое VPS?

VPS – это виртуальный частный сервер. Это виртуальная машина, которая предлагает Интернет – хостинговыми компаниями. VPS дает вам виртуальное место. С VPS вы получаете свою собственную часть виртуального места, которое уживается с остальными виртуальными частями на одном физическом сервере. На этой виртуальной машине может работать операционная система, веб-сервера и база данных программного обеспечения. VPS представляет полный контроль (или корневой доступ) большинства хостинговых компаний по очень разумной цене. И поскольку VPS способна запускать несколько приложений Ruby on Rails одновременно, то затраты на VPS можно сократить.

Краткий обзор

В этом руководстве мы войдем в VPS, добавим нового пользователя и сконфигурируем SSH соединение, чтобы сделать VPS более защищенным. Потом мы установим Ruby и RubyGems используя скрипт Ruby Version Manager (RVM). После этого мы установим Rails и Capistrano, используя RubyGems. После мы установим Passenger и займемся инсталляцией веб-сервера Nginx. Так же на VPS будет база данных PostgreSQL.

На время написания этого руководства самая последняя версия Ubuntu Server 10.10, Ruby 1.9.2 и Rails 3.0.7. Эти шаги были также протестированы на Ubuntu Server 10.04 и предстоящих выпуску Ubuntu Server 11.04.

На протяжении всего руководства мы будем часто использовать командную строку Linux. В конце этого руководства вы найдете краткий словарь, он описывает самые важные команды Linux.

Запуск

В начале найдите подходящий хостинг и купите VPS (если у вас его нет). Убедитесь, что хостинг позволяет вам установить Ubuntu на VPS. Большинство хостинговых компаний позволяют это сделать, поскольку это популярный выбор для VPS. Я выбрал VPS 512 MB, которого должно хватить для запуска нескольких маленьких приложений Ruby on Rails.

Те, у кого нет VPS, могут следовать этому руководству, используя программное обеспечение для виртуализации, например VirtualBox. VirtualBox – это программное обеспечение с открытым кодом, оно доступно через Ubunru Software Center или через официальный веб-сайт virtualbox.org. Когда вы будете запускать свою виртуальную машину убедитесь, что ваши настройки сетевого адаптера стоят на «Bridged» (Правый клик – Настройки – Сеть – Присоединено к: Bridged Adapter). Таким образом, ваша виртуальная машина получит свой собственный IP адрес в локальной сети. Просто установите свежую копию Ubuntu Server, во время инсталляции выберите «OpenSSH server» и пропустите следующие два шага. Вы можете напрямую войти через окно VirtualBox или, если вы знаете IP адрес сервера, через SSH.

Войдите в панель управления VPS вашего хоста, и установите свежую копию Ubuntu Server. Убедитесь, что вы предоставили «root» пароль, и запустите VPS.

Войдите в свой VPS

Мы запускаемся в наш VPS используя SSH. SSH – защищенная оболочка которая является сетевым протоколом. SSH позволяет компьютерам связываться друг с другом через зашифрованное соединение.

Я предполагаю, что вы знаете IP адрес вашего VPS (если нет, то посмотрите в панели управления вашего хоста), и что «root» является пользователем по умолчанию. Предположим что вы знаете пароль «root», а также что SSH установлено.

Несмотря на то, что войти в систему используя доменное имя VPS технически возможно, мы сделаем это используя IP адрес VPS. Создание доменного имени вашего VPS очень контекстно-специфично и выходит за рамки этого руководства.

Теперь откроем окно терминала на вашей локальной машине Ubuntu, и войдем в ваш VPS:

1
$ ssh default-user@vps-ip-address
$ ssh default-user@vps-ip-address

Например:

1
$ ssh root@123.456.7.890
$ ssh root@123.456.7.890

Возможно, вам придется 2 раза напечатать yes и потом ввести пароль «root». Примерно через секунду вы должны будете войти.

Запустим ваш VPS

По соображениям безопасности вы должны делать как можно меньше, как «root». Мы создадим нового пользователя и дадим ему права администратора. Чтобы использовать права администратора пользователю необходимо запустить команду «sudo», которая добавляет еще один уровень безопасности к администрированию системы. Сначала создайте нового пользователя:

1
$ adduser your-user-name
$ adduser your-user-name

Например:

1
$ adduser johndoe
$ adduser johndoe

Введите безопасный пароль (заполнение информации о пользователе необязательно). Теперь, сделайте нового пользователя членом группы администрирования, это даст пользователю права администратора (путем вызова команды «sudo»).

1
$ adduser your-user-name group-name
$ adduser your-user-name group-name

Например:

1
$ adduser johndoe admin
$ adduser johndoe admin

Следующий шаг, защита конфигурации вашего SSH сервера. Поскольку в каждой системе Unix есть пользователь «root» по умолчанию, вы должны отключить вход в систему «root» использованием SSH. Это сделает вашу систему менее уязвимой от атаки.

1
$ nano /etc/ssh/sshd_config
$ nano /etc/ssh/sshd_config

Установите значение PermitRootLogin на no, и перезагрузите SSH конфигурацию для того, чтобы изменения вступили в силу. Хотя  «root» будет отключен от входа в систему в дальнейшем, текущее соединение «root» будет сохранено.

1
$ /etc/init.d/ssh reload
$ /etc/init.d/ssh reload

Выйдите из VPS как «root», и снова войдите как новый пользователь.

1
2
$ logout
$ ssh your-user-name@vps-ip-address
$ logout
$ ssh your-user-name@vps-ip-address

Например:

1
$ ssh johndoe@123.456.7.890
$ ssh johndoe@123.456.7.890

Теперь, когда создан новый пользователь и пользователь «root» не может войти в систему через SSH, система стала более защищенной. Некоторые из предстоящих шагов повторяют шаги, которые мы делали в первой части данного руководства, а также позволяют установить RVM, Ruby, RubyGems и Rails.

Обновление

Первые три команды ниже, по очереди обновят список пакетов, проапгрейдят установленные пакеты, а также установят новые пакеты и удалят устаревшие. В конечном итоге у вас будет полностью обновленная VPS. Последняя команда перезагрузит VPS, это стоит делать после обновления большого количества пакетов.

1
2
3
4
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo reboot

Подготовьте свой VPS для RVM

Подождите около минуты для перезагрузки VPS. После перезагрузки войдите обратно в VPS через окно терминала.

1
$ ssh your-user-name@vps-ip-address
$ ssh your-user-name@vps-ip-address

Например:

1
$ ssh johndoe@123.456.7.890
$ ssh johndoe@123.456.7.890

Чтобы установить скрипт RVM, нужны некоторые пакеты, а именно, Curl и Git. Curl позволяет передавать данные используя несколько протоколов (таких как HTTP и FTP). Git – это бесплатная, с открытым кодом система для контроля версий, созданная для работы с маленькими и большими проектами, быстро и эффективно. Большинство разработчиков приложения Ruby on Rails выбирают Git для контроля версии.

1
2
$ sudo apt-get install curl
$ sudo apt-get install git-core
$ sudo apt-get install curl
$ sudo apt-get install git-core

Установите RVM

Теперь мы можем установить RVM. RVM расшифровывается, как Ruby Version Manager и является инструментом командной строки, который позволяет вам легко устанавливать, управлять и работать с несколькими средами Ruby, от перевода до установки Gems. Следующая команда устанавливает скрипт. RVM будет установлен в корневом каталоге текущего пользователя.

1
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Перейдите к корневому каталогу и отредактируйте профиль пользователя bash. Это гарантирует, что скрипт RVM будет загружен, при входе данного пользователя в систему. Чтобы отредактировать профиль bash, мы используем Nano. Nano – простой редактор текста командной строки, мы будем его использовать в дальнейшем.

1
2
$ cd
$ nano .bashrc
$ cd
$ nano .bashrc

Добавьте следующую строку в конце профиля пользователя bash.

1
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

Загрузите скрипт в текущем сеансе путем перезагрузки профиля bash. Таким образом, будет доступна команда RVM.

1
$ source .bashrc
$ source .bashrc

Вы можете проверить работает ли скрипт RVM, введя следующую команду:

1
$ type rvm | head -1
$ type rvm | head -1

Если все настроено правильно, то должно придти сообщение, что «rvm is a function». Если его нет, перейдите к веб-сайту RVM и посмотрите в разделе «Troubleshooting Your Install», как устранить неисправность.

Подготовьте свой VPS для Ruby и RubyGems

RVM поставляется с удобным инструментом dependencies, необходимым для компиляции и установки Ruby и RubyGems из исходников.

1
$ rvm notes
$ rvm notes

Посмотрите dependencies, перечисленные в обычной версии Ruby и установите их. Некоторые пакеты могут быть уже установлены.

1
2
3
4
$ sudo apt-get install build-essential bison 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
$ sudo apt-get install build-essential bison 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

Установите Ruby и RubyGems, используя RVM

С одной стороны у нас есть Ruby. Это – динамический, общедоступный язык программирования с упором на простоту и производительность. У него приятный синтаксис, который прост для чтения и легок в написании.

С другой стороны у нас есть RubyGems. Это упаковочная система Ruby. Она обеспечивает стандартный формат для распространения программ и библиотек Ruby. Оснащена инструментом для управления установкой Gem пакетов, утилитой Gem server для обслуживания Gems с любого компьютера, на котором установлен RubyGems. И обеспечивает стандартный способ издать пакеты Gem.

Вроде команд RVM, описанных выше, есть также команда, которая позволяет увидеть какие версии Ruby доступны для установки с помощью RVM.

1
$ rvm list known
$ rvm list known

Установите обычную версию Ruby. Поскольку Ruby компилируется из исходных текстов, это может занять некоторое время.

1
$ rvm install 1.9.2
$ rvm install 1.9.2

Используйте установленную Ruby и установите эту версию по умолчанию.

1
$ rvm --default use 1.9.2
$ rvm --default use 1.9.2

Проверьте версии Ruby и RubyGems, чтобы удостовериться, правильно ли они установлены.

1
2
$ ruby –v
$ gem -v
$ ruby –v
$ gem -v

При необходимости вручную обновите RubyGems и возможно Gems.

1
2
$ gem update --system
$ gem update
$ gem update --system
$ gem update

Установите Rails, используя RubyGems

Rails Gem – единственное, что осталось поставить на Ruby on Rails. Его установка является одной из самых простых частей этой обучающей программы. Он устанавливается с помощью RubyGems, вызываемого командой Gem. По окончании установки, проверьте версию Rails, чтобы убедиться должным образом ли он установлен.

1
2
$ gem install rails
$ rails -v
$ gem install rails
$ rails -v

Установите Passenger, используя RubyGems

Phusion Passenger делает развертывание веб-приложений Ruby, таких как, основанные на революционной Ruby на веб-структуре Ruby on Rails. Это модуль для запуска приложений Ruby on Rails в соединении с веб-сервером, такого как Nginx.

Вы можете установить Passenger используя RubyGems, а затем поверить версию Passenger для того, чтобы убедиться был ли Passenger установлен должным образом.

1
2
$ gem install passenger
$ passenger -v
$ gem install passenger
$ passenger -v

Установите Nginx, а также настройте модуль Passenger

Nginx, произносится как «engine x», и является HTTP и обратным прокси-сервером, а также почтовым прокси-сервером. Проще говоря, это универсальный веб-сервер, не требующий больших ресурсов.

Чтобы позволить Passenger устанавливать Nginx, вы должны установить сначала dependency.

1
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install libcurl4-openssl-dev

Вы можете приступить к установке Nginx и настройке модуля Passenger с помощью следующей команды. Обратите внимание, что мы используем rvmsudo вместо sudo, потому что обычный sudo не работает на этой небольшой программе.

1
$ rvmsudo passenger-install-nginx-module
$ rvmsudo passenger-install-nginx-module

Программа проверит dependencies, а потом спросит, хотите ли вы, чтобы программа загрузила исходный код Nginx или вы хотите загрузить его самостоятельно. Выберите опцию 1 (программа загрузит исходный код Nginx для вас), и нажмите «Enter». Вы можете оставить все настройке по умолчанию, просто следуйте процессу установки.

В конце концов, вам будут представлены два экрана. На первом показано, как настроить Nginx для работы с Passenger, это было уже сделано программой. Второй показывает, как настроить Nginx для развертывания приложения. Позже мы вернемся к этому примеру.

Вы можете запустить Nginx вручную…

1
$ sudo /opt/nginx/sbin/nginx
$ sudo /opt/nginx/sbin/nginx

… но лучше использовать скрипт запуска. (Потому что Nginx компилируется из исходных кодов, и не использует запуск скрипта). При запуске скрипта, мы можем не только запустить Nginx, но и остановить, перезагрузить и перезапустить его. Кроме того, Nginx будет запускаться автоматически при неожиданной перезагрузке VPS. Поэтому нам необходимо скачать небольшой загрузочный скрипт для Nginx, используя Wget. Wget – это простая программа командной строки, которая позволяет загружать файлы из Интернета. Вам не нужно понимать все команды. Они просто помещают скрипт в нужное место и проверяют, что Nginx запускается при загрузке системы.

1
2
3
4
5
$ cd
$ wget http://www.smashingmagazine.com/files/nginx
$ sudo mv nginx /etc/init.d/nginx
$ sudo chmod +x /etc/init.d/nginx
$ sudo /usr/sbin/update-rc.d -f nginx defaults
$ cd
$ wget http://www.smashingmagazine.com/files/nginx
$ sudo mv nginx /etc/init.d/nginx
$ sudo chmod +x /etc/init.d/nginx
$ sudo /usr/sbin/update-rc.d -f nginx defaults

С этого момента, следующие команды могут быть использованы для запуска, остановки, перезагрузки и перезагрузки Nginx.

1
2
3
4
$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/nginx stop
$ sudo /etc/init.d/nginx reload
$ sudo /etc/init.d/nginx restart
$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/nginx stop
$ sudo /etc/init.d/nginx reload
$ sudo /etc/init.d/nginx restart

Установка PostgreSQL

PostgreSQL является сложной объектно-реляционной СУБД (система управления базами данных), поддерживающая почти все конструкции SQL, включая подзапросы, транзакции и определяемые пользователем типы и функции.

Установите PostgreSQL с dependency. Dependency нужна чтобы позже установить «pg» Gem, который отвечает за связь между PostgreSQL и Ruby on Rails.

1
$ sudo apt-get install postgresql libpq-dev
$ sudo apt-get install postgresql libpq-dev

Настройка PostgreSQL

Когда пакеты будут установлены, переходите к настройке PostgreSQL, обеспечение PSQL. PSQL является интерактивным терминалом PosgreSQL, и он используется для административных задач баз данных.

По умолчанию, вам не нужен пароль, чтобы войти в PSQL. Мы изменим это, редактируя опознавательный метод и перезагружая конфигурацию PostgreSQL. Но сначала назначим пароль для суперпользователя «postgres». Войдите в PSQL, назначьте безопасный пароль на «postgres», а затем выйдите из PSQL.

1
2
3
$ sudo -u postgres psql
# \password postgres
# \q
$ sudo -u postgres psql
# \password postgres
# \q

Теперь изменим конфигурацию проверки подлинности, изменяя ident для md5. В конце файла конфигурации для гарантии зашифрованности пароля можно найти две соответствующие строки, которые должны быть отредактированы. После этого перезагрузите измененную конфигурацию в PostgreSQL.

1
2
$ sudo nano /etc/postgresql/8.4/main/pg_hba.conf
$ sudo /etc/init.d/postgresql reload
$ sudo nano /etc/postgresql/8.4/main/pg_hba.conf
$ sudo /etc/init.d/postgresql reload

Большинство других настроек PostgreSQL хранятся в другом файле конфигурации. Эти настройки тоже могут быть оптимизированы, но это выходит за рамки данного руководства. Имейте в виду, для того чтобы изменения вступили в силу, конфигурация PostgreSQL нужно перезагрузить.

1
$ sudo nano /etc/postgresql/8.4/main/postgresql.conf
$ sudo nano /etc/postgresql/8.4/main/postgresql.conf

VPS установлен. Вы можете выйти из системы.

1
$ logout
$ logout

Тестирование VPS

Чтобы убедиться, что все работает, мы разработаем небольшое приложение на локальной машине и развернем его на VPS, используя Capistrano. Этот процесс состоит из следующих шагов:
1. Откройте два окна терминала: одно для локального компьютера, другое для VPS.
2. Войдите в VPS, используя SSH (VPS).
3. Создайте пользователя базы данных для тестового приложения (VPS).
4. Создайте базу данных для тестового приложения (VPS).
5. Создайте тестовое приложение с использованием PostgreSQL в качестве базы данных (local).
6. Настройте соединение с базой данных для тестового приложения (local).
7. Сгенерируйте простые платформы для тестового приложения (local).
8. Инициализируйте Git, как контроль версии для тестового приложения (local).
9. Добавьте все файлы из тестового приложения для управления Git версии списка (local).
10. Сделайте версию снимка текущего приложения с помощью Git (local).
11. Инициализируйте Capistrano, как средство развертывания для тестового приложения (local).
12. Удалите конфигурационный файл развертывания Capistrano по умолчанию и создайте новый (local).
13. Настройте VPS для развертывания приложения с помощью теста Capistrano (local).
14. Проверьте настройки VPS для развертывания приложения, используя тест Capistrano (local).
15. Разверните тестовое приложение Capistrano (local).
16. Отредактируйте конфигурацию Nginx работы с тестовым приложением (VPS).
17. Перезагрузите Nginx (VPS).
18. Проверьте тестовое приложение в веб-браузере (local).

После того как мы убедились, что все работает, перейдем к следующим шагам:
1. Удалите базу данных для тестового приложения (VPS).
2. Удалите пользователя базы данных для тестового приложения (VPS).
3. Восстановите значения конфигурации Nginx по умолчанию (VPS).
4. Перезагрузите Nginx (VPS).
5. Удалите тестовое приложение (VPS).
6. Выйдите из VPS (VPS).
7. Удалите тестовое приложение (local).
8. Закройте оба терминальных окна.

В отличие от первой части данного руководства, некоторые из шагов должны быть выполнены на локальной машине, другие на VPS. Соглашения, используемые для тестирования VPS, приведены ниже во вставке 2.1. Имя пользователя базы данных и имя базы данных получены от имени приложения.

Вставка 2.1
Name of the application: test_app
Name of the VPS database user: test_app
Password of the VPS database user: banana
Name of the VPS database: test_app_production
Name of the VPS system user: johndoe
VPS IP address: 123.456.7.890

Теперь откройте два окна терминала, одно для локальной машины, второе для VPS. Войдите в VPS, используя SSH:

1
$ ssh johndoe@123.456.7.890 (VPS)
$ ssh johndoe@123.456.7.890 (VPS)

Хорошей практикой будет создание нового пользователя базы данных для каждого отдельного приложения при развертывании приложения на VPS. Таким образом вы повысите безопасность.

Давайте создадим пользователя базы данных для тестирования приложения, используя команду createuser. Мы используем «postgres» в качестве администратора (или суперпользователя) для PostgreSQL. Флаг P позволяет нам обеспечить пароль. Знак > обозначает запросы, которые будут вызваны.

1
2
3
4
5
6
7
8
$ sudo -u postgres createuser -P (VPS)
> Enter name of role to add: test_app
> Enter password for new role: banana
> Enter it again: banana
> Shall the new role be a superuser? (y/n) n
> Shall the new role be allowed to create databases? (y/n) n
> Shall the new role be allowed to create more new roles? (y/n) n
> Password: your-postgres-user-password
$ sudo -u postgres createuser -P (VPS)
> Enter name of role to add: test_app
> Enter password for new role: banana
> Enter it again: banana
> Shall the new role be a superuser? (y/n) n
> Shall the new role be allowed to create databases? (y/n) n
> Shall the new role be allowed to create more new roles? (y/n) n
> Password: your-postgres-user-password

Затем создайте базу данных для тестового приложения, которая является собственностью пользователя тестовой программы. Хотя вы можете использовать Rake для создания базы данных, мы будем использовать PostgreSQL, чтобы вы изучили некоторые основные администрации PostgreSQL.

Вы можете создать новую базу данных, вызвав команду createdb вместе с флагом O, именем пользователя базы данных и новым именем базы данных непосредственно. Production, которую мы добавляем в конец имени базы данных, является именем по умолчанию. Здесь вам будет предложено ввести пароль для суперпользователя PostgreSQL.

1
2
$ sudo -u postgres createdb -O test_app test_app_production (VPS)
> Password: your-postgres-user-password
$ sudo -u postgres createdb -O test_app test_app_production (VPS)
> Password: your-postgres-user-password

Теперь, когда база данных была создана, настало время для создания фактического приложения Ruby on Rails на вашем локальной машине.

1
2
$ cd (LOCAL)
$ rails new test_app -d postgresql (LOCAL)
$ cd (LOCAL)
$ rails new test_app -d postgresql (LOCAL)

Перейдите в каталог приложения Rails. Используйте Nano, чтобы отредактировать конфигурационный файл баз данных, добавляя banana как пароль в базе данных конфигурации production. Поскольку мы следовали соглашениям, описанным во вставке 2.1, имя пользователя базы данных и имя базы данных уже есть.

1
2
$ cd test_app (LOCAL)
$ nano config/database.yml (LOCAL)
$ cd test_app (LOCAL)
$ nano config/database.yml (LOCAL)

Теперь сгенерируйте базовый интерфейс. Программирование в Rails выходит за рамки данного руководства, но эта команда создаст модель «User» и контроллер «users». Входы будут состоять из имени и адреса электронной почты, которые являются строками в базе данных PostgreSQL.

1
$ rails generate scaffold User name:string email:string (LOCAL)
$ rails generate scaffold User name:string email:string (LOCAL)

Помните, когда мы настраивали Git в первой части руководства? Теперь мы, наконец, воспользуемся им. Мы будем инициализировать Git для контроля версии тестового приложения, добавив все файлы из тестового приложения для управления версии списка Git, а также примем версию снимка текущего приложения с помощью Git. Флаг m позволяет нам добавлять краткое описание снимка.

1
2
3
$ git init (LOCAL)
$ git add . (LOCAL)
$ git commit -m “First commit” (LOCAL)
$ git init (LOCAL)
$ git add . (LOCAL)
$ git commit -m “First commit” (LOCAL)

Пришло время развернуть приложение на VPS, используя Capistrano.

Инициализируйте Capistrano как инструмент развертывания для тестового приложения. Это позволит создать несколько файлов в каталог приложения Ruby on Rails. Удалите конфигурационный файл развертывания Capistrano по умолчанию и создайте новый. Содержимое нового файла конфигурации Capistrano можно найти во вставке 2.2 ниже.

1
2
3
$ capify . (LOCAL)
$ rm config/deploy.rb (LOCAL)
$ nano config/deploy.rb (LOCAL)
$ capify . (LOCAL)
$ rm config/deploy.rb (LOCAL)
$ nano config/deploy.rb (LOCAL)

Вставка 2.2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# RVM
 
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_ruby_string, 'default'
set :rvm_type, :user
 
# Bundler
 
require "bundler/capistrano"
 
# General
 
set :application, "test_app"
set :user, "johndoe"
 
set :deploy_to, "/home/#{user}/#{application}"
set :deploy_via, :copy
 
set :use_sudo, false
 
# Git
 
set :scm, :git
set :repository,  "~/#{application}/.git"
set :branch, "master"
 
# VPS
 
role :web, "123.456.7.890"
role :app, "123.456.7.890"
role :db,  "123.456.7.890", :primary => true
role :db,  "123.456.7.890"
 
# Passenger
 
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true }
do
run "#{try_sudo} touch
#{File.join(current_path,'tmp','restart.txt')}"
end
end
# RVM

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_ruby_string, 'default'
set :rvm_type, :user

# Bundler

require "bundler/capistrano"

# General

set :application, "test_app"
set :user, "johndoe"

set :deploy_to, "/home/#{user}/#{application}"
set :deploy_via, :copy

set :use_sudo, false

# Git

set :scm, :git
set :repository,  "~/#{application}/.git"
set :branch, "master"

# VPS

role :web, "123.456.7.890"
role :app, "123.456.7.890"
role :db,  "123.456.7.890", :primary => true
role :db,  "123.456.7.890"

# Passenger

namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true }
do
run "#{try_sudo} touch
#{File.join(current_path,'tmp','restart.txt')}"
end
end

Используйте команду cap, чтобы создать VPS для развертывания приложения с помощью теста Capistrano. Это позволит создать несколько структур каталогов на вашем VPS.

При использовании команды cap, вы должны будете предоставить пароль. Пароль VPS пользователя, который вы создали в самом начале этого руководства. Проверьте VPS настройки для развертывания приложения с помощью теста Capistrano, и, наконец, разверните тестовое приложение.

Выполнение последней команды может занять некоторое время, поскольку она устанавливает необходимые Gems на VPS и заботится о перемещениях базы данных (если таковые имеются). Здесь вы можете увидеть выгоду Capistrano, потому что она автоматизирует такие задачи, как загрузка последней версии приложения, установка необходимых Gems и выполнение перемещения базы данных.

1
2
3
$ cap deploy:setup (LOCAL)
$ cap deploy:check (LOCAL)
$ cap deploy:cold (LOCAL)
$ cap deploy:setup (LOCAL)
$ cap deploy:check (LOCAL)
$ cap deploy:cold (LOCAL)

Последнее, что нужно сделать, это сказать Nginx, где находится Ruby on Rails на тестовом приложении. Итак, нам нужно изменить файл конфигурации Nginx.

Пример изменений, которые вы должны сделать для этого файла, приведены во вставке 2.3 ниже. Здесь печатается только выдержка из соответствующих строк. Удостоверьтесь, что последние четыре строки закомментированы с помощью #. После того как вы внесли изменения, перезагрузите новую конфигурацию в Nginx.

1
2
$ sudo nano /opt/nginx/conf/nginx.conf (VPS)
$ sudo /etc/init.d/nginx reload (VPS)
$ sudo nano /opt/nginx/conf/nginx.conf (VPS)
$ sudo /etc/init.d/nginx reload (VPS)

Вставка 2.3
(…)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
   listen 80;
   server_name www.yourdomain.com;
   root /home/johndoe/test_app/current/public;
   passenger_enabled on;
 
   #charset koi8-r;
 
   #access_log  logs/host.access.log  main;
 
   #location / {
   #    root   html;
   #    index  index.html index.htm;
   #}
server {
   listen 80;
   server_name www.yourdomain.com;
   root /home/johndoe/test_app/current/public;
   passenger_enabled on;

   #charset koi8-r;

   #access_log  logs/host.access.log  main;

   #location / {
   #    root   html;
   #    index  index.html index.htm;
   #}

(…)

Когда сделаете развертываие и конфигурацию Nginx, проверьте изменения в веб-браузере. Перейдите к http://your-vps-ip-address/ . Соединение со средой не будет работать в рабочем режиме.

После этого, посмотрите http://your-vps-ip-address/users. Создайте, отредактируйте, рассмотрите и удалите некоторых пользователей:

Если все работает, то база данных тестового приложения и пользователь базы данных тестового приложения могут быть удалены. Команда dropdb удаляет базу данных PostgreSQL.

1
2
$ sudo -u postgres dropdb test_app_production (VPS)
> Password: your-postgres-user-password
$ sudo -u postgres dropdb test_app_production (VPS)
> Password: your-postgres-user-password

Команда dropuser удаляет пользователя PostgreSQL.

1
2
3
$ sudo -u postgres dropuser (VPS)
> Enter name of role to drop: test_app
> Password: your-postgres-user-password
$ sudo -u postgres dropuser (VPS)
> Enter name of role to drop: test_app
> Password: your-postgres-user-password

Восстановите конфигурацию Nginx, скопировав пример файла конфигурации Nginx (по умолчанию), перезапишите модификацию, а затем перезагрузите Nginx.

1
2
$ sudo cp /opt/nginx/conf/nginx.conf.default /opt/nginx/conf/nginx.conf (VPS)
$ sudo /etc/init.d/nginx reload (VPS)
$ sudo cp /opt/nginx/conf/nginx.conf.default /opt/nginx/conf/nginx.conf (VPS)
$ sudo /etc/init.d/nginx reload (VPS)

Когда это будет сделано, перейдите к своему корневому каталогу на VPS, и рекурсивно удалите тестовое приложение.

1
2
$ cd (VPS)
$ rm -rf test_app (VPS)
$ cd (VPS)
$ rm -rf test_app (VPS)

Наконец, выйдите из VPS.

1
$ logout (VPS)
$ logout (VPS)

Для локальной машины нам также необходимо перейти к корневому каталогу и рекурсивно удалить тестовое приложение. Когда все команды ниже введены, вы можете закрыть оба окна терминала. Это оставит вас с новым VPS и локальной машиной, готовыми для разработки и развертывания приложений Ruby on Rails.

1
2
$ cd (LOCAL)
$ rm -rf test_app (LOCAL)
$ cd (LOCAL)
$ rm -rf test_app (LOCAL)

Приложение

Глоссарий командной строки Linux

Команды Linux, использующиеся в это обучающей программе, описаны здесь. Список в алфавитном порядке и показывает только соответствующие команды Linux. Команда Linux обычно принимает форму ommand -option(s) argument(s). Например: rm -r test_app. Для более подробного описания, используйте руководство, которое можно получить с помощью man [command].

sudo [command]
Выполняет команду в качестве администратора.

adduser [username]
Добавление пользователя в системе.

adduser [username] [groupname]
Добавление пользователя к определенной группе.

apt-get dist-upgrade
Помимо выполнения обновлений, это команда используется для управления dependencies.

apt-get install [package]
Устанавливает (или обновляет) пакеты.

apt-get update
Повторно синхронизирует пакетные индексные файлы из их источников.

apt-get upgrade
Устанавливает новейшие версии всех пакетов, установленных в настоящее время.

bash < <( curl [location] )
Комбинация команд, используемая, чтобы получить и выполнить скрипт (из Интернета).

cd [location]
Изменяет текущий рабочий каталог.

cp [file] [location]
Копирует файл в указанное место (перезаписывает существующий файл).

chmod +x [file]
Делает файл exexutable.

logout
Выход из сессии оболочки или SSH.

mv [file] [location]
Перемещает файл в другое место.

nano [file]
Используется для редактирования конфигурационных файлов.

reboot
Перезагрузка системы.

rm [file]
Удаляет файл.

rm -rf [directory]
Удаляет каталог (рекурсивно и принудительно).

source [script]
Читает указанный скрипт.

ssh [username@ipaddress]
Вход в безопасный сеанс сессии.

type [command]
Отображает вид команд, которые выполняет оболочка.

wget [location]
Получает файл из Интернета.

Только зарегистрированные пользователи могут оставлять комментарии.
Войдите в систему или зарегистрируйтесь