Если вы планируете разместить WordPress на облачном сервере, это руководство будет вам полезно. LAMP означает Linux, Apache, MariaDB и PHP, которые вместе известны как стек LAMP.
Плюсы и минусы выбора веб-сервера Apache вместо NGINX
- Pros: Он поддерживает файл .htaccess, который обычно используется для кэширования и оптимизации страниц. Это отличный выбор для тех, кто не является кодером.
- Cons: Он немного менее производителен, чем NGINX, но этим можно управлять с помощью APO. Для сайта с высокой посещаемостью лучшим выбором будет стек LEMP.
Выполните эти 3 шага и посмотрите видео. Нужна помощь? Свяжитесь со мной. 😊
Прежде чем приступить к работе, вот небольшой совет. Используйте расширение Search and Replace для массовой замены example.com на ваш собственный домен на этой веб-странице.
Совет по экономии времени для пользователей Google Chrome.
![search replace](https://www.gulshankumar.net/wp-content/uploads/2021/01/search-replace.png)
Часть A: Поддерживайте серверы имен Cloudflare в активном состоянии
Мы будем использовать DNS Cloudflare для получения SSL-сертификата Let’s Encrypt Wildcard. Выполните этот шаг первым, чтобы насладиться миграцией без простоя.
Проверка текущих серверов имен
- Найдите свои активные серверы имен по адресу https://www.whatsmydns.net/#NS/example.com
- Если вы используете NS по умолчанию у предыдущего хостинга или регистратора домена, то вам необходимо заменить его на Cloudflare.
- Узнать как использовать Cloudflare DNS
Часть B: Подготовьте сервер Ubuntu Server 22.04 LTS Server
![Ubuntu](https://www.gulshankumar.net/wp-content/uploads/2020/02/Ubuntu.png)
1. Зарегистрируйтесь в Vultr и получите $100 бесплатных кредитов (действует в течение 14 дней)
Как человек, который перепробовал множество компаний, предоставляющих облачные серверы, я могу сказать, что с Vultr вы не ошибетесь. Эти ребята искренни и заботливы, когда речь заходит о поддержке и услугах.
![vultr](https://www.gulshankumar.net/wp-content/uploads/2022/12/vultr-homepage.png)
⚡ Производительность
- AMD EPYC™ третьего поколения
- NVME / SSD
- Процессор с частотой до 4 ГГц
- Скорость сети до 5 Гбит/с
- Датацентры в Америке, Европе, Азии, Австрии
- Готовность к IPV6
💡 Особенности
- Удобная для новичков приборная панель
- Снимок одним щелчком мыши
- Automtatic Backup (Платно)
- Бесплатный облачный брандмауэр
- Защита от DDoS-атак (платная)
- 100% виртуализация KVM
⚙ Поддержка
- PayPal/карта
- Круглосуточная поддержка по продаже билетов
- Документация
2. Создайте новый сервер
Просто нажмите на кнопку «плюс», чтобы начать работу
![Deploy New Server](https://www.gulshankumar.net/wp-content/uploads/2022/12/Deploy-a-new-Instance.png)
3. Выберите тип сервера
Выберите Cloud Compute для совместного использования ЦП по доступным ценам.
![Cloud Compute](https://www.gulshankumar.net/wp-content/uploads/2022/12/Cloud-Instance-Type.png)
После этого вы можете выбрать опцию AMD High Performance или Intel High Frequency в разделе CPU & Storage Technology. Это самый быстрый процессор и диск NVMe. Если бюджет меньше, выберите тарифный план Regular с процессором Intel, в котором вы получите SSD-диск.
![CPU Technology](https://www.gulshankumar.net/wp-content/uploads/2022/12/CPU-Technology.png)
4. Выберите местоположение сервера
Vultr предлагает серверы на четырех континентах. Для обеспечения наименьшей задержки и наилучшей производительности всегда следует выбирать регион, который ближе всего к вашей аудитории.
![vultr server region](https://www.gulshankumar.net/wp-content/uploads/2022/09/vultr-server-region.png)
Например, если 99% трафика приходит из Индии, выберите ближайший регион — Мумбаи.
Азия
- Мумбаи, Индия
- Дели, Индия
- Бенгалуру, Индия
- Сингапур, Сингапур
- Токио, Япония
- Сеул, Южная Корея
Америка
- Майами, Соединенные Штаты
- Атланта, Соединенные Штаты
- Чикаго, Соединенные Штаты
- Даллас, Соединенные Штаты
- Гонолулу, Соединенные Штаты
- Лос-Анджелес, Соединенные Штаты
- Мехико, Мексика
- Нью-Йорк (Нью-Джерси), Соединенные Штаты
- Сиэтл, Соединенные Штаты
- Силиконовая долина, Соединенные Штаты
- Торонто, Канада, Сан-Паулу
Европа
- Стокгольм, Швеция
- Лондон, Великобритания
- Амстердам, Нидерланды
- Франкфурт, Германия
- Мадрид, Испания
- Париж, Франция
- Варшава, Польша
Австралия
- Сидней, Австралия
- Мельбурн, Австралия
5. Выберите Образ сервера > Операционная система > Ubuntu 22.04 LTS x64
![ubuntu os](https://www.gulshankumar.net/wp-content/uploads/2022/05/ubuntu-os.png)
Долгосрочная поддержка (LTS) — это политика управления жизненным циклом продукта, при которой стабильный выпуск компьютерного программного обеспечения поддерживается в течение более длительного периода времени, чем стандартный выпуск.
![ubuntu releases 2](https://www.gulshankumar.net/wp-content/uploads/2022/05/ubuntu-releases-2.png)
6. Выберите размер сервера
![server size](https://www.gulshankumar.net/wp-content/uploads/2022/12/Server-Size-Plan.png)
План $6/mo будет отличной отправной точкой для нового блога. Вы можете повысить тарифный план в любое время в соответствии с вашими требованиями.
Совет: Если вы выполняете миграцию, проверьте Общий размер установки в разделе Информация о состоянии сайта.
![Site health info](https://www.gulshankumar.net/wp-content/uploads/2022/08/Site-health-info.png)
7. Включить IPV6, резервное копирование
![vultr enable backup ipv6](https://www.gulshankumar.net/wp-content/uploads/2022/08/vultr-enable-backup-ipv6.png)
8. Добавьте ключ SSH
Это рекомендуемый, необязательный шаг для повышения безопасности.
![Add SSH key](https://www.gulshankumar.net/wp-content/uploads/2018/09/add-ssh-key.png)
- Нажмите на кнопку Add New, чтобы добавить новый SSH-ключ для отправки 🔒Public key.
- Сгенерируйте ключи, используя приведенный ниже метод в соответствии с вашей ОС.
![win os](https://www.gulshankumar.net/wp-content/uploads/2020/02/win-os.png)
- Загрузите приложение PuTTy.
- Найдите PuTTygen в меню Пуск
- Нажмите на кнопку Generate и наведите указатель мыши
- Скопируйте открытый ключ и предоставьте его Vultr
- Введите ключевую кодовую фразу
- Сохраните 🔑Private Key в самом безопасном месте.
- Это может быть использовано для входа в SSH или SFTP.
![linux 2](https://www.gulshankumar.net/wp-content/uploads/2020/02/linux-2.png)
- Выполните:
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](https://www.gulshankumar.net/wp-content/uploads/2018/09/select-ssh-public-key.png)
9. Свяжите правило веб-брандмауэра с экземпляром сервера
![Firewall](https://www.gulshankumar.net/wp-content/uploads/2018/09/Manage-Firewall.png)
- Нажмите на Управление и создайте новую группу брандмауэра.
- Разрешите порт TCP 22 для SSH. 80 для HTTP и 443 HTTPS для правил IPV4 и IPV6.
- После этого свяжите группу Firewall с вашим экземпляром.
![firewall status](https://www.gulshankumar.net/wp-content/uploads/2018/09/firewall-status.gif)
![Link Firewall Group](https://www.gulshankumar.net/wp-content/uploads/2018/09/Link-Firewall-Group.png)
10. Введите имя хоста и ярлык, нажмите кнопку Развернуть сейчас
![server hostname label](https://www.gulshankumar.net/wp-content/uploads/2022/12/server-hostname-label.png)
Теперь в процессе установки вы увидите
![Instance Installing](https://www.gulshankumar.net/wp-content/uploads/2022/08/server-added-successfully.png)
11. Перейдите на страницу Новый экземпляр
Скопируйте IP-адрес, имя пользователя и пароль. Ваш порт по умолчанию — 22.
![new instance info page](https://www.gulshankumar.net/wp-content/uploads/2022/12/new-instance-info-page.png)
12. Отключить вход по паролю
В целях безопасности рекомендуется отключить аутентификацию по паролю и разрешить только аутентификацию по ключу.
- Редактирование файла конфигурации
nano /etc/ssh/sshd_config
- Найти (CTRL + W) и поиск
PasswordAuthentication
- Change value from yes to no
- Для сохранения введите, CTRL + O
- Перезапустите службу SSH с помощью команды
sudo service ssh restart
![disable password auth](https://www.gulshankumar.net/wp-content/uploads/2020/02/disable-password-auth.png)
В следующий раз вы можете использовать SSH только через ключ, как показано в видео.
Для Linux или Mac используйте Терминал с командой следующего содержания
ssh root@192.168.1.1 -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 = "your-cloudflare-email@example.com"
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
- Замените
example.com
на собственный домен - Введите приведенный ниже код и нажмите 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 Type | Name | Value |
---|---|---|
A | @ | IPV4 Address |
AAAA | @ | IPV6 Address |
CNAME | www | example.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 завершена.
Я очень ценю ваше драгоценное время, потраченное на чтение этой статьи. Увидимся в следующем учебнике!