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