Привет!

Пока у меня есть свободное время, я продолжаю писать на тему 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. Далее запрос пароля: [email protected].*.*'s password: — пишем пароль, при этом символы на экране появляться не будут, не пугайтесь и вводите пароль очень внимательно, лучше скопировать из письма от хостера и правой кнопкой мыши вставить. Если всё правильно, то должно появиться что вроде этого:

login as: root
[email protected]'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*****:~# 

 

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

Установка и настройка веб-сервера

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

  1. Если мы не под root-юзером, зайдём в консоль от root, чтоб не писать перед каждой командой  sudo  если под рутом, то сразу к пункту 1:
     sudo su 
  2. От рута мы зашли, а папка осталась нашей, поэтому пишем  cd  (вариант  cd /root  — не должен работать):
      cd 
  3. Обновим список репозиториев:
     apt-get update 
  4. Установим 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 
  5. Кстати, удалить это всё можно так же одной командой:
     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 
  6. Так как установились помимо веб-сервера ещё и php, mysql, phpmyadmin, перезагружаем Apache:
     service apache2 restart 

phpMyAdmin

Теперь настроим 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 [email protected]
     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/.

VNC

Совсем забыл: у северной 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 [email protected]
     ErrorLog /var/log/apache2/error.log
     CustomLog /var/log/apache2/access.log combined
     

    Вместо  user0  вписываем имя своего юзера  site.ru  подставляем свой домен, если доменов несколько, то заполняем  ServerAlias  (заменяем  site2.ru ), так же вместо  [email protected]  можно вписать свой 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. Это отдельная тема. Целая эпоха в этих трёх буквах. Поэтому я не стал её включать в первый раздел. Мне 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


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


Олесь Быков

Автор этого блога. Журналист-IT'шник. Создаю сайты с 2009 года, публикуюсь с 2011.

6 комментариев

  • Kot:

    Хорошая статья! А где твоя публикация про хостеров, чего-то не могу найти( Я недавно в этой сфере, пока арендую хостинг у adminvps.ru — вроде нормальная контора с адекватными ценами)

  • Искандер Губайдуллин:

    Спасибо! Поржал.

  • Искандер Губайдуллин:

    Кстати, комментарии не видно:
    2 thoughts on “Настройка VPS сервера с Ubuntu 12.04”
    Они были до моих комментов.

  • Денис Денисов:

    Кому интерсено может быть будет — adminvps хороший хостер для серьёзных проектов!

  • Владислав Пасечник:

    Отличный VPS сервер с хорошей тех. поддержкой.
    Быстрыми SSD носителями.
    И низкой ценой
    http://infoblog1.ru/forsite/server-v-evrope
    Подробнее здесь. Так же в конце 50% скидка.

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.