Установка и настройка WordPress — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Установка и настройка WordPress = == 1. Подготовка системы == * Войдите в систему под учетной з…») |
Admin (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
− | == 2. Установка LAMP стека | + | == 2. Установка LAMP стека == |
=== Обновление системы === | === Обновление системы === | ||
1. Обновите систему: | 1. Обновите систему: | ||
− | < | + | <pre>sudo apt update</pre> |
2. Установите необходимые пакеты: | 2. Установите необходимые пакеты: | ||
− | < | + | <pre>sudo apt install -y wget curl unzip</pre> |
=== Установка Apache === | === Установка Apache === | ||
1. Установите Apache: | 1. Установите Apache: | ||
− | < | + | <pre>sudo apt install -y apache2</pre> |
2. Запустите и включите автозапуск: | 2. Запустите и включите автозапуск: | ||
− | < | + | <pre>sudo systemctl start apache2</pre> |
− | < | + | <pre>sudo systemctl enable apache2</pre> |
3. Проверьте статус: | 3. Проверьте статус: | ||
− | < | + | <pre>sudo systemctl status apache2</pre> |
4. Включите необходимые модули: | 4. Включите необходимые модули: | ||
− | < | + | <pre>sudo a2enmod rewrite</pre> |
− | < | + | <pre>sudo a2enmod ssl</pre> |
− | < | + | <pre>sudo a2enmod headers</pre> |
=== Установка MySQL === | === Установка MySQL === | ||
1. Установите MySQL: | 1. Установите MySQL: | ||
− | < | + | <pre>sudo apt install -y mysql-server</pre> |
2. Запустите и включите автозапуск: | 2. Запустите и включите автозапуск: | ||
− | < | + | <pre>sudo systemctl start mysql</pre> |
− | < | + | <pre>sudo systemctl enable mysql</pre> |
3. Настройте безопасность MySQL: | 3. Настройте безопасность MySQL: | ||
− | < | + | <pre>sudo mysql_secure_installation</pre> |
4. Создайте базу данных для WordPress: | 4. Создайте базу данных для WordPress: | ||
− | < | + | <pre>sudo mysql -u root -p</pre> |
5. В MySQL выполните: | 5. В MySQL выполните: | ||
− | < | + | <pre>CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'your_password'; | CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'your_password'; | ||
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost'; | GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost'; | ||
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
− | EXIT;</ | + | EXIT;</pre> |
=== Установка PHP === | === Установка PHP === | ||
1. Установите PHP и необходимые модули: | 1. Установите PHP и необходимые модули: | ||
− | < | + | <pre>sudo apt install -y php php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-soap</pre> |
2. Проверьте версию PHP: | 2. Проверьте версию PHP: | ||
− | < | + | <pre>php --version</pre> |
3. Настройте PHP: | 3. Настройте PHP: | ||
− | < | + | <pre>sudo nano /etc/php/8.1/apache2/php.ini</pre> |
4. Измените основные параметры: | 4. Измените основные параметры: | ||
− | < | + | <pre>upload_max_filesize = 64M |
post_max_size = 64M | post_max_size = 64M | ||
max_execution_time = 300 | max_execution_time = 300 | ||
memory_limit = 256M | memory_limit = 256M | ||
date.timezone = Europe/Moscow | date.timezone = Europe/Moscow | ||
− | </ | + | </pre> |
5. Перезапустите Apache: | 5. Перезапустите Apache: | ||
− | < | + | <pre>sudo systemctl restart apache2</pre> |
− | == 3. Установка WordPress | + | == 3. Установка WordPress == |
=== Скачивание WordPress === | === Скачивание WordPress === | ||
1. Перейдите в директорию веб-сервера: | 1. Перейдите в директорию веб-сервера: | ||
− | < | + | <pre>cd /var/www/html</pre> |
2. Скачайте последнюю версию WordPress: | 2. Скачайте последнюю версию WordPress: | ||
− | < | + | <pre>sudo wget https://wordpress.org/latest.tar.gz</pre> |
3. Распакуйте архив: | 3. Распакуйте архив: | ||
− | < | + | <pre>sudo tar -xzf latest.tar.gz</pre> |
4. Переместите файлы: | 4. Переместите файлы: | ||
− | < | + | <pre>sudo mv wordpress/* .</pre> |
− | < | + | <pre>sudo rmdir wordpress</pre> |
5. Удалите архив: | 5. Удалите архив: | ||
− | < | + | <pre>sudo rm latest.tar.gz</pre> |
=== Настройка прав доступа === | === Настройка прав доступа === | ||
1. Установите владельца файлов: | 1. Установите владельца файлов: | ||
− | < | + | <pre>sudo chown -R www-data:www-data /var/www/html</pre> |
2. Установите права доступа: | 2. Установите права доступа: | ||
− | < | + | <pre>sudo find /var/www/html -type d -exec chmod 755 {} \;</pre> |
− | < | + | <pre>sudo find /var/www/html -type f -exec chmod 644 {} \;</pre> |
3. Создайте директорию для загрузок: | 3. Создайте директорию для загрузок: | ||
− | < | + | <pre>sudo mkdir -p /var/www/html/wp-content/uploads</pre> |
− | < | + | <pre>sudo chown -R www-data:www-data /var/www/html/wp-content/uploads</pre> |
=== Создание конфигурационного файла === | === Создание конфигурационного файла === | ||
1. Скопируйте пример конфигурации: | 1. Скопируйте пример конфигурации: | ||
− | < | + | <pre>sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php</pre> |
2. Отредактируйте конфигурацию: | 2. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /var/www/html/wp-config.php</pre> |
3. Настройте базу данных: | 3. Настройте базу данных: | ||
− | < | + | <pre>define('DB_NAME', 'wordpress'); |
define('DB_USER', 'wordpress'); | define('DB_USER', 'wordpress'); | ||
define('DB_PASSWORD', 'your_password'); | define('DB_PASSWORD', 'your_password'); | ||
define('DB_HOST', 'localhost'); | define('DB_HOST', 'localhost'); | ||
− | </ | + | </pre> |
4. Сгенерируйте ключи безопасности: | 4. Сгенерируйте ключи безопасности: | ||
− | < | + | <pre>curl -s https://api.wordpress.org/secret-key/1.1/salt/</pre> |
5. Замените ключи в wp-config.php | 5. Замените ключи в wp-config.php | ||
− | == 4. Настройка Apache | + | == 4. Настройка Apache == |
=== Создание виртуального хоста === | === Создание виртуального хоста === | ||
1. Создайте конфигурацию сайта: | 1. Создайте конфигурацию сайта: | ||
− | < | + | <pre>sudo nano /etc/apache2/sites-available/wordpress.conf</pre> |
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
− | < | + | <pre><VirtualHost *:80> |
ServerName your-domain.com | ServerName your-domain.com | ||
DocumentRoot /var/www/html | DocumentRoot /var/www/html | ||
Строка 150: | Строка 150: | ||
CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined | CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined | ||
</VirtualHost> | </VirtualHost> | ||
− | </ | + | </pre> |
3. Включите сайт: | 3. Включите сайт: | ||
− | < | + | <pre>sudo a2ensite wordpress</pre> |
− | < | + | <pre>sudo a2dissite 000-default</pre> |
4. Проверьте конфигурацию: | 4. Проверьте конфигурацию: | ||
− | < | + | <pre>sudo apache2ctl configtest</pre> |
5. Перезапустите Apache: | 5. Перезапустите Apache: | ||
− | < | + | <pre>sudo systemctl restart apache2</pre> |
− | == 5. Настройка SSL | + | == 5. Настройка SSL == |
=== Установка Certbot === | === Установка Certbot === | ||
1. Установите Certbot: | 1. Установите Certbot: | ||
− | < | + | <pre>sudo apt install -y certbot python3-certbot-apache</pre> |
2. Получите SSL сертификат: | 2. Получите SSL сертификат: | ||
− | < | + | <pre>sudo certbot --apache -d your-domain.com</pre> |
3. Настройте автоматическое обновление: | 3. Настройте автоматическое обновление: | ||
− | < | + | <pre>sudo crontab -e</pre> |
4. Добавьте задачу: | 4. Добавьте задачу: | ||
− | < | + | <pre>0 12 * * * /usr/bin/certbot renew --quiet</pre> |
=== Настройка HTTPS редиректа === | === Настройка HTTPS редиректа === | ||
1. Certbot автоматически настроит редирект, но можно добавить дополнительную настройку: | 1. Certbot автоматически настроит редирект, но можно добавить дополнительную настройку: | ||
− | < | + | <pre>sudo nano /etc/apache2/sites-available/wordpress-le-ssl.conf</pre> |
2. Добавьте принудительный редирект: | 2. Добавьте принудительный редирект: | ||
− | < | + | <pre>RewriteEngine On |
RewriteCond %{HTTPS} off | RewriteCond %{HTTPS} off | ||
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | ||
− | </ | + | </pre> |
− | == 6. Настройка WordPress | + | == 6. Настройка WordPress == |
=== Первоначальная настройка === | === Первоначальная настройка === | ||
1. Откройте браузер и перейдите по адресу: | 1. Откройте браузер и перейдите по адресу: | ||
− | < | + | <pre>https://your-domain.com</pre> |
2. Выберите язык и нажмите "Продолжить" | 2. Выберите язык и нажмите "Продолжить" | ||
Строка 209: | Строка 209: | ||
1. Войдите в админ-панель: | 1. Войдите в админ-панель: | ||
− | < | + | <pre>https://your-domain.com/wp-admin</pre> |
2. Настройте профиль администратора: | 2. Настройте профиль администратора: | ||
Строка 216: | Строка 216: | ||
* Настройте уведомления | * Настройте уведомления | ||
− | == 7. Настройка безопасности | + | == 7. Настройка безопасности == |
=== Ограничение доступа к wp-admin === | === Ограничение доступа к wp-admin === | ||
1. Создайте .htaccess файл для защиты: | 1. Создайте .htaccess файл для защиты: | ||
− | < | + | <pre>sudo nano /var/www/html/wp-admin/.htaccess</pre> |
2. Добавьте правила: | 2. Добавьте правила: | ||
− | < | + | <pre>\# Ограничение доступа по IP |
<RequireAll> | <RequireAll> | ||
Require ip 192.168.1.0/24 | Require ip 192.168.1.0/24 | ||
Require ip YOUR_IP_ADDRESS | Require ip YOUR_IP_ADDRESS | ||
</RequireAll> | </RequireAll> | ||
− | </ | + | </pre> |
=== Настройка файрвола === | === Настройка файрвола === | ||
1. Настройте UFW: | 1. Настройте UFW: | ||
− | < | + | <pre>sudo ufw allow 22/tcp</pre> |
− | < | + | <pre>sudo ufw allow 80/tcp</pre> |
− | < | + | <pre>sudo ufw allow 443/tcp</pre> |
− | < | + | <pre>sudo ufw enable</pre> |
2. Проверьте статус: | 2. Проверьте статус: | ||
− | < | + | <pre>sudo ufw status</pre> |
=== Настройка fail2ban === | === Настройка fail2ban === | ||
1. Установите fail2ban: | 1. Установите fail2ban: | ||
− | < | + | <pre>sudo apt install -y fail2ban</pre> |
2. Создайте конфигурацию для WordPress: | 2. Создайте конфигурацию для WordPress: | ||
− | < | + | <pre>sudo nano /etc/fail2ban/jail.d/wordpress.conf</pre> |
3. Добавьте настройки: | 3. Добавьте настройки: | ||
− | < | + | <pre>[wordpress] |
enabled = true | enabled = true | ||
port = http,https | port = http,https | ||
Строка 258: | Строка 258: | ||
maxretry = 3 | maxretry = 3 | ||
bantime = 3600 | bantime = 3600 | ||
− | </ | + | </pre> |
4. Запустите fail2ban: | 4. Запустите fail2ban: | ||
− | < | + | <pre>sudo systemctl start fail2ban</pre> |
− | < | + | <pre>sudo systemctl enable fail2ban</pre> |
− | == 8. Установка плагинов | + | == 8. Установка плагинов == |
=== Обязательные плагины безопасности === | === Обязательные плагины безопасности === | ||
Строка 292: | Строка 292: | ||
* Бесплатное кэширование | * Бесплатное кэширование | ||
− | == 9. Оптимизация производительности | + | == 9. Оптимизация производительности == |
=== Настройка кэширования === | === Настройка кэширования === | ||
1. Включите кэширование в Apache: | 1. Включите кэширование в Apache: | ||
− | < | + | <pre>sudo a2enmod expires</pre> |
− | < | + | <pre>sudo a2enmod headers</pre> |
2. Добавьте правила кэширования в .htaccess: | 2. Добавьте правила кэширования в .htaccess: | ||
− | < | + | <pre>\# Кэширование статических файлов |
<IfModule mod_expires.c> | <IfModule mod_expires.c> | ||
ExpiresActive On | ExpiresActive On | ||
Строка 313: | Строка 313: | ||
ExpiresByType application/javascript "access plus 1 month" | ExpiresByType application/javascript "access plus 1 month" | ||
</IfModule> | </IfModule> | ||
− | </ | + | </pre> |
=== Настройка PHP-FPM === | === Настройка PHP-FPM === | ||
1. Установите PHP-FPM: | 1. Установите PHP-FPM: | ||
− | < | + | <pre>sudo apt install -y php8.1-fpm</pre> |
2. Настройте Apache для использования PHP-FPM: | 2. Настройте Apache для использования PHP-FPM: | ||
− | < | + | <pre>sudo a2enmod proxy_fcgi setenvif</pre> |
− | < | + | <pre>sudo a2enconf php8.1-fpm</pre> |
3. Перезапустите сервисы: | 3. Перезапустите сервисы: | ||
− | < | + | <pre>sudo systemctl restart apache2</pre> |
− | < | + | <pre>sudo systemctl restart php8.1-fpm</pre> |
− | == 10. Резервное копирование | + | == 10. Резервное копирование == |
=== Автоматическое резервное копирование === | === Автоматическое резервное копирование === | ||
1. Создайте скрипт резервного копирования: | 1. Создайте скрипт резервного копирования: | ||
− | < | + | <pre>sudo nano /usr/local/bin/wordpress-backup.sh</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>\#!/bin/bash |
BACKUP_DIR="/backup/wordpress" | BACKUP_DIR="/backup/wordpress" | ||
Строка 342: | Строка 342: | ||
SITE_DIR="/var/www/html" | SITE_DIR="/var/www/html" | ||
− | # Создание директории для бэкапа | + | \# Создание директории для бэкапа |
mkdir -p $BACKUP_DIR | mkdir -p $BACKUP_DIR | ||
− | # Резервное копирование файлов | + | \# Резервное копирование файлов |
tar -czf $BACKUP_DIR/wordpress-files-$DATE.tar.gz -C $SITE_DIR . | tar -czf $BACKUP_DIR/wordpress-files-$DATE.tar.gz -C $SITE_DIR . | ||
− | # Резервное копирование базы данных | + | \# Резервное копирование базы данных |
mysqldump -u wordpress -p'your_password' wordpress > $BACKUP_DIR/wordpress-db-$DATE.sql | mysqldump -u wordpress -p'your_password' wordpress > $BACKUP_DIR/wordpress-db-$DATE.sql | ||
− | # Сжатие SQL файла | + | \# Сжатие SQL файла |
gzip $BACKUP_DIR/wordpress-db-$DATE.sql | gzip $BACKUP_DIR/wordpress-db-$DATE.sql | ||
− | # Удаление старых бэкапов (старше 7 дней) | + | \# Удаление старых бэкапов (старше 7 дней) |
find $BACKUP_DIR -name "wordpress-*" -mtime +7 -delete | find $BACKUP_DIR -name "wordpress-*" -mtime +7 -delete | ||
echo "WordPress backup completed: $DATE" | echo "WordPress backup completed: $DATE" | ||
− | </ | + | </pre> |
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>sudo chmod +x /usr/local/bin/wordpress-backup.sh</pre> |
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
− | < | + | <pre>sudo crontab -e</pre> |
5. Добавьте задачу: | 5. Добавьте задачу: | ||
− | < | + | <pre>0 3 * * * /usr/local/bin/wordpress-backup.sh</pre> |
− | == 11. Мониторинг | + | == 11. Мониторинг == |
=== Настройка логирования === | === Настройка логирования === | ||
1. Настройте ротацию логов: | 1. Настройте ротацию логов: | ||
− | < | + | <pre>sudo nano /etc/logrotate.d/wordpress</pre> |
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
− | < | + | <pre>/var/log/apache2/wordpress_*.log { |
daily | daily | ||
missingok | missingok | ||
Строка 389: | Строка 389: | ||
endscript | endscript | ||
} | } | ||
− | </ | + | </pre> |
=== Мониторинг производительности === | === Мониторинг производительности === | ||
1. Установите htop для мониторинга: | 1. Установите htop для мониторинга: | ||
− | < | + | <pre>sudo apt install -y htop</pre> |
2. Создайте скрипт мониторинга: | 2. Создайте скрипт мониторинга: | ||
− | < | + | <pre>sudo nano /usr/local/bin/wordpress-monitor.sh</pre> |
3. Добавьте содержимое: | 3. Добавьте содержимое: | ||
− | < | + | <pre>\#!/bin/bash |
− | # Проверка статуса Apache | + | \# Проверка статуса Apache |
if ! systemctl is-active --quiet apache2; then | if ! systemctl is-active --quiet apache2; then | ||
echo "Apache is down!" | mail -s "WordPress Alert" admin@example.com | echo "Apache is down!" | mail -s "WordPress Alert" admin@example.com | ||
fi | fi | ||
− | # Проверка использования диска | + | \# Проверка использования диска |
DISK_USAGE=$(df /var/www/html | tail -1 | awk '{print $5}' | sed 's/%//') | DISK_USAGE=$(df /var/www/html | tail -1 | awk '{print $5}' | sed 's/%//') | ||
if [ $DISK_USAGE -gt 80 ]; then | if [ $DISK_USAGE -gt 80 ]; then | ||
Строка 413: | Строка 413: | ||
fi | fi | ||
− | # Проверка доступности сайта | + | \# Проверка доступности сайта |
if ! curl -s -o /dev/null -w "%{http_code}" https://your-domain.com | grep -q "200"; then | if ! curl -s -o /dev/null -w "%{http_code}" https://your-domain.com | grep -q "200"; then | ||
echo "Website is not responding!" | mail -s "WordPress Alert" admin@example.com | echo "Website is not responding!" | mail -s "WordPress Alert" admin@example.com | ||
fi | fi | ||
− | </ | + | </pre> |
− | == 12. Устранение неполадок | + | == 12. Устранение неполадок == |
=== Частые проблемы === | === Частые проблемы === | ||
Строка 426: | Строка 426: | ||
* Проверьте права доступа к файлам | * Проверьте права доступа к файлам | ||
* Проверьте конфигурацию Apache | * Проверьте конфигурацию Apache | ||
− | * Проверьте логи: < | + | * Проверьте логи: <pre>sudo tail -f /var/log/apache2/error.log</pre> |
2. '''Ошибки базы данных''': | 2. '''Ошибки базы данных''': | ||
Строка 441: | Строка 441: | ||
1. '''Проверка статуса сервисов''': | 1. '''Проверка статуса сервисов''': | ||
− | < | + | <pre>sudo systemctl status apache2</pre> |
− | < | + | <pre>sudo systemctl status mysql</pre> |
2. '''Проверка логов''': | 2. '''Проверка логов''': | ||
− | < | + | <pre>sudo tail -f /var/log/apache2/error.log</pre> |
− | < | + | <pre>sudo tail -f /var/log/mysql/error.log</pre> |
3. '''Проверка подключения к базе данных''': | 3. '''Проверка подключения к базе данных''': | ||
− | < | + | <pre>mysql -u wordpress -p -e "SELECT 1;"</pre> |
4. '''Проверка PHP ошибок''': | 4. '''Проверка PHP ошибок''': | ||
− | < | + | <pre>sudo tail -f /var/log/apache2/error.log | grep PHP</pre> |
== Заключение == | == Заключение == |
Текущая версия на 10:45, 15 октября 2025
Содержание
- 1 Установка и настройка WordPress
- 1.1 1. Подготовка системы
- 1.2 2. Установка LAMP стека
- 1.3 3. Установка WordPress
- 1.4 4. Настройка Apache
- 1.5 5. Настройка SSL
- 1.6 6. Настройка WordPress
- 1.7 7. Настройка безопасности
- 1.8 8. Установка плагинов
- 1.9 9. Оптимизация производительности
- 1.10 10. Резервное копирование
- 1.11 11. Мониторинг
- 1.12 12. Устранение неполадок
- 1.13 Заключение
Установка и настройка WordPress
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
2. Установка LAMP стека
Обновление системы
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. Включите необходимые модули:
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
Установка MySQL
1. Установите MySQL:
sudo apt install -y mysql-server
2. Запустите и включите автозапуск:
sudo systemctl start mysql
sudo systemctl enable mysql
3. Настройте безопасность MySQL:
sudo mysql_secure_installation
4. Создайте базу данных для WordPress:
sudo mysql -u root -p
5. В MySQL выполните:
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost'; FLUSH PRIVILEGES; EXIT;
Установка PHP
1. Установите PHP и необходимые модули:
sudo apt install -y php php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl php-soap
2. Проверьте версию PHP:
php --version
3. Настройте PHP:
sudo nano /etc/php/8.1/apache2/php.ini
4. Измените основные параметры:
upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 memory_limit = 256M date.timezone = Europe/Moscow
5. Перезапустите Apache:
sudo systemctl restart apache2
3. Установка WordPress
Скачивание WordPress
1. Перейдите в директорию веб-сервера:
cd /var/www/html
2. Скачайте последнюю версию WordPress:
sudo wget https://wordpress.org/latest.tar.gz
3. Распакуйте архив:
sudo tar -xzf latest.tar.gz
4. Переместите файлы:
sudo mv wordpress/* .
sudo rmdir wordpress
5. Удалите архив:
sudo rm latest.tar.gz
Настройка прав доступа
1. Установите владельца файлов:
sudo chown -R www-data:www-data /var/www/html
2. Установите права доступа:
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;
3. Создайте директорию для загрузок:
sudo mkdir -p /var/www/html/wp-content/uploads
sudo chown -R www-data:www-data /var/www/html/wp-content/uploads
Создание конфигурационного файла
1. Скопируйте пример конфигурации:
sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
2. Отредактируйте конфигурацию:
sudo nano /var/www/html/wp-config.php
3. Настройте базу данных:
define('DB_NAME', 'wordpress'); define('DB_USER', 'wordpress'); define('DB_PASSWORD', 'your_password'); define('DB_HOST', 'localhost');
4. Сгенерируйте ключи безопасности:
curl -s https://api.wordpress.org/secret-key/1.1/salt/
5. Замените ключи в wp-config.php
4. Настройка Apache
Создание виртуального хоста
1. Создайте конфигурацию сайта:
sudo nano /etc/apache2/sites-available/wordpress.conf
2. Добавьте конфигурацию:
<VirtualHost *:80> ServerName your-domain.com DocumentRoot /var/www/html <Directory /var/www/html> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/wordpress_error.log CustomLog ${APACHE_LOG_DIR}/wordpress_access.log combined </VirtualHost>
3. Включите сайт:
sudo a2ensite wordpress
sudo a2dissite 000-default
4. Проверьте конфигурацию:
sudo apache2ctl configtest
5. Перезапустите Apache:
sudo systemctl restart apache2
5. Настройка SSL
Установка Certbot
1. Установите Certbot:
sudo apt install -y certbot python3-certbot-apache
2. Получите SSL сертификат:
sudo certbot --apache -d your-domain.com
3. Настройте автоматическое обновление:
sudo crontab -e
4. Добавьте задачу:
0 12 * * * /usr/bin/certbot renew --quiet
Настройка HTTPS редиректа
1. Certbot автоматически настроит редирект, но можно добавить дополнительную настройку:
sudo nano /etc/apache2/sites-available/wordpress-le-ssl.conf
2. Добавьте принудительный редирект:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
6. Настройка WordPress
Первоначальная настройка
1. Откройте браузер и перейдите по адресу:
https://your-domain.com
2. Выберите язык и нажмите "Продолжить"
3. Заполните информацию о сайте:
- Название сайта
- Имя пользователя
- Пароль
- Email адрес
4. Нажмите "Установить WordPress"
Настройка администратора
1. Войдите в админ-панель:
https://your-domain.com/wp-admin
2. Настройте профиль администратора:
- Перейдите в Пользователи → Ваш профиль
- Обновите информацию
- Настройте уведомления
7. Настройка безопасности
Ограничение доступа к wp-admin
1. Создайте .htaccess файл для защиты:
sudo nano /var/www/html/wp-admin/.htaccess
2. Добавьте правила:
\# Ограничение доступа по IP <RequireAll> Require ip 192.168.1.0/24 Require ip YOUR_IP_ADDRESS </RequireAll>
Настройка файрвола
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. Создайте конфигурацию для WordPress:
sudo nano /etc/fail2ban/jail.d/wordpress.conf
3. Добавьте настройки:
[wordpress] enabled = true port = http,https filter = wordpress logpath = /var/log/apache2/wordpress_access.log maxretry = 3 bantime = 3600
4. Запустите fail2ban:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
8. Установка плагинов
Обязательные плагины безопасности
1. Wordfence Security:
- Перейдите в Плагины → Добавить новый
- Найдите "Wordfence Security"
- Установите и активируйте
2. UpdraftPlus:
- Установите для резервного копирования
- Настройте автоматические бэкапы
3. Yoast SEO:
- Установите для SEO оптимизации
- Настройте мета-теги и sitemap
Плагины производительности
1. WP Rocket:
- Кэширование страниц
- Оптимизация изображений
- Минификация CSS/JS
2. W3 Total Cache:
- Альтернатива WP Rocket
- Бесплатное кэширование
9. Оптимизация производительности
Настройка кэширования
1. Включите кэширование в Apache:
sudo a2enmod expires
sudo a2enmod headers
2. Добавьте правила кэширования в .htaccess:
\# Кэширование статических файлов <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType text/css "access plus 1 month" ExpiresByType application/pdf "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" </IfModule>
Настройка 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
10. Резервное копирование
Автоматическое резервное копирование
1. Создайте скрипт резервного копирования:
sudo nano /usr/local/bin/wordpress-backup.sh
2. Добавьте содержимое:
\#!/bin/bash BACKUP_DIR="/backup/wordpress" DATE=$(date +%Y%m%d_%H%M%S) SITE_DIR="/var/www/html" \# Создание директории для бэкапа mkdir -p $BACKUP_DIR \# Резервное копирование файлов tar -czf $BACKUP_DIR/wordpress-files-$DATE.tar.gz -C $SITE_DIR . \# Резервное копирование базы данных mysqldump -u wordpress -p'your_password' wordpress > $BACKUP_DIR/wordpress-db-$DATE.sql \# Сжатие SQL файла gzip $BACKUP_DIR/wordpress-db-$DATE.sql \# Удаление старых бэкапов (старше 7 дней) find $BACKUP_DIR -name "wordpress-*" -mtime +7 -delete echo "WordPress backup completed: $DATE"
3. Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/wordpress-backup.sh
4. Добавьте в crontab:
sudo crontab -e
5. Добавьте задачу:
0 3 * * * /usr/local/bin/wordpress-backup.sh
11. Мониторинг
Настройка логирования
1. Настройте ротацию логов:
sudo nano /etc/logrotate.d/wordpress
2. Добавьте конфигурацию:
/var/log/apache2/wordpress_*.log { daily missingok rotate 52 compress delaycompress notifempty create 644 www-data www-data postrotate systemctl reload apache2 endscript }
Мониторинг производительности
1. Установите htop для мониторинга:
sudo apt install -y htop
2. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/wordpress-monitor.sh
3. Добавьте содержимое:
\#!/bin/bash \# Проверка статуса Apache if ! systemctl is-active --quiet apache2; then echo "Apache is down!" | mail -s "WordPress Alert" admin@example.com fi \# Проверка использования диска DISK_USAGE=$(df /var/www/html | tail -1 | awk '{print $5}' | sed 's/%//') if [ $DISK_USAGE -gt 80 ]; then echo "Disk usage is high: ${DISK_USAGE}%" | mail -s "WordPress Alert" admin@example.com fi \# Проверка доступности сайта if ! curl -s -o /dev/null -w "%{http_code}" https://your-domain.com | grep -q "200"; then echo "Website is not responding!" | mail -s "WordPress Alert" admin@example.com fi
12. Устранение неполадок
Частые проблемы
1. WordPress не загружается:
- Проверьте права доступа к файлам
- Проверьте конфигурацию Apache
- Проверьте логи:
sudo tail -f /var/log/apache2/error.log
2. Ошибки базы данных:
- Проверьте подключение к MySQL
- Проверьте настройки в wp-config.php
- Проверьте права пользователя базы данных
3. Проблемы с плагинами:
- Переименуйте папку плагинов
- Проверьте совместимость версий
- Восстановите из резервной копии
Диагностика
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 wordpress -p -e "SELECT 1;"
4. Проверка PHP ошибок:
sudo tail -f /var/log/apache2/error.log | grep PHP
Заключение
WordPress успешно установлен и настроен! Теперь у вас есть полнофункциональный сайт с возможностями управления контентом, плагинами и темами.
Для размещения ваших WordPress сайтов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных WordPress сайтов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой WordPress и оптимизацией производительности ваших сайтов!