Привет!

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

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

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

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

Итак, всё устанавливаем, запускаем 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 
  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. Жить он у нас будет на 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. Вставляем в него следующий текст:
    <VirtualHost 127.0.1.1:80>
     ServerName localhost
     DocumentRoot /usr/share/phpmyadmin
     ServerAdmin webmaster@localhost.loc
     ErrorLog /var/log/apache2/error.log
     CustomLog /var/log/apache2/access.log combined
    </VirtualHost> 

    И выходим из редактора. Для этого нажимаем 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 
  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/ и если всё настроено правильно мы видим такую картину:
    $IMAGE2$

Давайте теперь изменим настройки безопасности. Можно делать не всё и зприведённого ниже. Например, оставить 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:
     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. Вставляем в него следующий текст:
    <VirtualHost *:80>
     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
    </VirtualHost> 

    Вместо  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 для подтверждения адреса сохраняемого файла.
    Разберём в этом файле некоторые опции:
  5. Перезагружаем FTP-сервер, чтобы изменения вступили в силу:
     service proftpd restart 

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

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

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

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

Пост хранится тут: http://oles.pp.ru/html/drafts/first-step-with-VPS.html