Установка WordPress с Ubuntu 22.04, Apache2, MariaDB и PHP 8.2-FPM

Если вы планируете разместить WordPress на облачном сервере, это руководство будет вам полезно. LAMP означает Linux, Apache, MariaDB и PHP, которые вместе известны как стек LAMP.

Плюсы и минусы выбора веб-сервера Apache вместо NGINX

  • Pros: Он поддерживает файл .htaccess, который обычно используется для кэширования и оптимизации страниц. Это отличный выбор для тех, кто не является кодером.
  • Cons: Он немного менее производителен, чем NGINX, но этим можно управлять с помощью APO. Для сайта с высокой посещаемостью лучшим выбором будет стек LEMP.

Выполните эти 3 шага и посмотрите видео. Нужна помощь? Свяжитесь со мной. 😊

  1. Настройка DNS Cloudflare
  2. Получение Ubuntu Server
  3. Развертывание стека LAMP

Прежде чем приступить к работе, вот небольшой совет. Используйте расширение Search and Replace для массовой замены example.com на ваш собственный домен на этой веб-странице.

Совет по экономии времени для пользователей Google Chrome.
search replace

Часть A: Поддерживайте серверы имен Cloudflare в активном состоянии

Мы будем использовать DNS Cloudflare для получения SSL-сертификата Let’s Encrypt Wildcard. Выполните этот шаг первым, чтобы насладиться миграцией без простоя.

Проверка текущих серверов имен

Часть B: Подготовьте сервер Ubuntu Server 22.04 LTS Server

Ubuntu
Логотип Ubuntu

1. Зарегистрируйтесь в Vultr и получите $100 бесплатных кредитов (действует в течение 14 дней)

Как человек, который перепробовал множество компаний, предоставляющих облачные серверы, я могу сказать, что с Vultr вы не ошибетесь. Эти ребята искренни и заботливы, когда речь заходит о поддержке и услугах.

vultr

⚡ Производительность

  • AMD EPYC™ третьего поколения
  • NVME / SSD
  • Процессор с частотой до 4 ГГц
  • Скорость сети до 5 Гбит/с
  • Датацентры в Америке, Европе, Азии, Австрии
  • Готовность к IPV6

💡 Особенности

  • Удобная для новичков приборная панель
  • Снимок одним щелчком мыши
  • Automtatic Backup (Платно)
  • Бесплатный облачный брандмауэр
  • Защита от DDoS-атак (платная)
  • 100% виртуализация KVM

⚙ Поддержка

  • PayPal/карта
  • Круглосуточная поддержка по продаже билетов
  • Документация

2. Создайте новый сервер

Просто нажмите на кнопку «плюс», чтобы начать работу

Deploy New Server

3. Выберите тип сервера

Выберите Cloud Compute для совместного использования ЦП по доступным ценам.

Cloud Compute

После этого вы можете выбрать опцию AMD High Performance или Intel High Frequency в разделе CPU & Storage Technology. Это самый быстрый процессор и диск NVMe. Если бюджет меньше, выберите тарифный план Regular с процессором Intel, в котором вы получите SSD-диск.

CPU Technology

4. Выберите местоположение сервера

Vultr предлагает серверы на четырех континентах. Для обеспечения наименьшей задержки и наилучшей производительности всегда следует выбирать регион, который ближе всего к вашей аудитории.

vultr server region

Например, если 99% трафика приходит из Индии, выберите ближайший регион — Мумбаи.

Азия

  • Мумбаи, Индия
  • Дели, Индия
  • Бенгалуру, Индия
  • Сингапур, Сингапур
  • Токио, Япония
  • Сеул, Южная Корея

Америка

  • Майами, Соединенные Штаты
  • Атланта, Соединенные Штаты
  • Чикаго, Соединенные Штаты
  • Даллас, Соединенные Штаты
  • Гонолулу, Соединенные Штаты
  • Лос-Анджелес, Соединенные Штаты
  • Мехико, Мексика
  • Нью-Йорк (Нью-Джерси), Соединенные Штаты
  • Сиэтл, Соединенные Штаты
  • Силиконовая долина, Соединенные Штаты
  • Торонто, Канада, Сан-Паулу

Европа

  • Стокгольм, Швеция
  • Лондон, Великобритания
  • Амстердам, Нидерланды
  • Франкфурт, Германия
  • Мадрид, Испания
  • Париж, Франция
  • Варшава, Польша

Австралия

  • Сидней, Австралия
  • Мельбурн, Австралия

5. Выберите Образ сервера > Операционная система > Ubuntu 22.04 LTS x64

ubuntu os

Долгосрочная поддержка (LTS) — это политика управления жизненным циклом продукта, при которой стабильный выпуск компьютерного программного обеспечения поддерживается в течение более длительного периода времени, чем стандартный выпуск.

ubuntu releases 2

6. Выберите размер сервера

server size

План $6/mo будет отличной отправной точкой для нового блога. Вы можете повысить тарифный план в любое время в соответствии с вашими требованиями.

Совет: Если вы выполняете миграцию, проверьте Общий размер установки в разделе Информация о состоянии сайта.

Site health info

7. Включить IPV6, резервное копирование

vultr enable backup ipv6

8. Добавьте ключ SSH

Это рекомендуемый, необязательный шаг для повышения безопасности.

Add SSH key
  • Нажмите на кнопку Add New, чтобы добавить новый SSH-ключ для отправки 🔒Public key.
  • Сгенерируйте ключи, используя приведенный ниже метод в соответствии с вашей ОС.
win os
  • Загрузите приложение PuTTy.
  • Найдите PuTTygen в меню Пуск
  • Нажмите на кнопку Generate и наведите указатель мыши
  • Скопируйте открытый ключ и предоставьте его Vultr
  • Введите ключевую кодовую фразу
  • Сохраните 🔑Private Key в самом безопасном месте.
  • Это может быть использовано для входа в SSH или SFTP.
linux 2
  • Выполните: ssh-keygen -t rsa. Для получения более надежного 4096-битного ключа выполните: ssh-keygen -t rsa -b 4096
  • Нажмите Enter, когда вас спросят, где вы хотите сохранить ключ (при этом будет использовано местоположение по умолчанию).
  • Введите кодовую фразу для вашего ключа.
  • Запустите cat ~/.ssh/id_rsa.pub — это даст вам ключ в правильном формате для вставки в панель управления.
  • Обязательно создайте резервную копию файла ~/.ssh/id_rsa. Его невозможно восстановить, если он будет утерян.

Выберите свой SSH-ключ

Следуя этим шагам, вы прикрепите свой открытый ключ к новому инстансу. Затем вы сможете войти в SSH, используя пароль Plain Text и ключ SSH.

select SSH public key

9. Свяжите правило веб-брандмауэра с экземпляром сервера

Firewall
  1. Нажмите на Управление и создайте новую группу брандмауэра.
  2. Разрешите порт TCP 22 для SSH. 80 для HTTP и 443 HTTPS для правил IPV4 и IPV6.
  3. После этого свяжите группу Firewall с вашим экземпляром.
firewall status
Принимать TCP соединения только с 22, 80, 443
Link Firewall Group
Свяжите правило брандмауэра с новым экземпляром

10. Введите имя хоста и ярлык, нажмите кнопку Развернуть сейчас

server hostname label

Теперь в процессе установки вы увидите

Instance Installing

11. Перейдите на страницу Новый экземпляр

Скопируйте IP-адрес, имя пользователя и пароль. Ваш порт по умолчанию — 22.

new instance info page

12. Отключить вход по паролю

В целях безопасности рекомендуется отключить аутентификацию по паролю и разрешить только аутентификацию по ключу.

  1. Редактирование файла конфигурации nano /etc/ssh/sshd_config
  2. Найти (CTRL + W) и поиск PasswordAuthentication
  3. Change value from yes to no
  4. Для сохранения введите, CTRL + O
  5. Перезапустите службу SSH с помощью команды sudo service ssh restart
disable password auth
Отключить аутентификацию по паролю

В следующий раз вы можете использовать SSH только через ключ, как показано в видео.

Для Linux или Mac используйте Терминал с командой следующего содержания

ssh [email protected] -p 22 -i id_rsa

Шаг 13. Отключите UFW

Когда вы устанавливаете новый экземпляр на VULTR, он поставляется с включенным UFW (Uncomplicated Firewall), который блокирует все порты, кроме SSH-порта 22. Это может привести к ошибке ERR_CONNECTION_REFUSED в браузере. Чтобы исправить это, я бы посоветовал отключить UFW.

ufw disable

Теперь я ускорю первоначальный процесс развертывания WordPress на стеке LAMP.

Часть C. Развертывание WordPress на стеке LAMP

1. Обновление репозиториев

Введите следующую команду и нажмите клавишу Enter

sudo -s
apt update && apt upgrade -y && apt dist-upgrade && apt autoclean && apt autoremove -y && reboot

или

wget -qO update https://dl.gulshankumar.net/update && chmod +x update

В следующий раз всегда используйте следующую команду быстрого доступа для обновления.

./update

2. Установка MariaDB с обеспечением безопасности

Снова войдите в систему и введите следующую команду

sudo apt install mariadb-server -y && sudo mysql_secure_installation

Ответьте на следующие вопросы

  • Enter current password for root (enter for none): Нажмите клавишу Enter
  • Switch to unix_socket authentication [Y/n]: n
  • Set root password? [Y/n]: Нажмите клавишу Enter.
  • New password: Введите пароль, для генерации можно использовать Dashlane. Щелкните правой кнопкой мыши «Вставить».
  • Re-enter new password: Повторно введите свой пароль.

После успешной установки пароля вы увидите

Password updated successfully!
Reloading privilege tables..
... Success!

Также вам необходимо ответить на следующие вопросы.

Remove anonymous users? [Y/n]: Нажмите Y и введите
Disallow root login remotely? [Y/n]: Нажмите Y и введите
Remove test database and access to it? [Y/n]: Нажмите Y и введите
Reload privilege tables now? [Y/n]: Нажмите Y и введите

3. Создайте новую базу данных для WordPress

Войдите в MySQL, нажмите клавишу ввода, когда он запросит пароль.

mysql -u root -p

Создайте новую базу данных и предоставьте привилегии ее пользователю с паролем. Именно здесь WordPress хранит всю информацию о постах, страницах, темах, плагинах и т.д.

create database wordpress;
grant all on wordpress.* to gulshan@localhost identified by '5pY8CKJxDRJEGQNkX7';
flush privileges;
exit;

Где ваш …
база данных wordpress
имя пользователя — Гульшан
пароль 5pY8CKKJxDRJEGQNkX7

Совет: Рассмотрите возможность использования уникальных учетных данных для входа в систему

4. Установите PHP 8.2, Apache2 и установите права доступа

sudo add-apt-repository ppa:ondrej/php -y && apt update && apt install php8.2-fpm php8.2-common php8.2-mysql php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-soap php8.2-zip php8.2-bcmath -y && sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php/8.2/fpm/php.ini && service php8.2-fpm restart && apt install apache2 -y && chown -R www-data:www-data /var/www/ && chmod -R 755 /var/www/

Настройка конфигурации PHP

Для работы большинства модных тем и плагинов требуется высококлассная конфигурация PHP. Поэтому мы должны внести эти изменения.

sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 128M/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_file_uploads = 20/max_file_uploads = 30/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 900/g' /etc/php/8.2/fpm/php.ini
sed -i 's/max_input_time = 60/max_input_time = 3000/g' /etc/php/8.2/fpm/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/g' /etc/php/8.2/fpm/php.ini
service php8.2-fpm restart

5. Установите SSL-сертификат Wildcard Let’s Encrypt

Создайте файл cloudflare.ini в каталоге /root/.secrets/.

mkdir -p /root/.secrets/ && cd /root/.secrets/ && nano cloudflare.ini

Добавьте приведенный ниже код, сохраните его с помощью CTRL+O и выйдите с помощью CTRL+X

dns_cloudflare_email = "[email protected]"
dns_cloudflare_api_key = "XXXXXXXXXXXXXXXXX"

Найдите свой электронный адрес Cloudflare и глобальный ключ API в разделе «Мой профиль» > Токены API > Глобальный ключ API

chmod 0400 /root/.secrets/cloudflare.ini

Установите Certbot и DNS Authenticator в соответствии с ОС и HTTP веб-сервером

apt install snapd -y
snap install --beta --classic certbot
snap set certbot trust-plugin-with-root=ok
snap install --beta certbot-dns-cloudflare
snap connect certbot:plugin certbot-dns-cloudflare

Получить SSL-сертификат Wildcard

certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d example.com,*.example.com --preferred-challenges dns-01

Установка автоматического продления с помощью задания Cron

  • Тип crontab -e
  • Тип 1 для редактора nano
  • Введите следующую команду и сохраните
0 0 * * *  /etc/init.d/apache2 reload >/dev/null 2>&1

Возобновление испытаний

certbot renew --dry-run

Активируйте эти полезные модули

a2enmod proxy_fcgi ssl http2 expires headers rewrite remoteip
systemctl restart apache2

6. Создайте App Directory для каждого сайта WordPress, который вы хотите установить

mkdir -p /var/www/example.com/public

Это будет путь к корню документа в конфигурационном файле Apache. Причина создания example.com внутри www заключается в том, чтобы сохранить каждый сайт организованным. Во-вторых, я также создал публичную директорию с целью хранить там все основные файлы WordPress, но wp-config.php на один уровень выше (/var/www/example.com/).

7. Create Apache2 Configuration

Это важно, когда вам нужно настроить ваш домен, как Apache2 должен обрабатывать ваши HTTP-запросы.

Удаление файлов конфигурации блоков сервера по умолчанию Apache2

rm /etc/apache2/sites-available/000-default.conf
rm /etc/apache2/sites-available/default-ssl.conf
rm /etc/apache2/sites-enabled/000-default.conf
source /etc/apache2/envvars

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

Пожалуйста, замените example.com на собственный домен и не забудьте завершить имя файла конфигурации расширением .conf. В противном случае он не будет работать.

cd /etc/apache2/sites-available/
nano example.com.conf
  1. Замените example.com на собственный домен
  2. Введите приведенный ниже код и нажмите ctrl+o для сохранения и ctrl+x для выхода.
##############################################################
#                                                               
# ПРИМЕЧАНИЯ: Пожалуйста, выполните поиск и замену example.com на собственный домен.  
#                                                                
##############################################################


# Мы будем использовать HTTPS без www.
# Если вы хотите HTTPS www, пожалуйста, сохраните https://www.example.com/ в последней строке.
# Иначе вы можете столкнуться с проблемой петли перенаправления.

<VirtualHost *:80>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerSignature Off
   ServerName example.com
   ServerAlias www.example.com
   Protocols h2 h2c http/1.1
   DirectoryIndex index.php index.html
    
   # Рекомендуется для пользователей Cloudflare
   # RemoteIPHeader X-Forwarded-For
   
   # Корневой путь документа (обратите внимание на этот путь, чтобы избежать 404)
   DocumentRoot /var/www/example.com/public
   
   # Путь к журналам - /var/log/apache2/example.com-access.log
   ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
   CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
   
   # Let's Encrypt SSL
   SSLEngine On
   SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
   
   # Разрешить использование файла .htaccess для переопределения конфигурации
   <Directory /var/www/example.com/public>
     Options FollowSymLinks
     AllowOverride All
     Require all granted
   </Directory>
   
   # Заблокируйте выполнение PHP внутри каталога Uploads
   <Directory /var/www/example.com/public/wp-content/uploads>
    <Files *.php>
      deny from all
    </Files>
   </Directory>
   
   # Защитите файл wp-config.php
   <files wp-config.php>
      order allow,deny
      deny from all
   </files>

  # HTTP Auth для дополнительной безопасности
  # Если вы хотите использовать HTTP Auth для страницы входа в WordPress, откомментируйте этот блок кода.
  # Если вы это сделаете, то вам придется также сгенерировать файл .htpasswd.
  # <Files wp-login.php>
  #  AuthName "Admins Only"
  #    AuthUserFile /var/www/.htpasswd
  #   AuthType basic
  #    require user gulshan
  #   <RequireAny>
  #      Require ip 127.0.0.1
  #       Require valid-user
  #   </RequireAny>
  # </Files>
   
   # Блокируйте XML-RPC для предотвращения DDoS-атак. 
   <Files xmlrpc.php>
      Order Deny,Allow
      Deny from all
   </Files>
   
   # Обработка выполнения PHP
   <FilesMatch ".php$">
      SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
   </FilesMatch>
</VirtualHost>

To save, press CTRL+O and Enter key. Then, exit nano editor using command CTRL+X.

Чтобы активировать блок сервера, введите команду

Перед выполнением нижеприведенной команды, пожалуйста, замените example.com на собственный домен.

a2ensite example.com.conf

Тестовая конфигурация (опционально)

apache2 -t

Перезапуск и обновление

service apache2 restart && service php8.2-fpm restart && service mysql restart && apt-get update && apt upgrade -y

8. Установите файлы WordPress

Загрузите файлы WordPress в каталог /var/www/example.com/public/ и установите разрешение.

cd /var/www/example.com/public/ && wget https://ru.wordpress.org/latest-ru_RU.tar.gz && tar -xvzf latest-ru_RU.tar.gz && mv -v wordpress/* /var/www/example.com/public/ && rm -rf latest-ru_RU.tar.gz wordpress && chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

Чтобы обновить разрешение в будущем, используйте следующую команду. Это установит www-data для всего, что находится в каталоге /var/www/

chown -R www-data:www-data /var/www/example.com/public/ && sudo chmod -R 755 /var/www/example.com/public/

9. Обновление DNS

Если вы размещаете WordPress локально, хотите обойти прокси или хотите выполнить миграцию с нулевым временем простоя, этот шаг будет полезен. Я обычно предпочитаю в случае статической области WordPress Dev. 😉

  • Есть два способа указать DNS. Если вы переносите сайт на Vultr и хотите сначала протестировать локально, то отредактируйте файл hosts и укажите его там.

Для Windows

  • Перейдите к свойствам ‪‪C:\Windows\System32\drivers\etc\hosts
  • Измените разрешение «Безопасность» на полный контроль для вашего текущего имени пользователя
  • Теперь вы можете свободно редактировать файл hosts под своим пользователем System и сохранить его.
# For same machine you can have localhost address else public IP
127.0.0.1 example.com
127.0.0.1 www.example.com

Пример, вот как это должно выглядеть

Для Mac или Linux

Вы можете редактировать файл hosts с помощью этой команды под пользователем sudo.

sudo nano /etc/hosts

Обновление DNS с помощью Cloudflare

  • Если все выглядит идеально и вы хотите, чтобы ваш сайт заработал, войдите в Cloudflare DNS и обновите новый IP.
Record TypeNameValue
A@IPV4 Address
AAAA@IPV6 Address
CNAMEwwwexample.com

где @ обозначает корневой домен example.com

9. Зайдите на свое доменное имя, чтобы настроить WordPress

Если вы хотите сохранить домен неwww-версии для вашего WordPress, то посетите неwww-версию, а www.

https://example.com
  • Предоставьте учетные данные для входа в базу данных, чтобы начать настройку WordPress
  • Выполнить установку
  • Заполните основные данные вашего нового сайта и установите WordPress.
  • Войдите в WordPress

Другие необходимые вещи

  • Увеличьте объем памяти подкачки, чтобы справиться с внезапной нагрузкой
swapoff -a
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • Обязательно используйте плагин кэширования страниц, чтобы держать нагрузку на сервер под контролем. Поскольку это стек LAMP, я бы рекомендовал вам WP Fastest Cache.
  • Всегда держите резервную копию.
  • Используйте плагин SMTP Services для отправки исходящей электронной почты WordPress, иначе вы не сможете получить ссылку сброса пароля, сообщения контактной формы 7.

Наконец, установка WordPress завершена.

Я очень ценю ваше драгоценное время, потраченное на чтение этой статьи. Увидимся в следующем учебнике!

Оставьте комментарий