Для установки LAMP на VDS регистрируемся на Firstbyte, выбираем подходящий тариф (например MSK-KVM-SSD), в качестве ОС выбираем Debian 11.
Примечание:
Символ # в начале строки означает, что команда должна быть запущена от пользователя root
Символ $ в начале строки означает, что команда должна быть запущена от Вашего созданного пользователя
UPD 2025 (php 8.3): установку возможно производить через скрипт (пункты 0-9)
wget https://iproger.ru/content/uploads/lamp-2025.sh chmod +x lamp-2025.sh ./lamp-2025.sh
2024: установку возможно производить через скрипт (пункты 0-9)
wget https://iproger.ru/content/uploads/lamp-debian11.sh chmod +x lamp-debian11.sh ./lamp-debian11.sh
Либо установку можно произвести вручную по командам:
0) обновляем список пакетов
# apt update && apt upgrade
1) устанавливаем программы для более удобного управления сервером:
# apt -y install lsb-release apt-transport-https ca-certificates curl dirmngr gnupg2 mc nano
2) добавляем репозиторий с php 8.3:
Зеркала:
https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/apt.gpg
This is Octopuce's official and unofficial Debian package repository mirrors
https://debian.octopuce.fr/
https://debian.octopuce.fr/sury-php/
За надежность не ручаюсь:
http://dk.archive.ubuntu.com/deb.sury.org/php/
https://dk.mirror.archlinuxarm.org/deb.sury.org/php/
curl -sSLo /etc/apt/keyrings/sury.org-php.gpg https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/apt.gpg
sh -c 'echo "deb [signed-by=/etc/apt/keyrings/sury.org-php.gpg] https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
mkdir /etc/apt/keyrings
curl -sSLo /etc/apt/keyrings/sury.org-php.gpg https://ftp.mpi-inf.mpg.de/mirrors/linux/mirror/deb.sury.org/repositories/php/apt.gpg
apt update
3) устанавливаем apache+php:
# apt -y install apache2 apache2-dev php8.2 php8.2-gd php8.2-curl php8.2-cli php8.2-cgi php8.2-dev php8.2-zip php8.2-mbstring php8.2-xml php8.2-mysql
Для apache2 дополнительно:
apt -y install libapache2-mod-php8.2 php8.2-fpm
systemctl enable apache2
4) добавим поддержку кэширования (cache-control) и rewrite:
# a2enmod headers
a2enmod rewrite
a2enmod ssl
5) очищаем страницу-заглушку apache:
# echo "" > /var/www/html/index.html
6) далее устанавливаем пакет apache2-mpm-itk (для запуска виртуальных хостов от своего пользователя):
# apt -y install libapache2-mpm-itk
7) далее устанавливаем git:
# apt -y install git
8) Для поддержки SSL-сертификатов:
apt install letsencrypt apt install python3-certbot-apache
9) Устанавливаем сервер MySQL (MariaDB):
# curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup bash mariadb_repo_setup --os-type=debian --os-version=bullseye --mariadb-server-version=11.5 apt -y install mariadb-server mysql_secure_installation
systemctl enable mariadb
Для битрикса в файле /etc/mysql/mariadb.conf.d выставляем:
character-set-server = utf8
collation-server = utf8_unicode_ci
10) Добавляем в /etc/apache2/apache2.conf :
<IfModule mod_rewrite.c>
RewriteRule ^(.*/)?\.git+ - [R=404,L]
</IfModule>
# 2nd line of defense (if no mod_rewrite)
RedirectMatch 404 ^(.*/)?\.git+
При необходимости открываем доступ с внешних ресурсов к базе данных.
11) правим файл /etc/php/8.3/apache2/php.ini а также /etc/php/8.3/fpm/php.ini (для crontab)
max_execution_time = 120
max_input_time = 90
memory_limit = 128M
post_max_size = 150M
upload_max_filesize = 150M
session.gc_maxlifetime = 14400
short_open_tag = On
date.timezone = Europe/Moscow
; для битрикса:
max_input_vars = 10000
opcache.max_accelerated_files=100000
opcache.revalidate_freq=0
12) создадим пользователя:
# useradd username
passwd username
12.1) Если нужно скрыть информацию о сервере на страницах 403,404 и пр. в файле
/etc/apache2/conf-available/security.conf
добавляем или изменяем значения:
ServerTokens Prod ServerSignature Off
Перезапускаем apache:
service apache2 restart
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs -y
Установка сертификата на сайт производится простой командой:
certbot -d domain.ru
13) при использовании единого unix-пользователя для всех сайтов (не рекомендуется):
# chown -R username:username /var/www
cd /var/www/
find ./ -type d -exec chmod 4770 {} \;
13) добавляем виртуальный хост.
в /var/www создаем директорию с именем будущего хоста (например, drupal.my)
14) в /etc/apache2/sites-available/ создаем файл.conf хоста, например /etc/apache2/sites-available/drupal.my.conf
15) содержимое должно выглядеть таким образом (пример).
*вместо drupal.my везде вписываете имя своего хоста, а вместо username своё имя пользователя в системе
16) активируем наш хост
# a2ensite drupal.my.conf
17) в /etc/hosts записываем наш хост таким образом
127.0.0.1 drupal.my
18) не забываем перезапустить апач
# service apache2 restart
19) При необходимости добавляем поддержку python и модуля requests для него
# apt install python-minimal
apt install python3-pip
1)
# apt-get purge libapache2-mod-auth-mysql phpmyadmin
2)
# dpkg -l | grep ^ii | grep mysql-server | awk -F' ' '{ print $2 }'
*команда выведет на экран список пакетов....их все нужно удалить:
# apt-get purge пакет1 пакет2 пакет3
3)
# dpkg -l | grep ^ii | grep apache2 | awk -F' ' '{ print $2 }'
*тоже самое, что и в п.2
4)
# apt-get autoremove
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.