1 августа 2011 г. PHP Wordpress FreeBSD

Wordpress. Обновление движка и плагинов через ssh

Допустим мы имеем блог http://example.org/ и надо обновлять переодически его плагины и сам движок Wordpress.
Беда в том, что поддерживается по дефолту только FTP, а у меня его нет, из возможных вариантов есть только SSH, его и будем внедрять!

Настройка

Отредактируем наш конфиг "wp-config.php":

$project_root = dirname(__file__);
/*
FS_METHOD forces the filesystem method. It should only be "direct", "ssh", "ftpext", or "ftpsockets".
Generally, You should only change this if you are experiencing update problems, If you change it, and
it doesnt help change it back/remove it, Under most circumstances, setting it to 'ftpsockets' will
work if the automatically chosen method does not. 
See: http://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants
*/
define('FS_METHOD', 'direct');
define('FTP_BASE', $project_root);
define('FTP_CONTENT_DIR', $project_root . '/wp-content/');
define('FTP_PLUGIN_DIR ', $project_root . '/wp-content/plugins/');
define('FTP_PUBKEY', '/home/example_user/.ssh/id_rsa.pub');
define('FTP_PRIKEY', '/home/example_user/.ssh/id_rsa');
define('FTP_USER', 'example_user');
// define('FTP_PASS', 'password');
define('FTP_HOST', '127.0.0.1:22');


Где "example_user" - имя пользователя из под которого и будет выполняться подключение.

Теперь надо сгенерировать ключи (вместо этого конечно можем использовать "password", но мне не нравится такое решение) и настроим наш .ssh:

ssh-keygen
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod -R 644 .
chmod 755 .

Проверяем соединение с сервера (т.е. сами себя):

ssh example_user@127.0.0.1 -p 22

Если не соединяется, то надо поправить "/etc/ssh/sshd_config" и расскоментировать или добавить:

ListenAddress 127.0.0.1

Если не установлено расширение ssh2 для PHP, то вы можете скачать его и поставить ручками http://pecl.php.net/package/ssh2, либо можно установить из портов, если у вас FreeBSD:

cd /usr/ports/security/pecl-ssh2
make install clean

Использование

Заходим в админку Wordpress, в раздел "Обновления Wordpress"->"Обновить автоматически" ("http://example.org/wp-admin/update-core.php?action=do-core-upgrade") и обновляем все что нам необходимо.

Если при обновлении у вас отваливается соединение (как было у меня), то увеличивайте таймауты для своего веб-сервера.
Если вы используете Nginx, то установите соответствующий proxy_read_timeout или fastcgi_read_timeout.

P.S. По мотивам http://kbeezie.com/view/wordpress-autoupdate-ssh/

Комментарии

Оставьте свой комментарий

Markdown