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

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

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

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

Внимание! Для ОС версии Bitrix 6, устанавливаемой на VDS, установка LEMP не требуется!

Первоначальная настройка 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.

В 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.

Сервер от Таймвэб

Комментарии

Сергей Красавин 0
27 дек в 2016
Не работает.
Свернуть ответы
Кристина Лихова +124
28 дек в 2016
Сергей, здравствуйте.

Напишите, пожалуйста, более подробно, с какой проблемой Вы столкнулись?
Андрей 0
11 янв в 2017
Вы наверно столкнулись с проблемой в данном месте:
sudo apt-get install php5-fpm php5-mysql
Сейчас появилась новая версия 7.0, советую попробовать её.

Еще проблем возникнуть при изменении default:
sudo nano /etc/nginx/sites-available/default
перезагрузить nginx становиться невозможным:
sudo service nginx restart
Советую не удалять то что есть в этом файле, а подкорректировать его согласно тому, что предлагается в статье. Изменить пару строк похожих на то, что есть в данной статье, а остальное оставить.
Игорь Семёновых 0
03 мая в 09:03
Здравствуйте!
При установке MySQL нет возможности задать пароль администратора (не запрашивают), в результате чего не могу создать БД, как мне быть?
Свернуть ответы
Asylum +95
03 мая в 10:56
Добрый! Можно подробнее, что и как вы устанавливаете?
Пароль должен сохраниться в логах, либо его можно поменять, команда описана в сети множество раз
Игорь Семёновых 0
28 сен в 11:18
Здравствуйте, а как можно удалить, очистить базу данных? А также удалить пользователя? Не хочу устанавливать phpmyadmin.
Спасибо.
Свернуть ответы
Asylum +95
28 сен в 11:30
А какой дистрибутив?
Игорь Семёновых 0
28 сен в 11:57
Тестирую на ubuntu 18.04
Asylum +95
28 сен в 19:08
DROP DATABASE database_name;
Игорь Семёновых 0
28 сен в 19:29
Спасибо большое.