We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more →

Как установить WordPress с использованием LAMP в Ubuntu 16.04

PostedApril 6, 2017 38.6k views WordPress Apache LAMP Stack Ubuntu Ubuntu 16.04

Введение

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

В этой статье мы рассмотрим процесс установки WordPress на стек LAMP (Linux, Apache, MySQL и PHP) на сервер с Ubuntu 16.04.

Перед установкой

Перед тем, как начать следовать описанным в этой статье шагам, убедитесь, что у вас есть сервер с Ubuntu 16.04.

Перед началом необходимо будет выполнить следующие шаги:

  • Создать sudo пользователя на сервере: Инструкции в этой статье предполагают наличие не-рутового (non-root) пользователя с привилегиями sudo. Узнать, как настроить такого пользователя на вашем сервере, можно из статьи о первичной настройке сервера на Ubuntu 16.04.

  • Установить стек LAMP: Для работы WordPress необходим веб-сервер, база данных и PHP. Настройка стека LAMP (Linux, Apache, MySQL и PHP) удовлетворяет всем этим требованиям. Следуйте инструкциям в этой статье для установки и настройки этого программного обеспечения.

  • Повышение безопасности сайта с помощью SSL: WordPress работает с динамическим контентом и обрабатывает аутентификацию и авторизацию пользователей. TLS/SSL - это технология, которая позволяет вам шифровать трафик вашего сайта для повышения безопасности работы с сайтом. Настройка SSL зависит от того, есть ли у вас доменное имя для сайта или нет.

  • Если у вас есть доменное имя, самым простым способом сделать ваш сайт безопаснее будет использование сервиса Let's Encrypt, который предоставляет бесплатный сертификаты. Для настройки сертификатов, следуйте инструкциям в статье по настройке Let's Encrypt для Apache.

  • Если у вас нет доменного имени и вы просто хотите потестировать описанную в этой статье конфигурацию, вы можете использовать самоподписанный сертификат. Он предоставляет такой же уровень шифрования, но без валидации домена. Для его настройки следуйте инструкциям в статье о настройке самоподписанного SSL сертификата для Apache.

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

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

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

Сначала зайдём в MySQL с использованием root-аккаунта (аккаунта администратора) следующей командой:

  • mysql -u root -p

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

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

  • CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

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

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

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

Теперь у вас есть база данных и пользователь для работы с WordPress. Нам осталось лишь применить изменения:

  • FLUSH PRIVILEGES;

Выйдите из MySQL командой:

  • EXIT;

Шаг 2: Установка расширений PHP

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

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

  • sudo apt-get update
  • sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

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

Далее перезапустим Apache для начала использования установленных плагинов. При установке дополнительных плагинов в будущем не забудьте перезапускать Apache.

  • sudo systemctl restart apache2

Шаг 3: Настройка конфигурации Apache для разрешения директив в .htaccess

Далее сделаем некоторые небольшие изменения в нашей конфигурации Apache. По умолчанию использование файлов .htaccess не разрешается веб-сервером. WordPress и многие его плагины используют файлы .htaccess для тонкой настройки поведения сервера.

Также мы включим mod_rewrite, который необходим для корректной работы постоянных ссылок (permalinks) WordPress.

Включение .htaccess Overrides

Для внесения первого изменения откройте конфигурационный файл Apache:

  • sudo nano /etc/apache2/apache2.conf

Для разрешения файлов .htaccess нам необходимо установить директиву AllowOverride внутри блока Directory, отвечающего за корневую директорию нашего сайта. Для этого добавьте в конец файла следующие строки:

/etc/apache2/apache2.conf
. . .

<Directory /var/www/html/>
    AllowOverride All
</Directory>

. . .

Сохраните и закройте файл.

Включения модуля Rewrite

Далее активируем модуль mod_rewrite для использования постоянных ссылок WordPress:

  • sudo a2enmod rewrite

Применение изменений

Перед тем, как мы применим внесённые изменения, убедимся, что мы не сделали синтаксических ошибок:

  • sudo apache2ctl configtest

Вывод должен выглядеть похожим образом:

Вывод
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Если вы хотите скрыть сообщение в первой строке, просто добавьте директиву ServerName в файл /etc/apache2/apache2.conf с указанием вашего домена или IP адреса сервера. Это сообщение никак не влияет на функциональность нашего сайта. Если в выводе вы видите Syntax OK, вы можете смело продолжать.

Перезапустите Apache для применения изменений:

  • sudo systemctl restart apache2

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

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

Загрузим архив WordPress следующими командами:

  • cd /tmp
  • curl -O https://wordpress.org/latest.tar.gz

Извлечём файлы из архива для создания структуры директорий WordPress:

  • tar xzvf latest.tar.gz

Перед тем, как переместить эти файлы в корневую директорию нашего сайта, добавим пустой файл .htaccess и установим права доступа к нему для дальнейшего использования в WordPress. Создайте файл и измените права доступа к нему командами:

  • touch /tmp/wordpress/.htaccess
  • chmod 660 /tmp/wordpress/.htaccess

Также создадим файл конфигурации WordPress путём копирования примера файла конфигурации:

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

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

  • mkdir /tmp/wordpress/wp-content/upgrade

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

  • sudo cp -a /tmp/wordpress/. /var/www/html

Шаг 5: Настройка директории WordPress

Перед началом настройки WordPress с использованием веб-интерфейса нам необходимо сделать некоторые изменения в самой директории WordPress.

Настройка прав доступа

Одной из важных задач на данном этапе является настройка разумных прав доступа и владельцев файлов. Мы должны иметь возможность писать в эти файлы используя профиль обычного пользователя. Кроме того, веб-сервер должен иметь возможность осуществлять доступ и изменять определённые файлы и директории для своей корректной работы.

Начнём с того, что установим владельцем всех наших файлов в корневой директории сайта нашего пользователя. В этой статье мы используем имя пользователя sammy, вам необходимо использовать имя вашего sudo-пользователя. В качестве группы вы будем использовать группу www-data:

  • sudo chown -R sammy:www-data /var/www/html

Далее настроим бит setgid для каждой из директорий в корневой директории. Благодаря этому все новые файлы, создаваемый в этих директориях, будут наследовать группу родительской директории (которую мы только что установили как www-data) вместо использования основной группы пользователя. Это необходимо для того, чтобы при создании любого файла в директории с помощью командной строки, веб-сервер имел доступ к этому файлу.

Для установки бита setgid для каждой директории в корневой директории нашего сайта на WordPress используем следующую команду:

  • sudo find /var/www/html -type d -exec chmod g+s {} \;

Теперь разрешим группе писать в директорию wp-content для того, чтобы веб-интерфейс мог вносить изменения в тему и плагины:

  • sudo chmod g+w /var/www/html/wp-content

Далее дадим веб-серверу права на запись в следующие директории:

  • sudo chmod -R g+w /var/www/html/wp-content/themes
  • sudo chmod -R g+w /var/www/html/wp-content/plugins

С этими настройками мы можем начать работу с WordPress. Некоторые плагины могут потребовать дополнительных настроек.

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

Теперь сделаем несколько изменения в основной файл конфигурации WordPress.

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

Для получения строк от WordPress используйте следующую команду:

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

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

Внимание: Важно получать уникальные строки при каждой новой установке WordPress. Не копируйте строки, приведённые ниже в качестве примера!

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

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

  • nano /var/www/html/wp-config.php

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

/var/www/html/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');

. . .

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

/var/www/html/wp-config.php
. . .

define('AUTH_KEY',         'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('SECURE_AUTH_KEY',  'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('LOGGED_IN_KEY',    'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('NONCE_KEY',        'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('AUTH_SALT',        'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('SECURE_AUTH_SALT', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('LOGGED_IN_SALT',   'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('NONCE_SALT',       'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');

. . .

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

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

Эти настройки можно добавить сразу после настроек соединения с базой данных или в любом другом месте файла:

/var/www/html/wp-config.php
. . .

define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressuser');

/** MySQL database password */
define('DB_PASSWORD', 'password');

. . .

define('FS_METHOD', 'direct');

Сохраните и закройте файл.

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

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

Введите доменное имя вашего или IP адрес вашего сервера в браузере.

http://доменное_имя_или_IP_адрес

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

Выбор языка при установке WordPress

Далее вам будет показана главная страница настроек.

Выберите имя для вашего сайта WordPress, а также имя пользователя (с точки зрения безопасности рекомендуется не выбирать имя "admin" или похожее). Далее автоматически будет создан сильный пароль для этого пользователя. Сохраните пароль или задайте другой сильный пароль.

Далее введите свой адрес электронной почты и укажите, хотите ли вы, чтобы поисковые системы не индексировали ваш сайт:

Настройка установки WordPress

При нажатии на кнопку Установить WordPress вам будет предложено залогиниться.

Завершение установки WordPress

После успешного входа в WordPress вы увидите админ-панель WordPress:

Админ-панель WordPress

Обновление WordPress

С текущими настройками вы не сможете обновлять WordPress при появлении обновлений.

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

При появлении обновлений WordPress зайдите на сервер используя вашего sudo пользователя. Далее временно дайте веб-серверу доступ на запись к содержимому всей корневой директории сайта:

  • sudo chown -R www-data /var/www/html

Далее перейдите в админ-панель WordPress и совершите обновление.

После завершения обновления измените права доступа на изначальные:

  • sudo chown -R sammy /var/www/html

Описанная процедура необходима только при обновлении самого WordPress (не его плагинов).

Заключение

Теперь WordPress установлен и готов к использованию! Далее вы можете, например, задать настройки постоянных ссылок на ваши посты (эти настройки можно найти в разделе Settings > Permalinks) или выбрать новую тему (в Appearance > Themes). Если вы используете WordPress в первый раз, ознакомьтесь в админ-панелью, чтобы лучше понять, как она работает.

Creative Commons License