VestaCP установка на Debian 9.11 с MYSQL 5.7 и PHP 7.2

23 December 2019

Параметры сервера:

Debian 9.11 сервер c 1GB ОЗУ

Ставим систему в минимальной конфигурации из компонентов оставляем только поддержку SSH.

Выбор компонентов устанавливаемых на Debian 9
Выбор компонентов устанавливаемых на Debian 9
Выбор компонентов устанавливаемых на Debian 9

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

После установки панели управления VestaCP у Администратора панели будет прямой доступ по SSH к консоли сервера, с стандартным логином (admin) и паролём, заданным при установке панели VestaCP.

То есть брутфорс и как результат взлом сервера вполне возможен. Для администратора VestaCP доступ к консоли сервера обязательно закрыть, ключом SSH с паролем, это сделаем после установки панели.

На сервере будет работать MYSQL 5.7 и PHP 7.0 7.1 7.2 все это будет управляться панелью VestaCP в минимальной конфигурации, без DNS и почты. В Debian по умолчанию используется MariaDB и PHP 7.0 соответственно панель управления VestaCP установиться с этими версиями. Поменять после установки MariaDB на MSQL, разумеется, можно, но поступим так: до установки панели поменяем репозитории установки баз данных, для установки MYSQL. Версии PHP 7.1 и PHP 7.2 установим после установки панели VestaCP.

Обновляем repository предварительно сохранив файл настроек:

# cp /etc/apt/sources.list /etc/apt/sources.list.backup

# nano /etc/apt/sources.list

Замените содержимое sources.list на это:

deb http://httpredir.debian.org/debian/ stretch main non-free contrib

deb-src http://httpredir.debian.org/debian/ stretch main non-free contrib

deb http://httpredir.debian.org/debian-security stretch/updates main contrib non-free

deb-src http://httpredir.debian.org/debian-security stretch/updates main contrib non-free

Обновляемся:

# apt-get update

Удалите пакеты exim4 и их конфиги из системы:

# apt-get remove exim4 exim4-base exim4-config exim4-daemon-light

# apt-get purge exim4 exim4-base exim4-config exim4-daemon-light

Установка самых необходимых (?) пакетов на сервере:

# apt-get -y install mc wget curl sudo htop --fix-missing

# apt-get install -y dkms build-essential build-essential module-assistant --fix-missing

Установите драйвера:

# apt-get -y install firmware-linux-free firmware-linux-nonfree --fix-missing

Добавьте вашего пользователя в группу SUDO:

# usermod -a -G sudo Пользователь

Обновление конфигурации:

# apt-get autoremove && apt-get autoclean

# update-initramfs -u

# update-grub2

Перезагрузите сервер:

# shutdown -r now

Добавим репозиторий MYSQL:

# apt-get -y install ca-certificates apt-transport-https lsb-release dirmngr debsums -y --fix-missing

Скачайте deb установщик:

# cd /tmp

# wget https://dev.mysql.com/get/mysql-apt-config_0.8.14-1_all.deb

# dpkg -i mysql-apt-config_0.8.14-1_all.deb

# apt-key adv --keyserver keys.gnupg.net --recv-keys 8C718D3B5072E1F5

# apt-get update

# dpkg-reconfigure mysql-apt-config

Очистка после установки:

# apt-get autoremove && apt-get autoclean

Установка пакетов необходимых в дальнейшем для сборки дополнительных версий PHP:

# apt-get -y install linux-headers-`uname -r` binutils pkg-config build-essential --fix-missing

# update-initramfs -u

# update-grub2

Перезагрузите сервер:

# shutdown -r now

Установка VestaCP :

# cd /tmp

# curl -O https://vestacp.com/pub/vst-install.sh

# bash vst-install.sh --nginx yes --apache yes --phpfpm no --named no --remi no --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota no --exim no --dovecot no --spamassassin no --clamav no --softaculous no --mysql yes --postgresql no --hostname ваш.сервер.ком --email ваше@мыло.ком --password ВашПароль

Панель управления VestaCP установиться c MYSQL 5.7

После установки настройте доступ по SSH для Администратора VestaCP по ключу и паролю. Выключать в панели VestaCP доступ к консоли сервера для Администратора (admin) я вам не рекомендую. Правильней настроить SSH доступ по ключу и паролю.

Внесите правки в конфигурацию phpMyAdmin:

# curl -O -k https://raw.githubusercontent.com/skurudo/phpmyadmin-fixer/master/pma-debian.sh && chmod +x pma-debian.sh && ./pma-debian.sh

# wget --no-check-certificate https://raw.githubusercontent.com/skurudo/phpmyadmin-fixer/master/pma-debian.sh && chmod +x pma-debian.sh && ./pma-debian.sh

Рекомендую выполнить обе команды именно в такой последовательности, так вы решите некоторые возможные проблемы в конфигурации сервера.

По умолчанию в панели VestaCP база данных admin_default с пользователем admin_default. Смените пароль на сложный для этого пользователя.

Затем включите поддержку SSL для домена по умолчанию, без этого у вас возможно не откроется адрес для входа в phpmyadmin.

В настройках VestaCP перейдите в меню (сервер >> DB) и укажите адрес для phpmyadmin вида (https://ваш IP адрес /phpmyadmin/)

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

Приведите к следуюшим значениям ваш файл по адресу; /etc/apache2/conf.d/phpmyadmin.conf :

# nano /etc/apache2/conf.d/phpmyadmin.conf

Поменяйте в строке:

Alias /phpmyadmin /usr/share/phpMyAdmin

Alias /ваш набор букв и цыфр /usr/share/phpMyAdmin

Обращайте внимание на то где в исходном файле пробелы. Оставьте только одну строку с Alias если у вас их две.

Затем перейдите в настройки VestaCP и меню (сервер DB) поменяйте адрес для phpmyadmin с учетом изменений.

Перезагрузите APACHE для применения изменений. Теперь адрес для входа в phpMyAdmin у вас защищён от лобовой атаки с целью подбора пароля.

Для FTP включить защиту подключений, сертификатом TLS.

Выпустите сертификаты:

# openssl req -x509 -nodes -days 7365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Заполняйте данные, которые посчитаете нужными адрес сервера и электронная почта, вашего сервера.

В конфигурацию FTP добавьте следующее:

# nano /etc/vsftpd.conf

rsa_cert_file=/etc/ssl/private/vsftpd.pem

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

require_ssl_reuse=NO

ssl_ciphers=HIGH

max_clients=10

max_per_ip=10

async_abor_enable=YES

Презагрузите FTP :

# /etc/init.d/vsftpd restart

Теперь можно создать пользователя FTP и безопасно подключиться к серверу.

На этом этапе важно вспомнить о защите сервера, настройте для пользователя admin панели VestaCP вход по SSH с использованием ключа, защищенного паролем.

Настройте по желанию цветовую схему в Midnight Commander :

Прежде чем приступить к настройкам, откройте хотя бы один раз Midnight Commander при помощи команды :

# mc

Затем настраивайте :

# nano /home/Ваш пользователь/.config/mc/ini

Тему рекомендую nicedark.ini , значение меняйте в строке skin=default

Чтоб все было, ну прям ваше красиво, пусть цвета будут в 256-цветовой палитре.

Найдите файл .bashrc в домашнем каталоге пользователя, как пример вот такой путь (/home/Ваш пользователь/.bashrc) и добавьте в конец файла такие значения;

# 256-цветов для Midnight Commander

if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then

export TERM=xterm-256color

fi

Темы оформления ищите в /usr/share/mc/skins вот пример:

darkfar.ini

modarcon16-defbg-thin.ini

modarin256root-defbg.ini

dark.ini

modarcon16.ini

modarin256root-defbg-thin.ini

default.ini

modarcon16root-defbg.ini

modarin256root.ini

double-lines.ini

modarcon16root-defbg-thin.ini

modarin256root-thin.ini

featured.ini

modarcon16root.ini

modarin256-thin.ini

gotar.ini

modarcon16root-thin.ini

nicedark.ini

gray-green-purple256.ini

modarcon16-thin.ini

sand256.ini

gray-orange-blue256.ini

modarin256-defbg.ini

xoria256.ini

mc46.ini

modarin256-defbg-thin.ini

modarcon16-defbg.ini

modarin256.ini

Установка дополнительных версий PHP на сервер, собираться будут PHP 7.1 и 7.2 . Собирайте версии в последовательности от меньшей к большей, даже если вам нужна только 7.2 .

Такой вариант проверен и работоспособен :

# apt-get install ca-certificates apt-transport-https -y --fix-missing

# apt-get install pcre2-utils -y --fix-missing

# apt-get install curl wget make autoconf gcc bison libxml2 libxml2-dev libcurl4-openssl-dev pkg-config libssl-dev bzip2 libbz2-dev libjpeg-dev libpng-dev libxpm-dev libfreetype6-dev libgmp-dev libgmp3-dev libmcrypt-dev libpspell-dev librecode-dev libpcre3-dev libpcre++-dev libxslt1-dev libonig-dev libmcrypt-dev libreadline-dev libmhash-dev -y --fix-missing

# apt-get install linux-headers-`uname -r` binutils pkg-config build-essential -y --fix-missing

# apt-get install libxml2-dev libssl-dev libpcre3 libpcre3-dev zlib1g-dev libbz2-dev libjpeg-dev libpng-dev libonig-dev libpspell-dev libreadline-gplv2-dev libxslt-dev -y --fix-missing

# apt-get install git-core subversion build-essential autoconf automake libtool libncurses5 libncurses5-dev make libjpeg-dev gawk libz-dev pkg-config libcurl4-openssl-dev libexpat1-dev libx11-dev unixodbc-dev libasound2-dev libogg-dev libvorbis-dev libperl-dev libgdbm-dev libdb-dev python-dev uuid-dev software-properties-common wget -y --fix-missing

# apt-get install libmagickwand-dev libmagickcore-dev -y --fix-missing

# apt-get install php-dev -y --fix-missing

Если долгая компиляция в этом месте :

Building database of manual pages ...

Через 7 минут нажми кнопку "Enter", это нормально, дождитесь завершения команды

# apt-get install libturbojpeg0-dev -y --fix-missing

# apt-get install libjpeg62-turbo-dev -y --fix-missing

# apt-get install libmcrypt-dev -y --fix-missing

# apt-get install libmcrypt-dev -y --fix-missing

# reboot

Рекомендую собирать дополнительные версии PHP из под учётной записи (root):

# git clone https://github.com/petranikin/mgrvphp.git

# cd mgrvphp

# bash mgrvphp

Отвечай на все вопросы положительно "y"

Возможно, скрипт оборвет работу ошибкой, переходишь на страницу с версией PHP и скачиваешь нужную в папку /opt/php/src/bzips ссылки в зависимости какую версию собираете.

# wget https://www.php.net/distributions/php-7.1.33.tar.bz2

# wget https://www.php.net/distributions/php-7.2.26.tar.bz2

Пример команд ... :

# cd /opt/php/src/bzips

# rm *

# wget https://www.php.net/distributions/php-7.1.33.tar.bz2

# cd ~/mgrvphp

# bash mgrvphp

Запускаешь скрипт, отвечаешь на все вопросы "y" и указываешь версию PHP

После добавления новых версий PHP вы сможете их выбрать в настройке для домена из панели VestaCP.

Значения для разных версий PHP задавайте в файле настроек, такой файл будет индивидуален для каждой версии и располагается по адресу /opt/php/php-7.1.33/etc/conf.d/ext.ini это пример для PHP 7.1.33 для другой версии смените цифры в пути до файла. Я на сервере с 1 GB оперативной памяти устанавливаю такие значения:

memory_limit = 512M

max_execution_time = 600

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE

max_input_vars = 100000

short_open_tag = On

post_max_size = 64M

upload_max_filesize = 32M

Скрипт самостоятельно прописывает в этом файле пути до ioncube loader и opcache

Спасибо за визит, надеюсь тебе пригодилась статья, приходи еще, впереди самое интересное и нужное для Веб Мастера

# reboot