Настрой собственный VPS в течение обеденного перерыва!
Перед погружением в технические аспекты системного администрирования, обозначу несколько принципиальных вещей:
1) системное администрирование — в 80% случаев — тривиальные задачи, ответ на которые ждут вас на первой странице поисковой системы
2) настройка удаленного сервера принципиально ничем не отличается от конфигурирования рабочей станции. настраивать последюнюю приходится каждому из нас, согласитесь — занятие приятное и довольно простое
3) благодаря высокой популярности vps, вероятность того, что вы окажетесь в тупике по любому вопросу — ничтожна мала
4) просто сделайте то, что написано в этой статье
5) обязательно напишите ваш комментарий, чтобы другому было легче понять и разобраться
Сделайте выбор хостинг провайдера, я выбрал linode.com
в моем случае — несколько скриншотов для быстрого развертывания образа (Ubuntu 8.04 LTS).
Дистриб выбирайте сами, у меня также есть статья по настройке CentOS




Итак, начнем:
ssh root@12.12.12.12 (ваш ip)
Итак, мы на борту:
---System info---------------
cat /etc/lsb-release
>DISTRIB_ID=Ubuntu
>DISTRIB_RELEASE=8.04
Поставим необходимые пакеты:
---build essentials--------------
apt-get -y install build-essential libssl-dev libreadline5-dev zlib1g-dev vim wget curl
apt-get -y install mysql-server libmysqlclient15-dev mysql-client
Несподручно работать под рутом, поэтому создадим пользователя (советую делать пароль подлиннее, так как коннектиться будем по ключу):
---User administration-------
adduser demo
visudo
в открывшемся редакторе добавим в конец файла следующую строку
demo ALL=(ALL) ALL)
Публичный и приватный ключи:
Воспользуемся способом аутентификации по ключу (необходима в первую очередь для git push, если gitosis будет на данном vps)
---SSH (local pc)------------
mkdir ~/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub demo@12.12.12.12:~
---SSH (remote pc)-----------
mkdir /home/demo/.ssh
mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys
Обеспечим некоторую степень секьюрности: не пустим рута, запретим возможность удаленно запускать иксовое приложение(хотя иксы не стоят, но все же) и др.
sudo vim /etc/ssh/sshd_config
>PermitRootLogin no
>X11Forwarding no
>UsePAM no
>UseDNS no
>AllowUsers demo
sudo /etc/init.d/ssh restart
Не закрывая эту консоль, откройте другую и проверьте подлючение. Если все хорошо, ты вы все сделали правильно. Если нет — вернитесь в первую консоль и проверьте конфиг.
Настроим локаль:
---locales-----------------------
sudo locale-gen en_GB.UTF-8
sudo /usr/sbin/update-locale LANG=en_GB.UTF-8
Без гита, как без рук
---Git---------------------------
mkdir ~/temp && cd ~/temp
sudo apt-get install tcl8.4 tk8.4
wget kernel.org/pub/software/scm/git/git-1.6.3.2.tar.gz
tar xzvf git-1.6.3.2.tar.gz
cd git-1.6.3.2
./configure
make
sudo make install
sudo ln -s /usr/local/bin/git /usr/bin/git
Теперь, самое вкусное:
Ruby Enterprise Edition после компиляции устанавливает rubygems и десяток гемов, среди которых: rails, mysql, sqlite3 и др.
---Ruby ----Passenger------------
wget rubyforge.org/frs/download.php/58677/ruby-enterprise-1.8.6-20090610.tar.gz
tar xzvf ruby-enterprise-1.8.6-20090610.tar.gz
sudo ./ruby-enterprise-1.8.6-20090610/installer
sudo ln -s /opt/ruby-enterprise-1.8.6-20090610 /opt/ruby_ee
export PATH=/opt/ruby_ee/bin:$PATH
sudo /opt/ruby_ee/bin/passenger-install-nginx-module
Не стоит запускать вебсервер от рута из соображений безопасности, поэтому создадим отдельного пользователя для этих целей. После этого добавим членство пользователя demo в группе www-data (-a -G).
---Nginx-------------------------
sudo useradd -s /sbin/nologin -r www-data
sudo usermod -a -G www-data demo
mkdir ~/public_html
mkdir ~/public_html/01_project
Основная группа пользователя demo носит одноименное имя — demo, но вебсервер будет запущен из под пользователя из группы www-data, поэтому сделаем необходимые пермишины на public_html, чтобы все файлы, которые будем сюда копировать автоматически получали chown demo:www-data
sudo su
chgrp -R www-data /home/demo/public_html/
chmod -R 2750 /home/demo/public_html/
Скачаем файл хоста, конфиг и загрузочный скрипт и проверим как все работает
mkdir /opt/nginx/sites-available
mkdir /opt/nginx/sites-enabled
wget railsgeek.com/vps/vhost01 -P /opt/nginx/sites-available
ln -s /opt/nginx/sites-available/vhost01 /opt/nginx/sites-enabled
wget railsgeek.com/vps/nginx.conf -P /opt/nginx/conf
wget railsgeek.com/vps/nginx -P /etc/init.d
chmod +x /etc/init.d/nginx
/etc/init.d/nginx start
Готово!
В следующей статье будет описан процесс настройки бэкпов на Amazon S3, установка gitosis, capistrano. Опять же установка не займет времени больше, чем обеденный перерыв :)
1) системное администрирование — в 80% случаев — тривиальные задачи, ответ на которые ждут вас на первой странице поисковой системы
2) настройка удаленного сервера принципиально ничем не отличается от конфигурирования рабочей станции. настраивать последюнюю приходится каждому из нас, согласитесь — занятие приятное и довольно простое
3) благодаря высокой популярности vps, вероятность того, что вы окажетесь в тупике по любому вопросу — ничтожна мала
4) просто сделайте то, что написано в этой статье
5) обязательно напишите ваш комментарий, чтобы другому было легче понять и разобраться
Сделайте выбор хостинг провайдера, я выбрал linode.com
в моем случае — несколько скриншотов для быстрого развертывания образа (Ubuntu 8.04 LTS).
Дистриб выбирайте сами, у меня также есть статья по настройке CentOS




Итак, начнем:
ssh root@12.12.12.12 (ваш ip)
Итак, мы на борту:
---System info---------------
cat /etc/lsb-release
>DISTRIB_ID=Ubuntu
>DISTRIB_RELEASE=8.04
Поставим необходимые пакеты:
---build essentials--------------
apt-get -y install build-essential libssl-dev libreadline5-dev zlib1g-dev vim wget curl
apt-get -y install mysql-server libmysqlclient15-dev mysql-client
Несподручно работать под рутом, поэтому создадим пользователя (советую делать пароль подлиннее, так как коннектиться будем по ключу):
---User administration-------
adduser demo
visudo
в открывшемся редакторе добавим в конец файла следующую строку
demo ALL=(ALL) ALL)
Публичный и приватный ключи:
Воспользуемся способом аутентификации по ключу (необходима в первую очередь для git push, если gitosis будет на данном vps)
---SSH (local pc)------------
mkdir ~/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub demo@12.12.12.12:~
---SSH (remote pc)-----------
mkdir /home/demo/.ssh
mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys
Обеспечим некоторую степень секьюрности: не пустим рута, запретим возможность удаленно запускать иксовое приложение(хотя иксы не стоят, но все же) и др.
sudo vim /etc/ssh/sshd_config
>PermitRootLogin no
>X11Forwarding no
>UsePAM no
>UseDNS no
>AllowUsers demo
sudo /etc/init.d/ssh restart
Не закрывая эту консоль, откройте другую и проверьте подлючение. Если все хорошо, ты вы все сделали правильно. Если нет — вернитесь в первую консоль и проверьте конфиг.
Настроим локаль:
---locales-----------------------
sudo locale-gen en_GB.UTF-8
sudo /usr/sbin/update-locale LANG=en_GB.UTF-8
Без гита, как без рук
---Git---------------------------
mkdir ~/temp && cd ~/temp
sudo apt-get install tcl8.4 tk8.4
wget kernel.org/pub/software/scm/git/git-1.6.3.2.tar.gz
tar xzvf git-1.6.3.2.tar.gz
cd git-1.6.3.2
./configure
make
sudo make install
sudo ln -s /usr/local/bin/git /usr/bin/git
Теперь, самое вкусное:
Ruby Enterprise Edition после компиляции устанавливает rubygems и десяток гемов, среди которых: rails, mysql, sqlite3 и др.
---Ruby ----Passenger------------
wget rubyforge.org/frs/download.php/58677/ruby-enterprise-1.8.6-20090610.tar.gz
tar xzvf ruby-enterprise-1.8.6-20090610.tar.gz
sudo ./ruby-enterprise-1.8.6-20090610/installer
sudo ln -s /opt/ruby-enterprise-1.8.6-20090610 /opt/ruby_ee
export PATH=/opt/ruby_ee/bin:$PATH
sudo /opt/ruby_ee/bin/passenger-install-nginx-module
Не стоит запускать вебсервер от рута из соображений безопасности, поэтому создадим отдельного пользователя для этих целей. После этого добавим членство пользователя demo в группе www-data (-a -G).
---Nginx-------------------------
sudo useradd -s /sbin/nologin -r www-data
sudo usermod -a -G www-data demo
mkdir ~/public_html
mkdir ~/public_html/01_project
Основная группа пользователя demo носит одноименное имя — demo, но вебсервер будет запущен из под пользователя из группы www-data, поэтому сделаем необходимые пермишины на public_html, чтобы все файлы, которые будем сюда копировать автоматически получали chown demo:www-data
sudo su
chgrp -R www-data /home/demo/public_html/
chmod -R 2750 /home/demo/public_html/
Скачаем файл хоста, конфиг и загрузочный скрипт и проверим как все работает
mkdir /opt/nginx/sites-available
mkdir /opt/nginx/sites-enabled
wget railsgeek.com/vps/vhost01 -P /opt/nginx/sites-available
ln -s /opt/nginx/sites-available/vhost01 /opt/nginx/sites-enabled
wget railsgeek.com/vps/nginx.conf -P /opt/nginx/conf
wget railsgeek.com/vps/nginx -P /etc/init.d
chmod +x /etc/init.d/nginx
/etc/init.d/nginx start
Готово!
В следующей статье будет описан процесс настройки бэкпов на Amazon S3, установка gitosis, capistrano. Опять же установка не займет времени больше, чем обеденный перерыв :)



комментарии (80)