Давненько я не брал в руки…
Итак, создаём новый мультисайт на 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”.
 
На этот момент можно считать, что дело сделано. Теперь долго и нудно надо всё настраивать.