Инструкция по настройке VDS: базовая конфигурация и работа с LEMP

28 Марта 2016
1 973

Управление виртуальным сервером осуществляется с помощью командной строки. Для этих целей удобнее всего использовать бесплатную PuTTy. Программа не требует установки - скачав и запустив утилиту, вы можете тут же подключиться к VDS по протоколу SSH, введя IP-адрес (номер порта по умолчанию - 22) и нажав на кнопку “Open”. После этого на экране появится окно консоли с приглашением к авторизации “login as:”. Введите root, нажмите “Enter”, далее укажите полученный при заказе услуги пароль, и вновь подтвердите действие клавишей ввода. Теперь можно начинать работу.


Сама процедура настройки VDS представляет собой ввод в консоль текстовых команд, с помощью которых можно осуществлять практически любые операции над сервером. Ниже рассмотрена последовательность базовых действий, которые необходимо осуществить сразу после запуска виртуальной машины, а также пошаговая установка связки программного обеспечения, необходимого для размещения веб-сайтов. Примеры адаптированы для двух наиболее распространенных семейств Линукс: Debian (к ней относится, например популярный Ubuntu) и Centos (в него входит сам Centos, Fedora и ряд других).


Первоначальная настройка VDS

Обновление программного обеспечения

Начинать настройку VDS необходимо с глобального обновления. Запустить апдейт в Debian-подобных операционных системах можно следующим образом:

apt-get update && apt-get upgrade

для Centos команда иная:

yum update

В процессе обновления вас спросят о том, хотите ли вы установить новые пакеты. Отвечайте утвердительно, используя клавишу Y, и подтвердите свой выбор, нажав “Enter”.


Добавление нового пользователя

Работать с сервером под учетной записью root настоятельно не рекомендуется - лучше всего создать нового пользователя и передать ему необходимые права. В Debian-подобных системах это делается командой:

adduser username

где username следует заменить на желаемое имя пользователя. После ее выполнения вас попросят задать пароль, а затем предложат заполнить дополнительные поля (делать это необязательно - их можно оставить пустыми).


При работе с Centos также используется команда:

adduser username

однако пароль задается отдельно:

passwd username


Передача привилегий root

После создания нового пользователя ему необходимо передать права суперадминистратора, в противном случае вы не сможете полноценно настроить VDS. Делается это через добавление вновь созданной учетной записи в соответствующую группу. Для Debian-подобных:

gpasswd -a username sudo

для Centos-подобных:

gpasswd -a username wheel


Управление SSH

В целях безопасности, необходимо проделать ряд манипуляций с конфигурационным файлом sshd_config, который, как легко догадаться, отвечает за настройку удаленного подключения к серверу по SSH. В разных дистрибутивах Линукс для редактирования используются различные утилиты, соответственно, и команды для них будут несколько различаться. В Debian-подобных применяется nano:

nano /etc/ssh/sshd_config


Для сохранения внесенных изменений необходимо нажать комбинацию клавиш Ctrl+X, затем Y и “Enter”. Centos имеет в своем составе редактор vi:

vi /etc/ssh/sshd_config


Сохранение информации осуществляется командой :x, после чего необходимо нажать “Enter”.

В sshd_config следует запретить вход с помощью учетной записи root, заменив

PermitRootLogin yes

на

PermitRootLogin no

а также поменять порт SSH, используемый по умолчанию, заменив

Port 22

например, на

Port 50132

Номер порта лучше выбирать из диапазона 49152—65535 - это позволит избежать возможных конфликтов с различными службами и сервисами Линукс. После описанных манипуляций необходимо перезапустить SSH. В Debian это делается так:

service ssh restart

а в Centos:

systemctl reload sshd


Теперь необходимо переподключиться к серверу через назначенный порт под новой учетной записью, после чего настройку VDS можно продолжать.


Установка и настройка LEMP


Большинство современных CMS написаны на языке программирования PHP. Это означает, что для размещения практически любого сайта, независимо от типа и функционала, нам понадобится LEMP. Данная аббревиатура обозначает связку современного, и очень быстрого веб-сервера Nginx, интерпретатора php-fpm и системы управления базами данных MySQL. Процедура установки достаточно проста и не займет много времени.


Установка Nginx

Начнем с установки Nginx. В Debian-подобных дистрибутивах это делается одной строчкой:


sudo apt-get install nginx

после чего сервер будет автоматически запущен.


В Centos сперва необходимо добавить репозиторий EPEL:

sudo yum install epel-release

и только после этого производить установку:

sudo yum install nginx


Финальный этап - запуск Nginx:

sudo systemctl start nginx


Установка MySQL

В Debian-подобных операционных системах сервис баз данных устанавливается командой:


sudo apt-get install mysql-server mysql-client


В процессе вас попросят задать пароль администратора MySQL. По окончании установки необходимо запустить скрипт, отвечающий за создание структуры каталогов, необходимых для хранения информации:

sudo mysql_install_db


В Centos-подобных дистрибутивах вместо MySQL используется форк MariaDB, обладающий теми же функциональными возможностями. После его установки:

sudo yum install mariadb-server mariadb

сервер баз данных необходимо запустить, а также добавить в список автозагрузки:

sudo systemctl start mariadb
sudo systemctl enable mariadb


Настройка MySQL

Первичная настройка сервера баз данных осуществляется с помощью специального скрипта, идущего в комплекте с основным ПО:

sudo mysql_secure_installation


После запуска вас попросят ввести пароль администратора MySQL, который мы задали на предыдущем этапе, а затем зададут ряд вопросов, отвечать на которые необходимо кнопками Y (да) и N (нет), подтверждая выбор клавишей “Enter”:


Хотите ли вы сменить пароль? (Change the root password?)- Нет (N)
Удалить анонимных пользователей? (Remove anonymous users?) - Да (Y)
Запретить удаленную авторизацию с правами суперпользователя? (Disallow root login remotely?) - Да (Y)
Удалить тестовую базу данных? (Remove test database and access to it?) - Да (Y)
Перезагрузить таблицу привилегий? (Reload privilege tables now?) - Да (Y)


Добавление новой базы данных

Управление базами данных осуществляется через консоль MySQL. Чтобы в нее войти, необходимо ввести команду:


mysql -u root -p

после чего авторизоваться, используя пароль администратора.


Для размещения динамического сайта необходимо создать базу данных, с которой будет работать движок. Обычно для каждого проекта создается отдельная БД и отдельный пользователь, который может ей управлять. Давайте создадим базу данных sitedb, пользователя site_user, а затем передадим последнему права на управление sitedb (вы можете заменить предложенные имена на любые другие). Делается это следующим образом:


Создаем базу данных:

CRE ATE DATABASE sitedb;


Создаем пользователя (вместо password укажите уникальный пароль)

CREATE USER site_user@localhost IDENTIFIED BY 'password';


Передаем права управления sitedb пользователю site_user:

GRANT ALL PRIVILEGES ON sitedb.* TO site_user@localhost IDENTIFIED BY 'password';


Обновляем данные о привилегиях:

FLUSH PRIVILEGES;


По завершении всех операций выйдите из консоли MySQL:

exit


Установка PHP

Важный этап настройки VDS - установка и конфигурирование интерпретатора PHP. Команды для разных дистрибутивов Линукс отличаются. Инсталляция в Debian осуществляется так:

sudo apt-get install php5-fpm php5-mysql


В Centos - немного иначе:

sudo yum install php php-mysql php-fpm


Конфигурация PHP


Первый шаг - редактирование файла php.ini. В Debian и Ubuntu он располагается здесь:

sudo nano /etc/php5/fpm/php.ini


В Centos-подобных дистрибутивах - непосредственно в каталоге etc:

sudo vi /etc/php.ini


В обеих системах сперва необходимо раскомментировать и поменять значение в следующей строчке:

;cgi.fix_pathinfo=1

на

cgi.fix_pathinfo=0


Таким образом, мы закрыли важную уязвимость, с помощью которой злоумышленники могли бы получить несанкционированный доступ к сайту. На этом настройка интерпретатора на Debian завершена, осталось перезапустить PHP-процессор:

sudo service php5-fpm restart


В Centos же необходимо отредактировать и файл www.conf:

sudo vi /etc/php-fpm.d/www.conf


Здесь требуется найти строчку

listen = 127.0.0.1:9000

и заменить на

listen = /var/run/php-fpm/php-fpm.sock


Также меняем

listen.owner = nobody
listen.group = nobody

на

user = nginx
group = nginx


Далее запускаем интерпретатор, а также вручную добавляем его в автозагрузку:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm


Создание директории для сайта

Теперь необходимо создать каталог, в котором будут располагаться файлы вашего ресурса. В любой операционной системе Линукс это делается следующей командой:

sudo mkdir /var/www/sitename.ru/public_html


В данном примере sitename.ru необходимо заменить на доменное имя сайта. Что касается файлов CMS, их следует загрузить в папку public_html. По завершении загрузки необходимо передать права управления веб-серверу. Здесь есть различия в именах, используемых для обозначения Nginx. Для Debian-подобных дистрибутивов команда будет выглядеть так:

sudo chown -R www-data:www-data /var/www/html/*


в Centos - иначе:

sudo chown -R nginx:nginx /var/www/html/*


Добавление нового хоста Nginx

Последний этап настройки VDS для размещения сайта - добавление виртуального хоста Nginx. Нам достаточно отредактировать файл default. В семействе Debian это делается так:

sudo nano /etc/nginx/sites-available/default


в Centos:

sudo vi /etc/nginx/conf.d/default.conf


Открыв файл, удалите из него всю информацию, заменив на код, представленный ниже (вместо sitename.ru подставьте актуальное имя сайта), и сохраните результат:

server {

  listen 80; server_name sitename.ru; server_name_in_redirect off; access_log /var/log/nginx/sitename.access_log; error_log /var/log/nginx/sitename.error_log; root /var/www/sitename.ru/public_html; index index.php index.html index.htm default.html default.htm; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

}


Осталось перезапустить Nginx. Команда для дистрибутивов Debian:

sudo service nginx restart


для Centos:

sudo systemctl restart nginx


Теперь виртуальный сервер полностью готов к эксплуатации, и можно начинать работу непосредственно с веб-ресурсом. Дальнейшие шаги зависят от выбранной CMS.