Настройка VPS сервера с Ubuntu 12.04

Привет!

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

Дано: сервер с Ubuntu 12.04.4 LTS, есть доступ SSH и права рута.

Что нам потребуется: если наш домашний компьютер с Windows, то программы PuTTY и WinSCP.

Если наш домашний компьютер с Ubuntu, то тля установки программы PuTTY набираем в консоли sudo apt-get install putty и файловый менеджер с поддержкой SSH, например, Krusader, для его установки копируем в консоль sudo apt-get install krusader.

Итак, всё устанавливаем, запускаем PuTTY, вводим ip нашего сервера, порт, по умолчанию 22. На вопрос login as: пишем root. Далее запрос пароля: root@185.22.*.*'s password: — пишем пароль, при этом символы на экране появляться не будут, не пугайтесь и вводите пароль очень внимательно, лучше скопировать из письма от хостера и правой кнопкой мыши вставить. Если всё правильно, то должно появиться что вроде этого:

`login as: root
root@185.22.61.12‘s password:
Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.10.0-6-generic x86_64)

  • Documentation: https://help.ubuntu.com/

    System information as of Sat Jul 19 18:11:35 MSK 2014

    System load: 0.01 Processes: 214
    Usage of /: 21.1% of 15.59GB Users logged in: 1
    Memory usage: 80% IP address for eth0: 10...*
    Swap usage: 1000% IP address for eth1: 185...*

    Graph this data and manage this system at:
    https://landscape.canonical.com/

`

Last login: Sat Jul 19 16:53:24 2014 from 37.113.182.40 root@vm*****:~#

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

Разделы статьи

  1. Установка и настройка веб-сервера
  2. phpMyAdmin
  3. VNC-сервер
  4. Безопасность
  5. Настройка виртуальных хостов для размещения сайтов
  6. FTP

Первое, что нам нужно — это установить и настроить веб-сервер. Я выбираю Apache, он уже много лет работает на моём домашнем компьютере, нравится он мне. Устанавливать будем не только Apache, но ещё и PHP, MySQL, phpMyAdmin:

-1. Если мы не под root-юзером, зайдём в консоль от root, чтоб не писать перед каждой командой sudo если под рутом, то сразу к пункту 1:
sudo su
0. От рута мы зашли, а папка осталась нашей, поэтому пишем cd (вариант cd /root — не должен работать):
cd

  1. Обновим список репозиториев:
    apt-get update
  2. Установим Apache2, php, mysql, phpmyadmin и текстовый редактор Nano (дальнейшие примеры будут с его использованием, если он не нужен — удалите последнее слово из команды):
    apt-get install apache2 apache2-mpm-prefork apache2-utils apache2-suexec php5 php5-mysql libapache2-mod-php5 curl libcurl3 libcurl3-dev php5-curl php5-mcrypt php-pear php5-gd sendmail mysql-server mysql-client libmysqlclient15-dev phpmyadmin nano
  3. Кстати, удалить это всё можно так же одной командой:
    apt-get purge apache2 apache2-mpm-prefork apache2-utils apache2-suexec php5 php5-mysql libapache2-mod-php5 curl libcurl3 libcurl3-dev php5-curl php5-mcrypt php-pear php5-gd sendmail mysql-server mysql-client libmysqlclient15-dev phpmyadmin nano
  4. Так как установились помимо веб-сервера ещё и php, mysql, phpmyadmin, перезагружаем Apache:
    service apache2 restart

Теперь настроим phpMyAdmin. Жить он у нас будет на IP 127.0.1.1 (можно задать любой другой).

  1. Если вы пропустили первый блок, то там мы устанавливали phpMyAdmin в комплекте с другими программами. Для установки phpMyAdmin введите в консоли от root-юзера:
    apt-get update
    потом
    apt-get install phpmyadmin
    и для дальнейшей работы установим текстовый редактор Nano
    apt-get install nano

  2. В консоли открываем редактор Nano и создаём новый файл:
    nano /etc/apache2/sites-available/phpmyadmin

  3. Вставляем в него следующий текст:

    ServerName localhost DocumentRoot /usr/share/phpmyadmin ServerAdmin webmaster@localhost.loc ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined

    И выходим из редактора. Для этого нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.

  4. Разрешаем (включаем) этот виртуальный хост:
    a2ensite phpmyadmin
    запрет (отключение) хоста выполняется командой
    a2dissite phpmyadmin

  5. Перезапускаем Apache:
    service apache2 restart

  6. Поскольку наш phpMyAdmin доступен только с самого сервера, доступ из Интернета запрещён первой строчкой файла созданного на втором шаге, то добавим красивый адрес: http://phpmyadmin/. Для этого откроем файл /etc/hosts:
    nano /etc/hosts
    и в начало или в конец этого файла добавим строчку:
    127.0.1.1 phpmyadmin
    Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.

  7. Теперь phpMyAdmin доступен по адресу http://phpmyadmin/.


Совсем забыл: у северной Ubuntu нет экрана. Поэтому сейчас установим десктопную версию Ubuntu и настроим VNC. Если у вас и так десктопная Ubuntu пролистайте дальше.

  1. Для начала установим Ubuntu Desktop, напоминаю, все действия надо делать под root-юзером:
    apt-get install ubuntu-desktop
    в зависимости от сообразительности вашего VPS, скорости соединения и того, как на небе расположены звёзды этот процесс может занять от нескольких минут до нескольких часов, в теории, на практике, я за время установки успел только сварить кофе.
    В процессе установки будут заданы вопросы о языке и раскладке клавиатуры, а так же о способе переключения раскладок. Так же может возникнуть вопрос (или несколько) об изменении тех или иных пакетов системы, соглашаемся (нажимаем y).

  2. Установим графическую оболочку GNOME:
    apt-get install gdm если сервер не мощный, то, когда возникнет вопрос, выбираем lightgdm (при запуске будет только консоль). Если мощный, то можно выбрать gdm (при запуске будет консоль и полноценный рабочий стол), но зачем грузить сервер лишним?

  3. Запускаем графическую оболочку:
    /etc/init.d/gdm start
    или
    service gdm start

  4. Теперь необходимо настроить VNC-сервер и VNC-клиент:

    1. Начнём с сервера. Установим:
      apt-get install vnc4server
    2. Запустим:
      vncserver :1 -geometry 1366x768 -depth 16 -pixelformat rgb565
      можно подставить любое разрешение экрана, в примере выше — удобное мне, вот пример для 1024×768:
      vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565
    3. После первого запуска программа вас попросит ввести пароль для доступа к VNC-серверу. В дальнейшем для смены пароля используется команда vncpasswd
    4. Для остановки VNC-сервера используется команда vncserver -kill :1
    5. Желательно VNC-сервер запускать не от рута, а от какого-нибудь другого юзера.
  5. Добавим GNOME в запуск совместно с запуском VNC-сервера:
    nano ~/.vnc/xstartup
    и добавляем в конец файла:
    gnome-session &
    Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.

  6. Теперь на своём домашнем компьютере устанавливаем программу UltraVNC и запускаем её. Вводим IP своего VPS и порт 5901 в формате 185...*::5901, если VNC-сервер будет найден, то появится запрос пароля, вводим пароль и получаем визуальный доступ к своему серверу.

  7. Для доступа к адресу http://phpmyadmin/ в консоли вводим firefox и нажимаем Enter. В адресной строке вводим http://phpmyadmin/ и если всё настроено правильно мы видим такую картину:


Давайте теперь изменим настройки безопасности. Можно делать не всё и зприведённого ниже. Например, оставить root юзера, но изменить порт. Однако, это может плохо сказаться на безопасности.

  1. Для начала создадим юзера с ником посложнее на замену руту:
    useradd user0
    где user0 — ник нового юзера. Задаём пароль, отвечаем на вопросы (можно пропустить нажав Enter несколько раз.
  2. Наделим нашего юзера правами администратора. Для начала добавим его в группу sudo:
    useradd user0 sudo
    И для чтоб исключить возможные проблемы наберём в консоли
    visudo
    и в конец открывшегося файла добавим
    user0 ALL=(ALL) ALL
    где user0 — ник нового юзера.
  3. Изменим порт для SSH и запретим юзеру root подключаться к серверу SSH, для этого открываем файл /etc/ssh/sshd_config командой nano /etc/ssh/sshd_config.
  4. Находим в нём строчку Port 22, заменяем 22 на что-нибудь цифровое от 2 до 4 символов, например, на 3133.
  5. В этом же файле, находим строчку PermitRootLogin yes, заменяем yes на no.
  6. Разрешим юзеру с ником user0 подключаться по SSH. Для этого ниже добавим строчку AllowUsers user0. Если вы не добавите эту строчку, то можете остаться без SSH доступа после следующего шага.
    Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.
    Так же это можно сделать через WinSCP, через него удобнее работать с длинными файлами.
  7. Разрешаем наш порт, иначе мы не сможем подключиться по SSH после перезапуска. В примере был порт 3133. Чтобы его разрешить используем команду
    iptables -A INPUT -p tcp --dport 3313 -j ACCEPT
  8. Перезапускаем SSH:
    service ssh restart
    либо, может быть так:
    /etc/init.d/sshd restart
    Теперь все команды выполняются только через разрешённого юзера, в нашем случае это user0. Что бы от этого юзера выполнять команды как от рута либо перед началом работы пишем sudo su и cd (выход из «режима рута» exit), либо перед каждой командой пишем sudo

Мы будем использовать VPS для размещения сайта, а всё ещё не настроили ни один хост для сайта. Настройкой виртуального хоста мы занимались, когда настраивали phpMyAdmin. Сейчас определяемся с тем, где будем хранить файлы своего сервера в /var/www/site.ru или в папке юзера /home/user0/site.ru, где user0 — имя пользователя, site.ru — имя домена. В примере ниже используется второй способ.

  1. В консоли открываем редактор Nano и создаём новый файл:
    nano /etc/apache2/sites-available/site.ru

  2. Вставляем в него следующий текст:

    ServerName site.ru ServerAlias *.site.ru ServerAlias site2.ru DocumentRoot /home/user0/site.ru ServerAdmin webmaster@localhost.loc ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined

    Вместо user0 вписываем имя своего юзера site.ru подставляем свой домен, если доменов несколько, то заполняем ServerAlias (заменяем site2.ru), так же вместо webmaster@localhost.loc можно вписать свой e-mail. Обязательно проверяем, чтоб в первой строчке был не IP-адрес (например, 127.0.0.1:80), а звёздочка (:80), иначе сайт не будет доступен из Интернета. Выходим из редактора. Для этого нажимаем *Ctrl+X, **y для сохранения файла и Enter для подтверждения адреса сохраняемого файла. Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End.

  3. Немножко поправим файл hosts. Добавим в него локальный IP 127.0.0.1, адрес нашего нового сайта, алиас (второй, третий и т.д. домен), при желании можно задать ещё адрес, который будет доступен только с сервера, например site. Для этого откроем файл /etc/hosts:
    nano /etc/hosts
    и в начало или в конец этого файла добавим строчку:
    127.0.0.1 site.ru site2.ru site

  4. Теперь создаём папку /home/user0/site.ru:
    mkdir /home/user0/site.ru

  5. Разрешаем (включаем) этот виртуальный хост:
    a2ensite site.ru
    запрет (отключение) хоста выполняется командой
    a2dissite site.ru

  6. Обновляем конфигурацию Apache:
    service apache2 reload
    либо перезапускаем
    service apache2 restart

  7. Теперь можно закачивать файлы в каталог сайта. Для этого используем программу WinSCP. Программа очень простая, поэтому никаких советов по работе с ней давать не буду.


FTP. Это отдельная тема. Целая эпоха в этих трёх буквах. Поэтому я не стал её включать в первый раздел. Мне FTP ещё ни разу не потребовался, всё было закачано через WinSCP. Однако, иногда этот морально устаревший протокол всё-таки нужен. Например для обновления и установки плагинов WordPress.

  1. От рута в консоли пишем:
    apt-get install proftpd
    При установке появится вопрос From inetd или Standalone — выбираем Standalone.

  2. В общем-то это всё :) Можно обратиться к серверу по IP с указанием протокола FTP. Например, ftp://127.0.0.1, если сервер запросил логин и пароль, то всё ОК. FTP-сервер запускается автоматически после установки и использует юзеров Ubuntu, то есть любой юзер, кроме root, теперь может подключаться к серверу по протоколу FTP и все эти пользователи будут попадать в одну папку /srv/ftp. Меня это не устроило, поэтому я подправил файл /etc/proftpd/proftpd.conf:
    nano /etc/proftpd/proftpd.conf
    нашёл в этом файле строчку:
    # DefaultRoot ~
    и раскомментил её (убрал # в начале строки). Теперь пару слов об этой строчке. Если она закомментирована, то при подключении любого юзера используется путь по умолчанию (это /srv/ftp). Если эта строка не имеет хеш (#) в начале и как адрес указана тильда (~), то при подключении к серверу юзер попадает в свою домашнюю папку. Так же можно задать общую папку для всех юзеров, например, /var/www. Для этого данная строка должна принять такой вид: # DefaultRoot /var/www
    Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.

  3. Если предполагается подключение нескольких человек не являющихся администраторами сервера к FTP, то желательно создать каждому из них юзера без доступа к SSH. Давайте создадим юзера ftpuser с доступом к FTP, но без доступа к SSH:
    adduser ftpuser --shell /bin/false
    задаём пароль и личные данные. В случае необходимости, юзера ftpuser можно удалить командой userdel ftpuser и его папку rm -r /home/ftpuser

  4. Произведём более детальную настройку нашего FTP-сервера. Снова окрываем /etc/proftpd/proftpd.conf:
    nano /etc/proftpd/proftpd.conf
    Напомню, что для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.
    Разберём в этом файле некоторые опции:

    • ServerName — опция, которая задаёт имя сервера.
    • DefaultRoot — опция определяющая, в какой папке сразу после подключения будет находиться юзер.
    • Port — опция, которая задаёт порт для подключения к серверу, по умолчанию это 21.
    • MaxInstances — опция определяющая максимальное количество подключений к серверу (но не юзеров).
    • Umask — опция, которая определяет маску прав для загружаемых по FTP файлов. Маска 022 означает, что все папки будут грузиться с правами 755, а все файлы с правами 644.
    • AllowOverwrite — опция, которая разрешает или запрещает перезаписывать файлы по FTP.
  5. Перезагружаем FTP-сервер, чтобы изменения вступили в силу:
    service proftpd restart

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

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

Фолловьте меня в Твиттере, пишите комменты, пока!

Пост обновлён 11.11.2018

code.cons, div.cons {background:#000; color:#fff; font-family: Courier New, monospace;margin:2px;} li {margin:3px;}

$(function(){ $(“#back-top”).hide(); $(window).scroll(function () { if ($(this).scrollTop() > 150) { $(‘#back-top’).fadeIn(); } else { $(‘#back-top’).fadeOut(); } }); $(‘a[href^=”#”]‘).click(function(){ var target = $(this).attr(‘href’); $(‘html, body’).animate({scrollTop: target == ‘#top’ ? 0 :$(target).offset().top - 25}, 800); return false; }); });

Пост хранится тут: https://o-les.ru/html/drafts/first-step-with-VPS.html