Настройка LAMP стека Linux-Apache-MySQL-PHP

Материал из ARK-HOSTER.RU | Документация хостинга
Версия от 08:31, 15 октября 2025; Admin (обсуждение | вклад) (Новая страница: «= Настройка LAMP стека (Linux, Apache, MySQL, PHP) = == 1. Подготовка системы == * Войдите в систему под уче…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Настройка LAMP стека (Linux, Apache, MySQL, PHP)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка Apache =

Обновление системы

1. Обновите систему: sudo apt update

2. Установите необходимые пакеты: sudo apt install -y wget curl unzip

Установка Apache

1. Установите Apache: sudo apt install -y apache2

2. Запустите и включите автозапуск: sudo systemctl start apache2 sudo systemctl enable apache2

3. Проверьте статус: sudo systemctl status apache2

4. Проверьте работу Apache: curl -I http://localhost

Настройка Apache

1. Включите необходимые модули: sudo a2enmod rewrite sudo a2enmod ssl sudo a2enmod headers sudo a2enmod expires

2. Перезапустите Apache: sudo systemctl restart apache2

3. Проверьте конфигурацию: sudo apache2ctl configtest

3. Установка MySQL =

Установка MySQL

1. Установите MySQL: sudo apt install -y mysql-server

2. Запустите и включите автозапуск: sudo systemctl start mysql sudo systemctl enable mysql

3. Проверьте статус: sudo systemctl status mysql

Настройка безопасности MySQL

1. Запустите скрипт безопасности: sudo mysql_secure_installation

2. Следуйте инструкциям:

  • Установите пароль для root
  • Удалите анонимных пользователей
  • Запретите удаленный вход root
  • Удалите тестовую базу данных
  • Перезагрузите таблицы привилегий

Создание базы данных и пользователя

1. Подключитесь к MySQL: sudo mysql -u root -p

2. Создайте базу данных: CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. Создайте пользователя: CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password';

4. Предоставьте права: GRANT ALL PRIVILEGES ON myapp.* TO 'myapp_user'@'localhost'; FLUSH PRIVILEGES;

5. Выйдите из MySQL: EXIT;

4. Установка PHP =

Установка PHP

1. Установите PHP и необходимые модули: sudo apt install -y php php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-soap php-json php-bcmath

2. Проверьте версию PHP: php --version

3. Проверьте модули PHP: php -m

Настройка PHP

1. Отредактируйте конфигурацию PHP: sudo nano /etc/php/8.1/apache2/php.ini

2. Настройте основные параметры: upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 max_input_time = 300 memory_limit = 256M date.timezone = Europe/Moscow display_errors = Off log_errors = On error_log = /var/log/php_errors.log

3. Перезапустите Apache: sudo systemctl restart apache2

Тестирование PHP

1. Создайте тестовый файл: sudo nano /var/www/html/info.php

2. Добавьте содержимое: <?php phpinfo(); ?>

3. Проверьте в браузере: http://your-server-ip/info.php

4. Удалите тестовый файл: sudo rm /var/www/html/info.php

5. Настройка виртуальных хостов =

Создание виртуального хоста

1. Создайте директорию для сайта: sudo mkdir -p /var/www/example.com/public_html

2. Установите права доступа: sudo chown -R www-data:www-data /var/www/example.com sudo chmod -R 755 /var/www/example.com

3. Создайте конфигурацию виртуального хоста: sudo nano /etc/apache2/sites-available/example.com.conf

4. Добавьте конфигурацию: <VirtualHost *:80>

   ServerAdmin admin@example.com
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /var/www/example.com/public_html
   
   <Directory /var/www/example.com/public_html>
       AllowOverride All
       Require all granted
   </Directory>
   
   ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
   CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

</VirtualHost>

5. Включите сайт: sudo a2ensite example.com

6. Отключите сайт по умолчанию: sudo a2dissite 000-default

7. Перезапустите Apache: sudo systemctl restart apache2

Создание тестовой страницы

1. Создайте index.html: sudo nano /var/www/example.com/public_html/index.html

2. Добавьте содержимое: <!DOCTYPE html> <html> <head>

   <title>Welcome to Example.com</title>

</head> <body>

LAMP Stack is Working!

Apache, MySQL, and PHP are running successfully.

</body> </html>

6. Настройка SSL =

Установка Certbot

1. Установите Certbot: sudo apt install -y certbot python3-certbot-apache

2. Получите SSL сертификат: sudo certbot --apache -d example.com -d www.example.com

3. Настройте автоматическое обновление: sudo crontab -e

4. Добавьте задачу: 0 12 * * * /usr/bin/certbot renew --quiet

Проверка SSL

1. Проверьте SSL сертификат: sudo certbot certificates

2. Протестируйте SSL: curl -I https://example.com

7. Настройка безопасности =

Настройка файрвола

1. Настройте UFW: sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable

2. Проверьте статус: sudo ufw status

Настройка fail2ban

1. Установите fail2ban: sudo apt install -y fail2ban

2. Создайте конфигурацию: sudo nano /etc/fail2ban/jail.local

3. Добавьте настройки: [DEFAULT] bantime = 3600 findtime = 600 maxretry = 3

[apache-auth] enabled = true port = http,https logpath = /var/log/apache2/*error.log

[apache-noscript] enabled = true port = http,https logpath = /var/log/apache2/*access.log

[apache-overflows] enabled = true port = http,https logpath = /var/log/apache2/*error.log

4. Запустите fail2ban: sudo systemctl start fail2ban sudo systemctl enable fail2ban

Настройка безопасности Apache

1. Создайте .htaccess файл: sudo nano /var/www/example.com/public_html/.htaccess

2. Добавьте правила безопасности: # Защита от просмотра файлов Options -Indexes

  1. Защита конфигурационных файлов

<Files "*.ini">

   Order allow,deny
   Deny from all

</Files>

  1. Защита от SQL инъекций

RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} (\<|%3C).*object.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} (\<|%3C).*embed.*(\>|%3E) [NC] RewriteRule ^(.*)$ - [F,L]

8. Оптимизация производительности =

Настройка кэширования

1. Включите модули кэширования: sudo a2enmod expires sudo a2enmod headers sudo a2enmod deflate

2. Создайте конфигурацию кэширования: sudo nano /etc/apache2/conf-available/cache.conf

3. Добавьте настройки: <IfModule mod_expires.c>

   ExpiresActive On
   ExpiresByType text/css "access plus 1 month"
   ExpiresByType application/javascript "access plus 1 month"
   ExpiresByType image/png "access plus 1 month"
   ExpiresByType image/jpg "access plus 1 month"
   ExpiresByType image/jpeg "access plus 1 month"
   ExpiresByType image/gif "access plus 1 month"
   ExpiresByType image/svg+xml "access plus 1 month"

</IfModule>

<IfModule mod_deflate.c>

   AddOutputFilterByType DEFLATE text/plain
   AddOutputFilterByType DEFLATE text/html
   AddOutputFilterByType DEFLATE text/xml
   AddOutputFilterByType DEFLATE text/css
   AddOutputFilterByType DEFLATE application/xml
   AddOutputFilterByType DEFLATE application/xhtml+xml
   AddOutputFilterByType DEFLATE application/rss+xml
   AddOutputFilterByType DEFLATE application/javascript
   AddOutputFilterByType DEFLATE application/x-javascript

</IfModule>

4. Включите конфигурацию: sudo a2enconf cache

5. Перезапустите Apache: sudo systemctl restart apache2

Настройка PHP-FPM

1. Установите PHP-FPM: sudo apt install -y php8.1-fpm

2. Настройте Apache для использования PHP-FPM: sudo a2enmod proxy_fcgi setenvif sudo a2enconf php8.1-fpm

3. Перезапустите сервисы: sudo systemctl restart apache2 sudo systemctl restart php8.1-fpm

9. Мониторинг и логирование =

Настройка логирования

1. Настройте ротацию логов: sudo nano /etc/logrotate.d/lamp

2. Добавьте конфигурацию: /var/log/apache2/*.log {

   daily
   missingok
   rotate 52
   compress
   delaycompress
   notifempty
   create 644 www-data www-data
   postrotate
       systemctl reload apache2
   endscript

}

/var/log/mysql/*.log {

   daily
   missingok
   rotate 52
   compress
   delaycompress
   notifempty
   create 640 mysql mysql
   postrotate
       systemctl reload mysql
   endscript

}

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/lamp-monitor.sh

2. Добавьте содержимое: #!/bin/bash

  1. Проверка статуса Apache

if ! systemctl is-active --quiet apache2; then

   echo "Apache is down!" | mail -s "LAMP Alert" admin@example.com

fi

  1. Проверка статуса MySQL

if ! systemctl is-active --quiet mysql; then

   echo "MySQL is down!" | mail -s "LAMP Alert" admin@example.com

fi

  1. Проверка использования диска

DISK_USAGE=$(df /var/www | tail -1 | awk '{print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 80 ]; then

   echo "Disk usage is high: ${DISK_USAGE}%" | mail -s "LAMP Alert" admin@example.com

fi

  1. Проверка доступности сайта

if ! curl -s -o /dev/null -w "%{http_code}" http://example.com | grep -q "200"; then

   echo "Website is not responding!" | mail -s "LAMP Alert" admin@example.com

fi

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/lamp-monitor.sh

4. Добавьте в crontab: sudo crontab -e

5. Добавьте задачу: */5 * * * * /usr/local/bin/lamp-monitor.sh

10. Резервное копирование =

Создание скрипта резервного копирования

1. Создайте скрипт резервного копирования: sudo nano /usr/local/bin/lamp-backup.sh

2. Добавьте содержимое: #!/bin/bash

BACKUP_DIR="/backup/lamp" DATE=$(date +%Y%m%d_%H%M%S) SITE_DIR="/var/www/example.com"

  1. Создание директории для бэкапа

mkdir -p $BACKUP_DIR

  1. Резервное копирование файлов сайта

tar -czf $BACKUP_DIR/website-$DATE.tar.gz -C $SITE_DIR .

  1. Резервное копирование базы данных

mysqldump -u myapp_user -p'strong_password' myapp > $BACKUP_DIR/database-$DATE.sql

  1. Сжатие SQL файла

gzip $BACKUP_DIR/database-$DATE.sql

  1. Резервное копирование конфигурации Apache

tar -czf $BACKUP_DIR/apache-config-$DATE.tar.gz -C /etc apache2

  1. Удаление старых бэкапов (старше 7 дней)

find $BACKUP_DIR -name "*$DATE*" -mtime +7 -delete

echo "LAMP backup completed: $DATE"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/lamp-backup.sh

4. Добавьте в crontab: sudo crontab -e

5. Добавьте задачу: 0 3 * * * /usr/local/bin/lamp-backup.sh

11. Установка популярных CMS =

Установка WordPress

1. Скачайте WordPress: cd /tmp wget https://wordpress.org/latest.tar.gz tar -xzf latest.tar.gz

2. Переместите файлы: sudo mv wordpress/* /var/www/example.com/public_html/ sudo chown -R www-data:www-data /var/www/example.com/public_html

3. Настройте WordPress: sudo cp /var/www/example.com/public_html/wp-config-sample.php /var/www/example.com/public_html/wp-config.php

4. Отредактируйте конфигурацию: sudo nano /var/www/example.com/public_html/wp-config.php

Установка Joomla

1. Скачайте Joomla: cd /tmp wget https://downloads.joomla.org/cms/joomla4/latest/Joomla_4.4.0-Stable-Full_Package.zip unzip Joomla_4.4.0-Stable-Full_Package.zip

2. Переместите файлы: sudo mv Joomla_4.4.0-Stable-Full_Package/* /var/www/example.com/public_html/ sudo chown -R www-data:www-data /var/www/example.com/public_html

12. Устранение неполадок =

Частые проблемы

1. Apache не запускается:

  • Проверьте конфигурацию: sudo apache2ctl configtest
  • Проверьте логи: sudo journalctl -u apache2
  • Проверьте порты: sudo netstat -tlnp | grep :80

2. MySQL не подключается:

  • Проверьте статус: sudo systemctl status mysql
  • Проверьте логи: sudo tail -f /var/log/mysql/error.log
  • Проверьте права пользователя

3. PHP не работает:

  • Проверьте модуль PHP: sudo a2enmod php8.1
  • Проверьте конфигурацию PHP
  • Перезапустите Apache

Диагностика

1. Проверка статуса сервисов: sudo systemctl status apache2 sudo systemctl status mysql

2. Проверка логов: sudo tail -f /var/log/apache2/error.log sudo tail -f /var/log/mysql/error.log

3. Проверка подключения к базе данных: mysql -u myapp_user -p -e "SELECT 1;"

4. Тестирование PHP: php -r "echo 'PHP is working';"

Заключение

LAMP стек успешно установлен и настроен! Теперь у вас есть полнофункциональная веб-платформа для разработки и хостинга веб-приложений.

Для размещения ваших LAMP приложений на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой LAMP стека и оптимизацией производительности ваших веб-приложений!