“Unable to create directory”(Plesk + WordPress) .

Почти два дня ушло на поиски решения. Уже сколько раз говорю себе, что первым делом подумаю,а потом буду гуглить, но…Гугление началось, как всегда, с текста ошибки, выдаваемой WordPress’ом: “Unable to create directory”.  Ошибка эта появлялась в следующих случаях: при попытке обновить WordPress(WP) через его Консоль, при попытке загрузить новые плагины, темы и изображения.

Все найденные решения мне не помогали, собственно, я еще до того, как прибегнула к поиску проверила права на папки, все разрешила, но это не помогло. Не помогли и всякие строчки, которые предлагалось прописать в wp-config, только с медиафайлами помог совет – убрать галочку с “Помещать загруженные мной файлы в папки по месяцу и году” и выставление прав 775 на папку wp-content/uploads.

И тут, о чудо, возникла мысль: а что это вообще за группы-то такие psaserv и psacln… В них-то и крылась вся проблема, вернее, не в них конкретно а в панели управления хостингом Plesk, которой и принадлежат эти группы.

При установке чего-либо,в данном случае WordPress(WP), с помощью панели управления хостингом Plesk, Plesk назначает группой папки httpdocs psaserv, в все файлы в этой папке относит к группе psacln. А у web-сервера дефолтный аккаунт apache, который не входит в группу psacln. Соответственно, раз пользователь  не входит в группу, которая имеет права на запись в соответствующую директорию, то он и не может ничего там создать и в связи с этим-то и невозможно ни обновить WP, ни загрузить новые плагины.

Таким образом, решение проблемы кроется всего лишь в добавлении аккаунта web-сервера(apache) в группу psacln:

1) Открываем для редактирования файл /etc/group

2) Ищем в нем строчку psacln:x:505: и добавляем в конец слово “apache”, таким образом строчка теперь выглядит так: psacln:x:505:apache

(Вместо 505 может быть указано любое другое число)

Собственно, если бы до выполнения этих действий, никто бы права не менял,как попало…ага…то осталось бы просто перезапусти web-сервер командой service httpd restart . В противном случае нужно выполнить еще несколько команд, чтобы выставить корректных владельцев на директории.

3) Переходим в каталог с сайтом: cd /var/www/vhosts/[domain.com]

chown -R [username]:psacln httpdocs

chmod -R g+w httpdocs

find httpdocs -type d -exec chmod g+s {} ;

4) Перезапускам web-сервер: service httpd restart

5) Ура! С чистой совестью идем пить чай с пирогом 🙂

Continue Reading

Несколько сайтов на одном сервере(httpd.conf).

Для того,чтобы разместить несколько сайтов на одном сервере нужно внести изменения в основной конфигурационный файл web-сервера, в случае с CentOS это файл httpd.conf.

Имеем: VPS, на котором установлена операционная система CentOS, панель управления хостингом Plesk, а также конфигурационный файл apache(httpd.conf), причем, изрядно так уже поправленный ,в связи с тем,что на этом же сервере установлена OpenCMS. Причем, установлена она, можно сказать, потом и кровью, так что уж очень не хотелось ничего испортить в процессе установки wordpress.

Открываем файл httpd.conf для редактирования. Лежит он обычно по пути /etc/httpd/conf .

В конце файла есть раздел “Section 3: Virtual Hosts”. В этой третьей секции и нужно добавить столько блоков

<VirtualHost *:80>
DocumentRoot /var/www/vhosts/example1.com/httpdocs     //путь к папке с сайтом
ServerName www.example1.com                                                 // доменное имя
ServerAlias example1.com
ErrorLog logs/example1.com-error_log
CustomLog logs/example1.com-access_log common
</VirtualHost>

сколько сайтов планируется разместить на одном сервере.

httpd.conf
Изменения в httpd.conf

Итак, на что стоит обратить внимание:

1) Строка  NameVirtualHost *:80 обязательно должна быть раскомментирована. (у меня изначально она была закомментирована, из-за чего, при рестарте апача выдавалось вот такое замечательное сообщение: “Starting httpd: [Mon Aug 13 19:29:17 2012] [warn] _default_ VirtualHost overlap on port 80, the first has precedence” и при обращении к любому из трех сайтов по доменному имени(в файле httpd.conf ServerName) взору представал  только тот сайт, который в файле httpd.conf был прописан первым)

2) Должна быть прописана строка ServerAlias example1.com, и, соответственно, для всех остальных виртуальных хостов также должен быть указан алиас(синоним).

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

После внесения всех изменений, необходимо сохранить файл httpd.conf и перезапустить apache командой service httpd restart.

 

Continue Reading