Июн 232014
 

Давненько я не брал в руки…

Итак, создаём новый мультисайт на wordpress. Набросаем план:

  • Домен
  • Почта
  • Регистрация на wordpress Для статистики jetpack
  • Регистрация для плагина akismet
  • Подготовка Unix пользователей и каталогов
  • Подготовка виртуального сервера для apache
  • Установка WordPress
  • Better WP Security
  • Включение режима мультисайта
  • Плагины

Начинается всё с DNS.

Домен

Ну, с регистрацией, надеюсь, всё понятно.  🙂 Для дальнейшего домен будет идти в тексте как <домен>

Теперь свойства зоны. Чтобы можно было обращаться и по http://<домен> и по http://www.<домен>

Создаём записи

@  	A  	IP_адрес_сервера
www  	A  	IP_адрес_сервера

Почта

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

  • приниматься почта для <домен>
  • адрес admin@<домен> – это для apache
  • адрес <что-то>@<домен> – для регистрации на wordpress
  • адрес <что-то_ещё>@<домен> – для регистрации на akismet

Регистрируемся на wordpress

Сама регистрация. Мне потребовалось создать новый почтовый алиас. Зачем светить основной почтовый ящик? Если в регистрации отпадёт нужда, алиас можно и убить. Пароль присылается на почту. В принципе, зарегистрироваться можно напрямую при настройке jetpack, так что этот шаг не обязателен. Обновлено 17.12.2014 – от jetpack я отказался.

Akismet

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

Unix пользователи и каталоги

Я хочу сделать мультисайт с работой каждого автора от имени отдельного пользователя операционной системы. Всё дано для Debian. Сначала нужна группа, чтобы все сайты могли работать с общими данными.

groupadd -g <Числовой_ идентификатор_основной_группы> <имя_основной_группы>

Теперь – основной пользователь. Обращаю внимание, что shell я выставляю в false и пользователь обычным логином не зайдёт в систему.

useradd -c "Комментарий" -d /home/<имя> -m -g <Числовой_ идентификатор_основной_группы> -p 'Пароль' \
 -s /bin/false -u <Числовой_ идентификатор_основного_пользователя> <имя_основного_пользователя>

Сделаем структуру каталогов.

mkdir <корневой_каталог_сайта>
chown <имя_основного_пользователя>:<имя_основной_группы> <корневой_каталог_сайта>
chmod 750 <корневой_каталог_сайта>
mkdir /var/log/apache2/<каталог_логов>/
chown root:adm /var/log/apache2/<каталог_логов>/
chmod 750 /var/log/apache2/<каталог_логов>/

Виртуальный сервер для apache

Конфигурация проста, для модуля itk можно воспользоваться командой установки пользователя/группы в виде AssignUserId <пользователь> <группа> , но, я хочу оставить себе возможность выделять отдельные части сайта и запускать их от имени других пользователей.

<VirtualHost *:80>
DocumentRoot <корневой_каталог_сайта>
CustomLog /var/log/apache2/<каталог_логов>/access.log combined
ErrorLog /var/log/apache2/<каталог_логов>/error.log

RewriteEngine on
ProxyRequests Off

<IfModule mpm_itk_module>
RewriteRule / - [E=ITKID:<имя_основного_пользователя>]
AssignUserIDExpr %{reqenv:ITKID}
AssignGroupIDExpr %{reqenv:ITKID}
</IfModule>

ServerName www.<домен>
ServerAlias <домен>
ServerAdmin admin@<домен>

<Location />
Require all granted
</Location>

<Directory <корневой_каталог_сайта>>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Не забыть сделать a2ensite (включить виртуальный хост), apachectl configtest (проверить конфигурацию) и apachectl graceful (аккуратненько перезапустить без обрыва сессий).

Установка WordPress

Ну что же, начинаем установку основной части. Ориентируемся на инструкцию.

  • Скачиваем последнюю версию – http://ru.wordpress.org/latest-ru_RU.zip
  • Распаковываем в нужный нам каталог
  • Выставляем имя пользователя и группу для всех файлов. Примерно так: chown -R <имя_основного_пользователя>:<имя_основной_группы> <корневой_каталог_сайта>
  • Создаём базу данных. Примерно так:
create database `<имя_sql_базы>` character set utf8;
use mysql;
GRANT ALL PRIVILEGES ON `<имя_sql_базы>`.* to `<имя_пользователя_sql_сервера>`@localhost \
IDENTIFIED BY 'Пароль_какой-то_желательно_сложный';
FLUSH PRIVILEGES;
  •  Заполняем файл конфига по инструкции и запускаем установку. Там всё совсем-совсем просто.
  • Не забываем выставить для таблиц префикс, отличный от стандартного и сгенерировать “соли”.

А, собственно, с установкой – всё.

iThemes Security (formerly Better WP Security)

Теперь ставим iThemes Security (formerly Better WP Security), читаем памятку и включаем мультисайт (на английском).

Плагины

  • iThemes Security – стоит, его надо только включить и настроить.
  • Polylang – сразу после установки почему-то съезжает язык. Всё становится на англицком. Надо зайти в настройки основного сайта. Именно сайта, а не сети. И добавить русский язык.
  • Cyr to Lat enhanced
  • Jetpack – ставим, активируем и выключаем всё. 🙂  Кроме статистик. Потом будем подключать каждую из требуемых возможностей. Обновлено 17.12.2014 – от jetpack я отказался.
  • akismet – для версии 3.9.1 этот плагин уже идёт в поставке. Его надо включить и, для нужного сайта, прописать ключик.
  • TinyMCE Advanced – нравится мне этот редактор, ну что поделать…
  • MaxSite Russian Date – брать пот по этой ссылке. Это чтобы писалось “25 января 2000”, а не “25 Январь 2000”.

На этот момент можно считать, что дело сделано. Теперь долго и нудно надо всё настраивать.