Пока у меня есть свободное время, я продолжаю писать на тему 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.
Итак, всё устанавливаем, запускаем PuTTY, вводим ip нашего сервера, порт, по умолчанию 22. На вопрос login as: пишем root. Далее запрос пароля: root@185.22.*.*'s password: — пишем пароль, при этом символы на экране появляться не будут, не пугайтесь и вводите пароль очень внимательно, лучше скопировать из письма от хостера и правой кнопкой мыши вставить. Если всё правильно, то должно появиться что вроде этого:
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:
Если мы не под root-юзером, зайдём в консоль от root, чтоб не писать перед каждой командой sudo если под рутом, то сразу к пункту 1:
sudo su
От рута мы зашли, а папка осталась нашей, поэтому пишем cd (вариант cd /root — не должен работать):
cd
Обновим список репозиториев:
apt-get update
Установим 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
Кстати, удалить это всё можно так же одной командой:
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
Так как установились помимо веб-сервера ещё и php, mysql, phpmyadmin, перезагружаем Apache:
service apache2 restart
Теперь настроим phpMyAdmin. Жить он у нас будет на IP 127.0.1.1 (можно задать любой другой).
Если вы пропустили первый блок, то там мы устанавливали phpMyAdmin в комплекте с другими программами. Для установки phpMyAdmin введите в консоли от root-юзера:
apt-get update потом
apt-get install phpmyadmin и для дальнейшей работы установим текстовый редактор Nano
apt-get install nano
В консоли открываем редактор Nano и создаём новый файл:
nano /etc/apache2/sites-available/phpmyadmin
И выходим из редактора. Для этого нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.
Разрешаем (включаем) этот виртуальный хост:
a2ensite phpmyadmin запрет (отключение) хоста выполняется командой
a2dissite phpmyadmin
Перезапускаем Apache:
service apache2 restart
Поскольку наш 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 для подтверждения адреса сохраняемого файла.
Совсем забыл: у северной Ubuntu нет экрана. Поэтому сейчас установим десктопную версию Ubuntu и настроим VNC. Если у вас и так десктопная Ubuntu пролистайте дальше.
Для начала установим Ubuntu Desktop, напоминаю, все действия надо делать под root-юзером:
apt-get install ubuntu-desktop в зависимости от сообразительности вашего VPS, скорости соединения и того, как на небе расположены звёзды этот процесс может занять от нескольких минут до нескольких часов, в теории, на практике, я за время установки успел только сварить кофе.
В процессе установки будут заданы вопросы о языке и раскладке клавиатуры, а так же о способе переключения раскладок. Так же может возникнуть вопрос (или несколько) об изменении тех или иных пакетов системы, соглашаемся (нажимаем y).
Установим графическую оболочку GNOME:
apt-get install gdm
если сервер не мощный, то, когда возникнет вопрос, выбираем lightgdm (при запуске будет только консоль). Если мощный, то можно выбрать gdm (при запуске будет консоль и полноценный рабочий стол), но зачем грузить сервер лишним?
Теперь необходимо настроить VNC-сервер и VNC-клиент:
Начнём с сервера. Установим:
apt-get install vnc4server
Запустим:
vncserver :1 -geometry 1366x768 -depth 16 -pixelformat rgb565 можно подставить любое разрешение экрана, в примере выше — удобное мне, вот пример для 1024×768:
vncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565
После первого запуска программа вас попросит ввести пароль для доступа к VNC-серверу. В дальнейшем для смены пароля используется команда vncpasswd
Для остановки VNC-сервера используется команда vncserver -kill :1
Желательно VNC-сервер запускать не от рута, а от какого-нибудь другого юзера.
Добавим GNOME в запуск совместно с запуском VNC-сервера:
nano ~/.vnc/xstartup и добавляем в конец файла:
gnome-session & Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.
Теперь на своём домашнем компьютере устанавливаем программу UltraVNC и запускаем её. Вводим IP своего VPS и порт 5901 в формате 185.*.*.*::5901, если VNC-сервер будет найден, то появится запрос пароля, вводим пароль и получаем визуальный доступ к своему серверу.
Для доступа к адресу http://phpmyadmin/ в консоли вводим firefox и нажимаем Enter. В адресной строке вводим http://phpmyadmin/ и если всё настроено правильно мы видим такую картину:
Давайте теперь изменим настройки безопасности. Можно делать не всё и зприведённого ниже. Например, оставить root юзера, но изменить порт. Однако, это может плохо сказаться на безопасности.
Для начала создадим юзера с ником посложнее на замену руту:
useradd user0 где user0 — ник нового юзера. Задаём пароль, отвечаем на вопросы (можно пропустить нажав Enter несколько раз.
Наделим нашего юзера правами администратора. Для начала добавим его в группу sudo:
useradd user0 sudo И для чтоб исключить возможные проблемы наберём в консоли
visudo и в конец открывшегося файла добавим
user0 ALL=(ALL) ALL где user0 — ник нового юзера.
Изменим порт для SSH и запретим юзеру root подключаться к серверу SSH, для этого открываем файл /etc/ssh/sshd_config командой nano /etc/ssh/sshd_config .
Находим в нём строчку Port 22 , заменяем 22 на что-нибудь цифровое от 2 до 4 символов, например на 3133 .
В этом же файле, находим строчку PermitRootLogin yes , заменяем yes на no .
Разрешим юзеру с ником user0 подключаться по SSH. Для этого ниже добавим строчку AllowUsers user0 . Если вы не добавите эту строчку, то можете остаться без SSH доступа после следующего шага.
Для навигации по файлу используются кнопки-стрелочки и кнопки Page Up (PgUp) и Page Down (PgDn), Home и End. Чтобы выйти из редактора нажимаем Ctrl+X, y для сохранения файла и Enter для подтверждения адреса сохраняемого файла.
Так же это можно сделать через WinSCP, через него удобнее работать с длинными файлами.
Перезапускаем 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 — имя домена. В примере ниже используется второй способ.
В консоли открываем редактор Nano и создаём новый файл:
nano /etc/apache2/sites-available/site.ru
Вместо 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.
Немножко поправим файл hosts. Добавим в него локальный IP 127.0.0.1 , адрес нашего нового сайта, алиас (второй, третий и т.д. домен), при желании можно задать ещё адрес, который будет доступен только с сервера, например site . Для этого откроем файл /etc/hosts :
nano /etc/hosts и в начало или в конец этого файла добавим строчку:
127.0.0.1 site.ru site2.ru site
Теперь создаём папку /home/user0/site.ru :
mkdir /home/user0/site.ru
Разрешаем (включаем) этот виртуальный хост:
a2ensite site.ru запрет (отключение) хоста выполняется командой
a2dissite site.ru
Обновляем конфигурацию Apache:
service apache2 reload либо перезапускаем
service apache2 restart
Теперь можно закачивать файлы в каталог сайта. Для этого используем программу WinSCP. Программа очень простая, поэтому никаких советов по работе с ней давать не буду.
FTP. Это отдельная тема. Целая эпоха в этих трёх буквах. Поэтому я не стал её включать в первый раздел. Мне FTP ещё ни разу не потребовался, всё было закачано через WinSCP. Однако, иногда этот морально устаревший протокол всё-таки нужен. Например для обновления и установки плагинов WordPress.
От рута в консоли пишем:
apt-get install proftpd При установке появится вопрос From inetd или Standalone — выбираем Standalone .
В общем-то это всё :) Можно обратиться к серверу по 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 для подтверждения адреса сохраняемого файла.
Если предполагается подключение нескольких человек не являющихся администраторами сервера к FTP, то желательно создать каждому из них юзера без доступа к SSH. Давайте создадим юзера ftpuser с доступом к FTP, но без доступа к SSH:
adduser ftpuser --shell /bin/false задаём пароль и личные данные. В случае необходимости, юзера ftpuser можно удалить командой userdel ftpuser и его папку rm -r /home/ftpuser
Произведём более детальную настройку нашего 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.
Перезагружаем FTP-сервер, чтобы изменения вступили в силу:
service proftpd restart
На этом основная настройка FTP-сервера окончена. Конечно же, возможностей у программы больше. Об этом информация появится в одном из следующих постов.
На сегодня всё. Возможно, ещё что-то забыл, обязательно дополню, как вспомню, либо буду настраивать следующий VPS.