Параметры сервера:
Debian 9.11 сервер c 1GB ОЗУ
Ставим систему в минимальной конфигурации из компонентов оставляем только поддержку SSH.
После установке обязательно настраиваем доступ по 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