Настройка VPS с нуля под Rails

28 Ноя
2011

Задача — на ресурсах VPS развернуть хостинг для rails приложений. Здесь я приведу пример настройки такого VPS хостинга но не буду вдаваться глубоко в подробности. Моя цель показать как можно быстро все это настроить для работы с Rails приложениями с минимальными знаниями в Linux/Unix системах. В качестве ОС я использовал Fedora 14.

Ну если вы готовы, тода ПОЕХАЛИ.

В этой статье я опишу как выполнить установку ПО:
  1. MySQL
  2. Git
  3. Python
  4. Header и Библиотеки
  5. RVM
  6. Ruby 1.9.2
  7. Обновление RubyGems до 1.6.2
  8. Ставим необходимые Gems
  9. Nginx
  10. Скрит запуска и остановки Nginx
  11. Sphinx
  12. Wkhtmltopdf


Так как все уже знают не один сайт не обходиться без базы данных, но есть конечно сайты визитки где используют пару html страниц, тогда там можно обойтись без базы данных но очень сложно представить сайт на Rails который имеет пару страниц и не использует базу данных, по этому нашей первой задачей будет установка MySQL сервера.
Почему я выбрал MySQL — он более распространенный и его чаще используют для повседневных задач, вы конечно можете использовать любую другу базу данных на свой вкус и цвет — все зависит от задачи и требований.

Проверяем обновления.

Установочный образ у хостинг провайдера может оказаться не особо свежим.

[username@app ~]# sudo yum update

Если есть что обновлять — обновляем. Нет — радуемся и идем дальше.



1. Ставим MySQL.



[username@app ~]# sudo yum install mysql mysql-server mysql-client libmysqld-dev mysql-devel

теперь запустим MySQL

[username@app ~]# /etc/init.d/mysqld start

проверим работу mysql выполнив эту команду

[username@app ~]# mysql -u root -p

нас попросят ввести пароль — по умолчанию он пустой — по этому жмем Enter.

Enter password:

в ответ мы должны получить сообщение примерно такого вида

Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is X
Server version: X.X.X Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

если вы видите это сообщение приветствие то все работает хорошо и исправно.

mysql> exit

пишем exit и жмем Enter и идем дальше.



2. Ставим Git.



[username@app ~]# sudo yum install git git-core



3. Ставим Python.



[username@app ~]# sudo python-setuptools python-devel python



4. Ставим Header и Бибилиотеки.



[username@app ~]# sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 pcre-devel pcre sqlite-devel curl-devel curl httpd httpd-devel mod_ssl



5. Ставим RVM (Multi-Users).



[username@app ~]# sudo bash < <(curl -sk rvm.beginrescueend.com/install/rvm)

[username@app ~]# sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison glibc



6. Ставим Ruby 1.9.2-p180.



[username@app ~]# sudo rvm install 1.9.2-p180

назначем ruby 1.9.2 по умолчанию

[username@app ~]# sudo rvm use 1.9.2-p180 —default




7. Обновляем RubyGems.



[username@app ~]# rvmsudo gem install rubygems-update —version=1.6.2
[username@app ~]# rvmsudo update_rubygems




8. Cтавим необходимые Gem’ы.



[username@app ~]# rvmsudo gem install bundler
[username@app ~]# rvmsudo gem install mysql2
[username@app ~]# rvmsudo gem install rails —version=3.1.0
[username@app ~]# rvmsudo gem install unicorn




9. Установка Nginx из исходников.



[username@app ~]# wget nginx.org/download/nginx-1.0.9.tar.gz
[username@app ~]# tar xzf nginx-1.0.9.tar.gz
[username@app ~]# cd nginx-1.0.9
[username@app ~]# .configure
[username@app ~]# make
[username@app ~]# sudo make install
[username@app ~]# cd ..
[username@app ~]# rm -rf nginx-1.0.9




10. Создаем скрипт для запуска и остановки Nginx службы.



[username@app ~]# sudo nano /etc/init.d/nginx

копируем и вставляем весь этот текст

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

Сохраняем!

[username@app ~]# sudo chmod +x /etc/init.d/nginx
[username@app ~]# sudo /sbin/chkconfig nginx on



11. Устанавливаем Sphinx — можно пропустить этот шаг если вы не знаете что это и для чего его используют.



[username@app ~]# wget sphinxsearch.com/files/sphinx-0.9.9.tar.gz
[username@app ~]# tar xzf sphinx-0.9.9.tar.gz
[username@app ~]# cd sphinx-0.9.9
[username@app ~]# ./configure
[username@app ~]# make
[username@app ~]# sudo make install
[username@app ~]# cd ..
[username@app ~]# rm -rf sphinx-0.9.9.tar.gz



12. Установка wkhtmltopdf.



Используется для генерации PDF, если у вас нет необходимости генерации pdf документов и вы не знаете зачем он нужен можете смело пропускать этот пункт. Установка этого шага у меня заняло почти 2 часа.

[username@app ~]# sudo yum install urw-fonts
[username@app ~]# sudo yum install openssl-devel libXrender-devel libXext-devel libXft-devel

[username@app ~]# git clone git://github.com/antialize/wkhtmltopdf.git wkhtmltopdf
[username@app ~]# git clone git://gitorious.org/+wkhtml2pdf/qt/wkhtmltopdf-qt.git wkhtmltopdf-qt

[username@app ~]# cd wkhtmltopdf-qt
[username@app ~]# ./configure -nomake tools,examples,demos,docs,translations -opensource -prefix «../wkqt»
[username@app ~]# make -j3 && make install

[username@app ~]# cd ../wkhtmltopdf
[username@app ~]# ../wkqt/bin/qmake
[username@app ~]# make
[username@app ~]# sudo make install

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

Если у кого то возникнут трудности, спрашивайте, с удовольствием помогу решить их.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх