Привет!
Пока у меня есть свободное время, я продолжаю писать на тему 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*****:~#
*Выглядеть приветствие может иначе, например, быть в разы короче.
Установка и настройка веб-сервера
Первое, что нам нужно — это установить и настроить веб-сервер. Я выбираю 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
Теперь настроим 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
- Вставляем в него следующий текст:
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 для подтверждения адреса сохраняемого файла.
- Разрешаем (включаем) этот виртуальный хост:
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 для подтверждения адреса сохраняемого файла. - Теперь phpMyAdmin доступен по адресу http://phpmyadmin/.
VNC
Совсем забыл: у северной Ubuntu нет экрана. Поэтому сейчас установим десктопную версию Ubuntu и настроим VNC. Если у вас и так десктопная Ubuntu пролистайте дальше.
- Для начала установим Ubuntu Desktop, напоминаю, все действия надо делать под root-юзером:
apt-get install ubuntu-desktop
в зависимости от сообразительности вашего VPS, скорости соединения и того, как на небе расположены звёзды этот процесс может занять от нескольких минут до нескольких часов, в теории, на практике, я за время установки успел только сварить кофе.
В процессе установки будут заданы вопросы о языке и раскладке клавиатуры, а так же о способе переключения раскладок. Так же может возникнуть вопрос (или несколько) об изменении тех или иных пакетов системы, соглашаемся (нажимаем y). - Установим графическую оболочку GNOME:
apt-get install gdm
если сервер не мощный, то, когда возникнет вопрос, выбираем lightgdm (при запуске будет только консоль). Если мощный, то можно выбрать gdm (при запуске будет консоль и полноценный рабочий стол), но зачем грузить сервер лишним? - Запускаем графическую оболочку:
/etc/init.d/gdm start
или
service gdm start
- Теперь необходимо настроить 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 после перезапуска. В примере был порт
3133
. Чтобы его разрешить используем командуiptables -A INPUT -p tcp --dport 3313 -j ACCEPT
- Перезапускаем 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
- Вставляем в него следующий текст:
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. - Немножко поправим файл 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. Это отдельная тема. Целая эпоха в этих трёх буквах. Поэтому я не стал её включать в первый раздел. Мне 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.
Фолловьте меня в Твиттере, пишите комменты, пока!
Пост обновлён 11.11.2018
104.md — 19.12.2023