Поиск по сайту:

Как установить WordPress с LEMP на Ubuntu 18.04


Введение

WordPress — самая популярная CMS (система управления контентом) в Интернете. Это позволяет вам легко настраивать гибкие блоги и веб-сайты поверх серверной части MySQL с обработкой PHP. WordPress получил невероятное распространение и является отличным выбором для быстрого запуска веб-сайта. После настройки почти все администрирование можно выполнять через веб-интерфейс.

В этом руководстве мы сосредоточимся на настройке экземпляра WordPress в стеке LEMP (Linux, Nginx, MySQL и PHP) на сервере Ubuntu 18.04.

Предпосылки

Для выполнения этого руководства вам потребуется доступ к серверу Ubuntu 18.04.

Прежде чем приступить к работе с этим руководством, вам необходимо выполнить следующие задачи:

  • Создайте пользователя sudo на своем сервере. Мы будем выполнять шаги, описанные в этом руководстве, используя пользователя без полномочий root с привилегиями sudo. Вы можете создать пользователя с правами sudo, следуя нашему руководству по начальной настройке сервера Ubuntu 18.04.
  • Установите стек LEMP. Для правильной работы WordPress потребуется веб-сервер, база данных и PHP. Настройка стека LEMP (Linux, Nginx, MySQL и PHP) отвечает всем этим требованиям. Следуйте этому руководству, чтобы установить и настроить это программное обеспечение.
  • Защитите свой сайт с помощью SSL: WordPress обслуживает динамический контент и выполняет аутентификацию и авторизацию пользователей. TLS/SSL — это технология, которая позволяет вам шифровать трафик с вашего сайта, чтобы ваше соединение было безопасным. Способ настройки SSL будет зависеть от того, есть ли у вашего сайта доменное имя.
    • Если у вас есть доменное имя… самый простой способ защитить свой сайт — использовать Let’s Encrypt, который предоставляет бесплатные доверенные сертификаты. Следуйте нашему руководству Let’s Encrypt для Nginx, чтобы настроить это.
    • Если у вас нет домена... и вы используете эту конфигурацию только для тестирования или личного использования, вместо этого вы можете использовать самозаверяющий сертификат. Это обеспечивает тот же тип шифрования, но без проверки домена. Следуйте нашему руководству по самоподписанному SSL для Nginx, чтобы настроить его.

    Когда вы закончите шаги по настройке, войдите на свой сервер как ваш пользователь sudo и продолжите ниже.

    Шаг 1 — Создание базы данных MySQL и пользователя для WordPress

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

    Для начала войдите в корневую (административную) учетную запись MySQL. Если MySQL настроен на использование подключаемого модуля аутентификации auth_socket (по умолчанию), вы можете войти в учетную запись администратора MySQL, используя sudo:

    1. sudo mysql

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

    1. mysql -u root -p

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

    Во-первых, мы можем создать отдельную базу данных, которой WordPress сможет управлять. Вы можете называть это как хотите, но мы будем использовать wordpress в этом руководстве, чтобы упростить его. Вы можете создать базу данных для WordPress, набрав:

    1. CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    Примечание. Каждый оператор MySQL должен заканчиваться точкой с запятой (;). Убедитесь, что это присутствует, если у вас возникнут какие-либо проблемы.

    Далее мы создадим отдельную учетную запись пользователя MySQL, которую будем использовать исключительно для работы с нашей новой базой данных. Создание однофункциональных баз данных и учетных записей — хорошая идея с точки зрения управления и безопасности. В этом руководстве мы будем использовать имя wordpressuser. Не стесняйтесь изменить это, если хотите.

    Мы создадим эту учетную запись, установим пароль и предоставим доступ к созданной нами базе данных. Мы можем сделать это, введя следующую команду. Не забудьте выбрать здесь надежный пароль для пользователя базы данных:

    1. GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

    Теперь у вас есть база данных и учетная запись пользователя, каждая из которых создана специально для WordPress. Нам нужно сбросить привилегии, чтобы текущий экземпляр MySQL знал о недавних изменениях, которые мы сделали:

    1. FLUSH PRIVILEGES;

    Выйдите из MySQL, набрав:

    1. EXIT;

    Сеанс MySQL завершится, и вы вернетесь в обычную оболочку Linux.

    Шаг 2 — Установка дополнительных расширений PHP

    При настройке нашего стека LEMP нам требовался лишь минимальный набор расширений, чтобы заставить PHP взаимодействовать с MySQL. WordPress и многие его плагины используют дополнительные расширения PHP.

    Мы можем загрузить и установить некоторые из самых популярных расширений PHP для использования с WordPress, набрав:

    1. sudo apt update
    2. sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

    Примечание. У каждого плагина WordPress есть свой набор требований. Для некоторых может потребоваться установка дополнительных пакетов PHP. Проверьте документацию вашего плагина, чтобы узнать его требования к PHP. Если они доступны, их можно установить с помощью apt, как показано выше.

    Когда вы закончите установку расширений, перезапустите процесс PHP-FPM, чтобы запущенный процессор PHP мог использовать новые установленные функции:

    1. sudo systemctl restart php7.2-fpm

    Теперь у нас есть все необходимые расширения PHP, установленные на сервере.

    Шаг 3 — Настройка Nginx

    Далее мы внесем несколько незначительных изменений в файлы блоков нашего сервера Nginx. В соответствии с предварительными руководствами у вас должен быть файл конфигурации для вашего сайта в каталоге /etc/nginx/sites-available/, настроенный для ответа на доменное имя или IP-адрес вашего сервера и защищенный TLS. /SSL-сертификат. Мы будем использовать /etc/apache2/sites-available/wordpress в качестве примера, но вы должны заменить путь к файлу конфигурации, где это уместно.

    Кроме того, мы будем использовать /var/www/wordpress в качестве корневого каталога нашей установки WordPress. Вы должны использовать корневой веб-сайт, указанный в вашей собственной конфигурации.

    Примечание. Возможно, вы используете конфигурацию по умолчанию /etc/nginx/sites-available/default/var/www/html корневым каталогом вашего веб-сайта). Это хорошо использовать, если вы собираетесь разместить только один веб-сайт на этом сервере. Если нет, то лучше всего разбить необходимую конфигурацию на логические части, по одному файлу на сайт.

    Откройте файл блока сервера вашего сайта с правами sudo, чтобы начать:

    1. sudo nano /etc/nginx/sites-available/wordpress

    В основной блок server нам нужно добавить несколько блоков location.

    Начните с создания точно соответствующих блоков местоположений для запросов к /favicon.ico и /robots.txt, для которых мы не хотим регистрировать запросы.

    Мы будем использовать местоположение регулярного выражения для соответствия любым запросам статических файлов. Мы снова отключим ведение журнала для этих запросов и пометим их как высоко кэшируемые, поскольку обычно это дорогие ресурсы для обслуживания. Вы можете настроить этот список статических файлов, чтобы он содержал любые другие расширения файлов, которые может использовать ваш сайт:

    server {
        . . .
    
        location = /favicon.ico { log_not_found off; access_log off; }
        location = /robots.txt { log_not_found off; access_log off; allow all; }
        location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
            expires max;
            log_not_found off;
        }
        . . .
    }
    

    Внутри существующего блока location / нам нужно настроить список try_files, чтобы вместо возврата ошибки 404 в качестве опции по умолчанию управление было передано в index.php с аргументами запроса.

    Это должно выглядеть примерно так:

    server {
        . . .
        location / {
            #try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php$is_args$args;
        }
        . . .
    }
    

    Когда вы закончите, сохраните и закройте файл.

    Теперь мы можем проверить нашу конфигурацию на наличие синтаксических ошибок, набрав:

    1. sudo nginx -t

    Если об ошибках не сообщалось, перезагрузите Nginx, набрав:

    1. sudo systemctl reload nginx

    Далее мы скачаем и настроим сам WordPress.

    Шаг 4 — Загрузка WordPress

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

    Перейдите в доступный для записи каталог, а затем загрузите сжатый выпуск, набрав:

    1. cd /tmp
    2. curl -LO https://wordpress.org/latest.tar.gz

    Извлеките сжатый файл, чтобы создать структуру каталогов WordPress:

    1. tar xzvf latest.tar.gz

    Мы на мгновение переместим эти файлы в корень нашего документа. Прежде чем мы это сделаем, мы можем скопировать пример файла конфигурации с именем файла, которое WordPress фактически читает:

    1. cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

    Теперь мы можем скопировать все содержимое каталога в корень нашего документа. Мы используем флаг -a, чтобы обеспечить сохранение наших разрешений. Мы используем точку в конце нашего исходного каталога, чтобы указать, что все в каталоге должно быть скопировано, включая любые скрытые файлы:

    1. sudo cp -a /tmp/wordpress/. /var/www/wordpress

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

    1. sudo chown -R www-data:www-data /var/www/wordpress

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

    Шаг 5 — Настройка файла конфигурации WordPress

    Далее нам нужно внести некоторые изменения в основной файл конфигурации WordPress.

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

    Чтобы получить безопасные значения из генератора секретных ключей WordPress, введите:

    1. curl -s https://api.wordpress.org/secret-key/1.1/salt/

    Вы получите уникальные значения, которые выглядят примерно так:

    Предупреждение. Важно каждый раз запрашивать уникальные значения. НЕ копируйте значения, показанные ниже!

    Output
    define('AUTH_KEY', '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H'); define('SECURE_AUTH_KEY', 'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3'); define('LOGGED_IN_KEY', 'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88'); define('NONCE_KEY', 'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g'); define('AUTH_SALT', 'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES 07VC*Lj*lD&?3w!BT#-'); define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY'); define('LOGGED_IN_SALT', 'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|'); define('NONCE_SALT', 'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

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

    Теперь откройте файл конфигурации WordPress:

    1. sudo nano /var/www/wordpress/wp-config.php

    Найдите раздел, содержащий фиктивные значения для этих настроек. Это будет выглядеть примерно так:

    . . .
    
    define('AUTH_KEY',         'put your unique phrase here');
    define('SECURE_AUTH_KEY',  'put your unique phrase here');
    define('LOGGED_IN_KEY',    'put your unique phrase here');
    define('NONCE_KEY',        'put your unique phrase here');
    define('AUTH_SALT',        'put your unique phrase here');
    define('SECURE_AUTH_SALT', 'put your unique phrase here');
    define('LOGGED_IN_SALT',   'put your unique phrase here');
    define('NONCE_SALT',       'put your unique phrase here');
    
    . . .
    

    Удалите эти строки и вставьте значения, скопированные из командной строки:

    . . .
    
    define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
    define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
    define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
    define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
    define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
    define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
    define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
    define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
    
    . . .
    

    Далее нам нужно изменить некоторые параметры подключения к базе данных в начале файла. Вам необходимо настроить имя базы данных, пользователя базы данных и соответствующий пароль, которые мы настроили в MySQL.

    Другое изменение, которое нам нужно сделать, это установить метод, который WordPress должен использовать для записи в файловую систему. Поскольку мы предоставили веб-серверу разрешение на запись туда, где это необходимо, мы можем явно установить метод файловой системы на «прямой». Неспособность установить это с нашими текущими настройками приведет к тому, что WordPress будет запрашивать учетные данные FTP при выполнении некоторых действий. Этот параметр можно добавить под параметрами подключения к базе данных или в любом другом месте файла:

    . . .
    
    define('DB_NAME', 'wordpress');
    
    /** MySQL database username */
    define('DB_USER', 'wordpressuser');
    
    /** MySQL database password */
    define('DB_PASSWORD', 'password');
    
    . . .
    
    define('FS_METHOD', 'direct');
    

    Сохраните и закройте файл, когда закончите.

    Шаг 6 — Завершение установки через веб-интерфейс

    Теперь, когда настройка сервера завершена, мы можем завершить установку через веб-интерфейс.

    В веб-браузере перейдите к доменному имени вашего сервера или общедоступному IP-адресу:

    http://server_domain_or_IP
    

    Выберите язык, который вы хотите использовать:

    Далее вы попадете на главную страницу настройки.

    Выберите имя для своего сайта WordPress и выберите имя пользователя (рекомендуется не выбирать что-то вроде «admin» в целях безопасности). Надежный пароль будет сгенерирован автоматически. Сохраните этот пароль или выберите другой надежный пароль.

    Введите свой адрес электронной почты и выберите, хотите ли вы запретить поисковым системам индексировать ваш сайт:

    Когда вы нажмете вперед, вы попадете на страницу, которая предложит вам войти в систему:

    Как только вы войдете в систему, вы попадете в панель администрирования WordPress:

    Заключение

    WordPress должен быть установлен и готов к использованию! Некоторые распространенные следующие шаги – это выбор настроек постоянных ссылок для ваших сообщений (это можно найти в разделе Настройки > Постоянные ссылки) или выбор новой темы (в разделе Внешний вид > Темы). Если вы впервые используете WordPress, немного изучите интерфейс, чтобы познакомиться с вашей новой CMS.