'''Базовая настройка VDS для Django''' <> Этот мануал рассказывает как настроить сервер для django c нуля. Ну или для другого python приложения. Я проверял команды на Debian6-32bit хотя должно работать на любом debian-based дистрибутиве. Итак у вас есть ip сервера и пароль root-пользователя. У меня это будет IP и PASS соответственно. = Как зайти на сервер? = Для windows пользователей надо пользоваться надо использовать putty или что-то в этом духе. Для linux`a достаточно набрать в терминале {{{ssh root@IP}}} а затем на просьбу ввести пароль PASS. На этом можно и ограничится и перейти к следующему пункту. Но если Вы не хотите вводить пароль каждый раз можно воспользоватся специальным скриптом который скопирует Ваш публичный ssh-ключ на сервер {{{ssh-сopy-id root@IP}}} после этого можно логинится просто по {{{ssh root@IP}}}. Конечно если у Вас ssh-ключ(это файл ~/.ssh/id_rsa.pub),, если нет то https://help.github.com/articles/generating-ssh-keys Для совсем ленивых есть вариант добавить в файл {{{~/.ssh/config}}} {{{#!highlight bash host servername hostname IP port 22 user root }}} он для того что бы логинится просто командой {{{ssh servername}}}. = Обновления Debiana до 7 версии = Если у вас другой дистрибутив это не обязательно. В файле {{{ /etc/apt/sources.list }}} надо все удалить и добавить следующее: {{{#!highlight bash deb http://ftp.us.debian.org/debian/ wheezy main deb-src http://ftp.us.debian.org/debian/ wheezy main deb http://security.debian.org/ wheezy/updates main deb-src http://security.debian.org/ wheezy/updates main # wheezy-updates, previously known as 'volatile' deb http://ftp.us.debian.org/debian/ wheezy-updates main deb-src http://ftp.us.debian.org/debian/ wheezy-updates main }}} и выполнить команды {{{#!highlight bash apt-get update apt-get dist-upgrade }}} = Установка локалей = Это на случай если у вас как это было у меня будут ошибки ... Просто команда которую можно просто скопировать {{{#!highlight bash apt-get install locales echo "LANG=en_US.UTF-8" > /etc/default/locale cat > /etc/locale.gen << EOF en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8 uk_UA.UTF-8 UTF-8 EOF locale-gen }}} = Установка базовых пакетов = {{{#!highlight bash apt-get update apt-get install -y python-pip git-core mercurial bash-completion apt dpkg }}} скорей всего вам может понадобится еще {{{python-dev}}} = Установка веб-сервера = К сожалению у меня предустановлен Apache2, а мне хотелось бы nginx по этому я сначала снесу apache {{{ sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common }} удалю все что после него осталось {{{apt-get autoremove }}} а затем установлю nginx {{{#!highlight bash apt-get install -y nginx service nginx restart }}} == Nginx c официально репозитория == В репозитории очень старая версия nginx 0.7.67 хотя актуальная версия 1.5.6 !!! Можно поставить более свежую {{{#!highlight bash wget http://nginx.org/keys/nginx_signing.key apt-key add nginx_signing.key }}} а в конец {{{/etc/apt/sources.list }}} добавить {{{#!highlight bash deb http://nginx.org/packages/ubuntu/ codename nginx deb-src http://nginx.org/packages/ubuntu/ codename nginx }}} а затем выполнив {{{#!highlight bash apt-get update apt-get install -y nginx }}} = Установка postgres = Это делается примерно так {{{#!highlight bash apt-get install postgresql libpq-dev postgresql-contrib python-psycopg2 passwd postgres su - postgres createdb djangodb createuser djangouser psql djangodb #dropdb djangodb GRANT ALL ON DATABASE djangodb TO djangouser; }}} = Добавляем еще одного пользователя = Добавляем еще одного пользователя web ибо держать удаленный доступ к серверу из под рута не красиво(ну и не безопасно). У меня это будет web вы можете сменить его на что угодно {{{#!highlight bash useradd -m web -s /bin/bash }}} Ставим пароль для свежосозданого пользователя {{{passwd web}}} который лучше где-то записать. == Убираем запрос пароля для команды sudo == Это не очень безопасно так что это лучше не делать :) В конец {{{/etc/sudoers}}} добавить {{{%web ALL=(ALL) ALL}}} где web это имя пользователя. == Вход по ssh == {{{#!highlight bash su web - cd ~ mkdir ~/.ssh sudo cp /root/.ssh/authorized_keys /home/web/.ssh sudo chown -R web: /home/web/.ssh sudo chmod -R go-w /home/web exit }}} это для того что бы подключатся к серверу без пароля {{{ssh web@IP}}} так же можно добавить в {{{~/.ssh/config}}} еще одну запись. == Немного безопасности == {{{sudo nano /etc/ssh/sshd_config}}} меняем там {{{PermitRootLogin no}}} -- запрещает логин рутом {{{Port 2200}}} -- смена порта с 22 что-нибудь не стандартное {{{Protocol 2}}} -- выставим более защищенную версию протокола SSH Сохраняем и выходим. {{{ctrl+o ctrl+x}}} Теперь надо что-бы настройки применились {{{#!highlight bash sudo /etc/init.d/ssh restart }}} {{{#!highlight bash }}} = Установка питон пакетов = {{{#!highlight bash pip install virtualenvwrapper supervisor }}} Настройка virtualenvwrapper {{{#!highlight bash su web - mkdir ~/venvs cat >> ~/.bashrc << EOF export WORKON_HOME=$HOME/venvs export PROJECT_HOME=$HOME/Devel source /usr/local/bin/virtualenvwrapper.sh EOF }}} теперь командой {{{mkvirtualenv VENVNAME}}} можно создать виртуальное питоно-окружения с именем VENVNAME {{{#!highlight bash }}} {{{#!highlight bash }}}