Установка WordPress на уровне профи

Дата публикации:Октябрь 14, 2014

Установка WordPress – это то, что вы изучаете в самом начале и впоследствии об этом больше не вспоминаете, поскольку это перерастает в привычку.

Полная профессиональная установка и настройка может потребовать гораздо больше времени, нежели популярные пять минут (пятиминутная установка – основная фишка WordPress)!

Начиная с защиты .htaccess и заканчивая автоматическим развертыванием, я покажу вам все те удивительные методики, которые вы можете использовать для создания среды WordPress, пригодной для профессионалов.

construction

Установка WordPress

Давайте посмотрим на разные способы, которыми вы можете установить WordPress.

5-минутная установка

Популярная 5-минутная установка существовала всегда. Она включает в себя следующее:

  • Загрузку WordPress zip-архива
  • Извлечение архива
  • Создание таблиц базы данных
  • Создание конфигурационного файла
  • Запуск процесса установки

Дополнительную информацию по поводу этого процесса вы можете найти на странице кодекса «Установка WordPress». В этом методе нет ничего неправильного, однако в некоторых ситуациях он может оказаться неудобным.

К примеру: не все хостинги имеют GUI-инструменты, позволяющие разархивировать файлы на сервере. В таком случае вам понадобится использовать SSH-доступ, ибо разархивация не может быть сделана с помощью FTP-клиента. Другой вариант состоит в том, чтобы залить разархивированные файлы, что может стать очень долгим процессом. Я думаю, мы можем сделать это гораздо лучше.

Установка через терминал

Если вы сидите на Linux или Mac, то в таком случае вы сможете сделать все вышеупомянутое с помощью терминала. Для Windows существует PuTTY.

Первый шаг – получение всех WordPress файлов. Код ниже кажется несколько длинным, но, кроме первых двух строк, вам ничего в нем настраивать не понадобится. Просто скопируйте и вставьте его, и вы получите все ваши файлы в течение нескольких секунд.

ssh username@server.com
cd /path/to/installation/directory
wget http://wordpress.org/latest.zip
unzip latest.zip
mv wordpress/* ./
rmdir wordpress
rm latest.zip

Как только мы подключимся через SSH к нашему серверу и изменим директории, мы используем команду wget для загрузки последней версии WordPress; затем мы разархивируем ее. Так как все файлы будут помещены в поддиректорию wordpress, нам нужно будет переместить их в родительскую директорию. Затем мы удаляем нежелательную поддиректорию и оригинальный zip-файл.

На данном этапе мы можем установить базу данных в cPanel и отредактировать конфигурационный файл, используя FTP-редактор, однако давайте посмотрим на то, как это сделать через терминал. Давайте для начала обратимся к нашей базе данных:

mysql -u username -p

Если вы введете эту строку (заменив username на ваше актуальное имя пользователя), у вас запросят пароль, после чего вы будете перенесены в консоль MySQL. Здесь вы можете создать базу данных с помощью следующей SQL-команды:

create database mywordpressdb;

Заключительный этап – создание конфигурационного файла. Вы можете сделать это, скопировав или переместив sample-файл и отредактировав его с помощью vim. Мне нравится перемещать файл, поскольку мы таким путем избавляемся от sample-файла — нам не нужно его хранить:

mv wp-config-sample.php wp-config.php
vi wp-config.php

Если вы не знакомы с VIM, я советую вам изучить основы. Понимание основного минимума, связанного с перемещением и редактированием файлов, позволяет прекрасно сэкономить время при работе с удаленным сервером; однако сам я пользуюсь им не так часто. Ввод происходит очень просто: щелкаете кнопку i для перехода в режим вставки. Навигация осуществляется при помощи стрелок. Отредактируйте файл при необходимости. Когда редактирование будет завершено, нажмите Esc, введите :wq и нажмите enter; это приведет к сохранению и выходу.

Готово. Несмотря на длинное описание, в реальности установить все можно быстрее, чем за 5 минут.

WP-CLI

WP-CLI всплывает во многих учебных руководствах, поскольку может использоваться с самыми разными целями. WP-CLI – это командная строка, которая позволяет вам взаимодействовать с вашей средой WordPress. Она включает в себя массу полезных инструментов, начиная с создания 100 пользователей при помощи одной строки кода и заканчивая командами для установки и обновления WordPress.

Инструкции по установке WP-CLI не такие сложные – для этого достаточно будет выполнить парочку терминальных команд. После установки вы сможете запускать команды. Подключаемся по SSH к своему серверу и переходим к папке установки.

wp core download
wp core config --dbname=yourdb --dbuser=yourdbuser --dbpass=yourdbpass --dbhost=youdbhost --dbprefix=yourdbprefix
wp db create
wp core install --url=yoursiteurl --title=sitetitle --admin_user=username --admin_password=password --admin_email=youremail

Это все, что требуется сделать. Теперь у вас имеется полностью установленный и настроенный WordPress-сайт. WP-CLI – это мой предпочтительный инструмент, я буду использовать его для установки плагинов и проведения некоторых модификаций далее в этой статье.

Настройка

Есть много всяких вещей, которые вы можете выполнить еще до установки и в процессе установки, чтобы сделать свой сайт более защищенным и более производительным. Ниже мы рассмотрим некоторые из них – список можно продолжать долго.

Будьте непредсказуемы

Непредсказуемость – отличный способ обойти многие проблемы безопасности. Не оставляйте стандартный префикс базы данных как «wp_», не используйте имя пользователя admin и т.д. И вот почему: на многих сайтах используется имя пользователя admin, поэтому хакеры уже имеют в своих руках первую часть ключика к доступу на ваш сайт. А что еще хуже, это аккаунт администратора, то есть обладающий всеми полномочиями!

Так как у хакеров нет прямого доступа к вашему сайту, они не знают, какие имена пользователей у вас имеются, какой префикс базы данных вы используете и т.д. Все, что они могут – это просто надеяться, что вы используете стандартные значения. Вот список вещей, которые я изменяю, чтобы сделать свои сайты более безопасными:

  • Мой префикс базы данных обычно представляет собой мини-пароль. Вместо wp_ я обычно использую что-то, напоминающее «Hjd9_3jdpq3GQ4_».
  • Я использую отдельного пользователя-администратора, который применяется мной только для выполнения задач администрирования. В других ситуациях я использую аккаунты редактора или автора.
  • Мой администраторский пользователь представляет собой нестандартное имя. Необязательно делать его очень сложным, для этого вполне подойдет даже danieladmin.
  • Естественно, ни один из моих паролей на сайтах не является «1234». Сложные пароли – ваша лучшая защита, используйте как минимум 8 символов, среди которых есть прописные буквы, строчные буквы, число и символ.

Файрвол для .htaccess

Это самый первый оборонительный рубеж, который я добавляю ко всем своим сайтам. Код, который я использую, был разработан Джеффом Старом – называется он G6 Firewall. Эта версия в настоящее время находится в бета-режиме, она является преемником 5G Firewall.

Все, что вы должны сделать – это вставить контент файрвола в файл .htaccess в корневой директории:

# 6G BLACKLIST/FIREWALL (beta)
# @ http://perishablepress.com/6g-beta/

# 6G:[REQUEST STRINGS]
<ifModule mod_alias.c>
 RedirectMatch 403 /(\$|\*)/?$
 RedirectMatch 403 (?i)(<|>|:|;|\'|\s)
 RedirectMatch 403 (?i)([a-zA-Z0-9]{18})
 RedirectMatch 403 (?i)(https?|ftp|php)\:/
 RedirectMatch 403 (?i)(\"|\.|\_|\&|\&amp)$
 RedirectMatch 403 (?i)(\=\\\'|\=\\%27|/\\\'/?)\.
 RedirectMatch 403 (?i)/(author\-panel|submit\-articles)/?$
 RedirectMatch 403 (?i)/(([0-9]{5})|([0-9]{6}))\-([0-9]{10})\.(gif|jpg|png)
 RedirectMatch 403 (?i)(\,|//|\)\+|/\,/|\{0\}|\(/\(|\.\.|\+\+\+|\||\\\"\\\")
 RedirectMatch 403 (?i)/uploads/([0-9]+)/([0-9]+)/(cache|cached|wp-opt|wp-supercache)\.php
 RedirectMatch 403 (?i)\.(asp|bash|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf|well)
 RedirectMatch 403 (?i)/(^$|1|addlink|btn_hover|contact?|dkscsearch|dompdf|easyboard|ezooms|formvars|fotter|fpw|i|imagemanager|index1|install|iprober|legacy\-comments|join|js\-scraper|mapcms|mobiquo|phpinfo|phpspy|pingserver|playing|postgres|product|register|scraper|shell|signup|single\-default|t|sqlpatch|test|textboxes.css|thumb|timthumb|topper|tz|ucp_profile|visit|webring.docs|webshell|wp\-lenks|wp\-links|wp\-plugin|wp\-signup|wpcima|zboard|zzr)\.php
 RedirectMatch 403 (?i)/(\=|\$\&|\_mm|administrator|auth|bytest|cachedyou|cgi\-|cvs|config\.|crossdomain\.xml|dbscripts|e107|etc/passwd|function\.array\-rand|function\.parse\-url|livecalendar|localhost|makefile|muieblackcat|release\-notes|rnd|sitecore|tapatalk|wwwroot)
 RedirectMatch 403 (?i)(\$\(this\)\.attr|\&pws\=0|\&t\=|\&title\=|\%7BshopURL\%7Dimages|\_vti\_|\(null\)|$itemURL|ask/data/ask|com\_crop|document\)\.ready\(fu|echo.*kae|eval\(|fckeditor\.htm|function.parse|function\(\)|gifamp|hilton.ch|index.php\&amp\;quot|jfbswww|monstermmorpg|msnbot\.htm|netdefender/hui|phpMyAdmin/config|proc/self|skin/zero_vote|/spaw2?|text/javascript|this.options)
</ifModule>

# 6G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} !^/$ [NC]
 RewriteCond %{QUERY_STRING} (mod|path|tag)= [NC,OR]
 RewriteCond %{QUERY_STRING} ([a-zA-Z0-9]{32}) [NC,OR]
 RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
 RewriteCond %{QUERY_STRING} (\?|\.\./|\*|:|;|<|>|'|"|\)|\[|\]|=\\\'$|%0A|%0D|%22|%27|%3C|%3E|%00|%2e%2e) [NC,OR]
 RewriteCond %{QUERY_STRING} (benchmark|boot.ini|cast|declare|drop|echo.*kae|environ|etc/passwd|execute|input_file|insert|md5|mosconfig|scanner|select|set|union|update) [NC]
 RewriteRule .* - [F,L]
</IfModule>

# 6G:[USER AGENTS]
<ifModule mod_setenvif.c>
 #SetEnvIfNoCase User-Agent ^$ keep_out
 SetEnvIfNoCase User-Agent (<|>|'|<|%0A|%0D|%27|%3C|%3E|%00|href\s) keep_out
 SetEnvIfNoCase User-Agent (archiver|binlar|casper|checkprivacy|clshttp|cmsworldmap|comodo|curl|diavol|dotbot|email|extract|feedfinder|flicky|grab|harvest|httrack|ia_archiver|jakarta|kmccrew|libwww|loader|miner|nikto|nutch|planetwork|purebot|pycurl|python|scan|skygrid|sucker|turnit|vikspider|wget|winhttp|youda|zmeu|zune) keep_out
 <limit GET POST PUT>
  Order Allow,Deny
  Allow from all
  Deny from env=keep_out
 </limit>
</ifModule>

# 6G:[REFERRERS]
<IfModule mod_rewrite.c>
 RewriteCond %{HTTP_REFERER} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
 RewriteCond %{HTTP_REFERER} ([a-zA-Z0-9]{32}) [NC]
 RewriteRule .* - [F,L]
</IfModule>

# 6G:[BAD IPS]
<Limit GET POST PUT>
 Order Allow,Deny
 Allow from all
 # uncomment/edit/repeat next line to block IPs
 # Deny from 123.456.789
</Limit>

Есть одна крошечная модификация, которую я сделал здесь – я удалил условие перезаписи, поскольку оно мешало загружать скрипты и стили. Учтите, что вам, возможно, понадобиться немного настроить этот код, чтобы он работал во всех ситуациях.

Если вы посетите страницу в панели администратора или обновите плагин и получите 403 или похожую ошибку там, где ее не должно быть, это означает, что ваш файрвол блокирует что-то лишнее. Выявить и устранить проблемы не так сложно.

Продолжайте удалять строки из ваших правил в .htaccess, пока все не станет нормально работать. В итоге вы найдете строку, которая приводила к проблемам. Вы можете удалить строку целиком или изменить ее, чтобы убедиться в том, что она не отлавливает вполне себе законные действия.

Со мной такое случалось всего пару раз, и в моем опыте плюсы этого файрвола сильно перевешивали.

Дополнительные опции конфигурации WordPress

Файл wp-config.php может содержать в себе гораздо больше, чем кажется поначалу. Посмотрите в кодекс, чтобы увидеть цельную картину. Я отмечу некоторые дополнения, которые я внес в свой конфигурационный файл.

define( 'AUTOSAVE_INTERVAL', 300 );
define( 'WP_POST_REVISIONS', false );
define( 'EMPTY_TRASH_DAYS', 7 );
define( 'DISALLOW_FILE_EDIT', true );
define( 'FORCE_SSL_ADMIN', true );

Как вы можете видеть, я увеличил интервал автоматического сохранения до 160 секунд вместо 60. Мне реально не нужно сохранять все каждую минуту. Я также отключил ревизии записей, поскольку я не использую их. Я задал очистку корзины каждые 7 дней вместо 30. Определение DISALLOW_FILE_EDIT позволяет полностью отключить возможности редактирования плагинов/тем в панели администратора. Я также подключаю SSL-вход для администраторов, который может оказаться более медленным, но дополнительная защита стоит того.

В самом конце статьи я покажу вам, как добавить эти определения к вашему конфигурационному файлу автоматически через WP-CLI.

Amazon S3 And Cloudfront

amazonwithcludfront
Я использую этот плагин практически во всех моих проектах, поскольку он копирует все медиа-элементы в Amazon S3 и выдает их оттуда. Это позволяет достичь двух результатов:

  • Скорость загрузки будет быстрее, особенно если вы также используете Cloudfront CDN
  • Поскольку медиа-файлы передаются с внешнего источника, перенос сайта заметно облегчается; я могу использовать те же самые медиа-данные на локальном тестовом сайте, не скачивая ни одного файла.

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

Akismet

akismet
Akismet великолепно справляется со спамом, который приходит в комментариях. Вся обработка вынесена с вашего сервера – вы просто получаете совершенный опыт Akismet.

Установка плагина требует ввода Akismet API-ключа, который вы можете получить бесплатно. Если вы используете Akismet для бизнес-целей, обязательно поддержите разработчиков плагина той суммой, которую вы можете скинуть. Ведь они провели прекрасную работу!

W3 Total Cache

w3totalcache
W3 Total Cache – решение для кэширования, которое позволяет значительно увеличить скорость загрузки вашего сайта. Плагин наполнен кучей разных опций, которые вы можете изменять, чтобы кэширование точно соответствовало вашим целям.

Многие люди также используют популярный альтернативный плагин, который называется WP Super Cache. По моему мнению, W3 Total Cache чуточку более современный, однако оба они – прекрасные плагины.

Jetpack

jetpack
Jetpack – огромный плагин, который предлагает массу возможностей. Вы можете выборочно включать и выключать их. Начиная от контактных форм и заканчивая возможностями шаринга, от бесконечной прокрутки и до связанных записей – вы всегда найдете то, что вам требуется.

Честно говоря, Jetpack я ставлю далеко не всегда. База кода плагина заметно шире, чем код WordPress, и в ней действительно есть много всего лишнего.

Однако Jetpack был создан разработчиками WordPress, и потому вы можете быть уверены, что он не замедлит ваш сайт, особенно учитывая то, что все лишнее вы можете деактивировать.

VaultPress

vaultpress
VaultPress – очень важный плагин, настоящий маст хэв для меня. Несмотря на то, что это платный сервис, он отличается значительной полезностью. Я плачу всего 5 долларов в месяц за полные ежедневные бэкапы с 30-дневным архивом.

Ценность VaultPress состоит в том, что его можно просто поставить и забыть, учитывая его простую установку. Поскольку я всегда использую Amazon S3 для хранения медиаданных, бэкап оставшихся частей моего сайта не составит никаких проблем.

VaultPress отлично справляется с поставленными задачами. Если что-то пойдет не так, достаточно будет всего лишь совершить один клик для отката.

Google XML Sitemaps

google-xml-sitemaps-800x258
Карты сайта нужны для поисковых систем, они содержат в себе структуру сайта. Google XML sitemaps помогает создать полностью совместимую с Google карту сайта, которая упрощает индексирование и отображение вашего ресурса.

Limit Login Attempts

limit-login-attempts1
Прекрасный плагин, который дает вам дополнительный уровень безопасности, реализуемый при помощи ограничения числа попыток входа в систему. Возможностей у плагина не так много, но он справляется со своей задачей прекрасно.

All In One SEO Pack

allinoneseo
SEO – важная часть создания своего веб-представительства. Плагины, такие как All In One SEO Pack, позволяют вам управлять оптимизацией вашего сайта – вы можете задавать мета-атрибуты, вводить ключевые слова и т.д.

WordPress SEO by Yoast – также хорошая альтернатива.

iThemes Security

ithemessecurity
iThemes Security (ранее известный как Better WP Security) – прекрасный плагин для добавления дополнительного уровня безопасности к вашему сайту. Он может делать самые разные вещи – к примеру, изменять URL вашей панели администратора, отслеживать изменения в файлах, сканировать на уязвимости и т.д.

Установка плагинов

Вы можете установить эти плагины в панели администратора, но это слишком долго по времени. Помимо того, что вам нужно будет ждать, пока каждый плагин завершит свою установку, вам еще понадобится искать каждый плагин и переходить на отдельные страницы для каждого процесса установки. WP-CLI заметно все упрощает, ведь установку этих плагинов можно провести в одну строку:

wp plugin install amazon-s3-and-cloudfront akismet w3-total-cache jetpack vaultpress google-sitemap-generator limit-login-attempts

Объединяем все вместе

Давайте посмотрим на то, как вы можете все это автоматизировать, используя bash скрипт. Bash скрипт будет использовать WP-CLI для установки WordPress (плагинов и всего остального), он даже создаст за нас .htaccess. Давайте создадим файл install.sh в необходимой папке и добавим к нему следующий контент:

#!/bin/bash
# Setup Variables

DBNAME=mydatabase
DBUSER=databaseuser
DBPASS=dnpass
DBHOST=localhost
DBPREFIX=C8v8D2_eomGf_

URL=http://urlofsite.com
TITLE=SiteTitle
ADMINUSER=danielpataki
ADMINPASS=mypassword
ADMINEMAIL=myeamil@myemail.com

REPOPLUGINS=&amp;quot;amazon-s3-and-cloudfront w3-total-cache jetpack vaultpress google-sitemap-generator limit-login-attempts&amp;quot;

# Create Htaccess File With Firewall

cat > .htaccess << "EOF"
<ifModule mod_alias.c>
 RedirectMatch 403 /(\$|\*)/?$
 RedirectMatch 403 (?i)(<|>|:|;|\'|\s)
 RedirectMatch 403 (?i)([a-zA-Z0-9]{18})
 RedirectMatch 403 (?i)(https?|ftp|php)\:/
 RedirectMatch 403 (?i)(\"|\.|\_|\&|\&amp)$
 RedirectMatch 403 (?i)(\=\\\'|\=\\%27|/\\\'/?)\.
 RedirectMatch 403 (?i)/(author\-panel|submit\-articles)/?$
 RedirectMatch 403 (?i)/(([0-9]{5})|([0-9]{6}))\-([0-9]{10})\.(gif|jpg|png)
 RedirectMatch 403 (?i)(\,|//|\)\+|/\,/|\{0\}|\(/\(|\.\.|\+\+\+|\||\\\"\\\")
 RedirectMatch 403 (?i)/uploads/([0-9]+)/([0-9]+)/(cache|cached|wp-opt|wp-supercache)\.php
 RedirectMatch 403 (?i)\.(asp|bash|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf|well)
 RedirectMatch 403 (?i)/(^$|1|addlink|btn_hover|contact?|dkscsearch|dompdf|easyboard|ezooms|formvars|fotter|fpw|i|imagemanager|index1|install|iprober|legacy\-comments|join|js\-scraper|mapcms|mobiquo|phpinfo|phpspy|pingserver|playing|postgres|product|register|scraper|shell|signup|single\-default|t|sqlpatch|test|textboxes.css|thumb|timthumb|topper|tz|ucp_profile|visit|webring.docs|webshell|wp\-lenks|wp\-links|wp\-plugin|wp\-signup|wpcima|zboard|zzr)\.php
 RedirectMatch 403 (?i)/(\=|\$\&|\_mm|administrator|auth|bytest|cachedyou|cgi\-|cvs|config\.|crossdomain\.xml|dbscripts|e107|etc/passwd|function\.array\-rand|function\.parse\-url|livecalendar|localhost|makefile|muieblackcat|release\-notes|rnd|sitecore|tapatalk|wwwroot)
 RedirectMatch 403 (?i)(\$\(this\)\.attr|\&pws\=0|\&t\=|\&title\=|\%7BshopURL\%7Dimages|\_vti\_|\(null\)|$itemURL|ask/data/ask|com\_crop|document\)\.ready\(fu|echo.*kae|eval\(|fckeditor\.htm|function.parse|function\(\)|gifamp|hilton.ch|index.php\&amp\;quot|jfbswww|monstermmorpg|msnbot\.htm|netdefender/hui|phpMyAdmin/config|proc/self|skin/zero_vote|/spaw2?|text/javascript|this.options)
</ifModule>

# 6G:[QUERY STRINGS]
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} !^/$ [NC]
 RewriteCond %{QUERY_STRING} (mod|path|tag)= [NC,OR]
 RewriteCond %{QUERY_STRING} ([a-zA-Z0-9]{32}) [NC,OR]
 RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
 RewriteCond %{QUERY_STRING} (\?|\.\./|\*|:|;|<|>|'|"|\)|\[|\]|=\\\'$|%0A|%0D|%22|%27|%3C|%3E|%00|%2e%2e) [NC,OR]
 RewriteCond %{QUERY_STRING} (benchmark|boot.ini|cast|declare|drop|echo.*kae|environ|etc/passwd|execute|input_file|insert|md5|mosconfig|scanner|select|set|union|update) [NC]
 RewriteRule .* - [F,L]
</IfModule>

# 6G:[USER AGENTS]
<ifModule mod_setenvif.c>
 #SetEnvIfNoCase User-Agent ^$ keep_out
 SetEnvIfNoCase User-Agent (<|>|'|<|%0A|%0D|%27|%3C|%3E|%00|href\s) keep_out
 SetEnvIfNoCase User-Agent (archiver|binlar|casper|checkprivacy|clshttp|cmsworldmap|comodo|curl|diavol|dotbot|email|extract|feedfinder|flicky|grab|harvest|httrack|ia_archiver|jakarta|kmccrew|libwww|loader|miner|nikto|nutch|planetwork|purebot|pycurl|python|scan|skygrid|sucker|turnit|vikspider|wget|winhttp|youda|zmeu|zune) keep_out
 <limit GET POST PUT>
  Order Allow,Deny
  Allow from all
  Deny from env=keep_out
 </limit>
</ifModule>

# 6G:[REFERRERS]
<IfModule mod_rewrite.c>
 RewriteCond %{HTTP_REFERER} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
 RewriteCond %{HTTP_REFERER} ([a-zA-Z0-9]{32}) [NC]
 RewriteRule .* - [F,L]
</IfModule>

# 6G:[BAD IPS]
<Limit GET POST PUT>
 Order Allow,Deny
 Allow from all
 # uncomment/edit/repeat next line to block IPs
 # Deny from 123.456.789
</Limit>

# Install WordPress
wp core download;
wp core config --dbname=${DBNAME} --dbuser=${DBUSER} --dbpass=${DBPASS} --dbhost=${DBHOST} --dbprefix=${DBPREFIX} --extra-php &amp;lt;&amp;lt;PHP
define( 'AUTOSAVE_INTERVAL', 300 );
define( 'WP_POST_REVISIONS', false );
define( 'EMPTY_TRASH_DAYS', 7 );
define( 'DISALLOW_FILE_EDIT', true );
define( 'FORCE_SSL_ADMIN', true );
define( 'AWS_ACCESS_KEY_ID', 'MYAWSKEY' );
define( 'AWS_SECRET_ACCESS_KEY', 'MYAWSSECRET' );
PHP
wp db create
wp core install --url=${URL} --title=${TITLE} --admin_user=${ADMINUSER} --admin_password=${ADMINPASS} --admin_email=${ADMINEMAIL}

# Install Repo Plugins
wp plugin install ${REPOPLUGINS} --activate

# Misc Cleanup
wp post delete 1
wp plugin delete hello-dolly
wp rewrite structure "/%year%/%monthnum%/%day%/%postname%/"
wp rewrite flush

Несколько многословно, но вы можете ничего в этом не менять, просто поправив переменные в самом начале кода. Давайте разберем его.

Сначала мы определяем переменные, которые будут использоваться всюду в скрипте. Затем мы создаем файл .htaccess и добавляем к нему код файрвола.

На следующем шаге мы должны установить WordPress. Мы скачиваем файлы и создаем конфигурационный файл, основанный на определенных нами переменных. Обратите внимание, что я добавил также дополнительный код к конфигурационному файлу. Я определил константы, о которых мы уже говорили выше, а также добавил мой Amazon-ключ и секретный ключ, который используется плагином Amazon S3. Создается база данных и запускается процедура установки.

На следующем этапе устанавливаются все плагины, которые были отмечены мной выше. Я храню список плагинов в переменной, поскольку иногда я добавляю и удаляю некоторые плагины. Обратите внимание, что Akismet отсутствует в списке, поскольку он и так идет в наборе с WordPress.

Наконец, я удаляю пост Hello World, плагин Hello Dolly, меняю структуру ссылок на формат год/месяц/день и обновляю правила перезаписи.

Как только наш скрипт будет готов, он может быть запущен путем выполнения следующей команды:

bash install.sh

Заключение

Как вы могли видеть выше, мы можем загрузить, сконфигурировать, установить, защитить и оптимизировать WordPress при помощи одной простой команды в терминале.

Вам, возможно, понадобится настроить некоторые свои сайты, однако данный 30-секундный метод все равно не идет ни в какое сравнение с 30-минутным.

Как обычно, обязательно измените некоторые данные в примерах под себя! Можете ли вы указать другие обязательные плагины? Есть ли у вас другой, более быстрый способ установки WordPress? Делимся своими мыслями в комментариях.

Источник: premium.wpmudev.org/blog

Поделиться

3 комментария

  1. Дуо says:

    Не так давно обнаружил для себя еще один мастхэв плагин — Preserved HTML Editor Markup Plus. Как-же задрало это автоформатирование в WP :)

  2. VladGT says:

    Спасибо огромное, очень интересная статья. Заменил у себя несколько плагинов, да поставил новые)

  3. Спасибо за статью. Для безопасности практически делаю тоже самое. Плагины немного другие у меня прижились Acunetix WordPress Security, Antivirus, WP Backup. Бэкап на почту еженедельно присылается. Единственное что ещё пока не сделано — это кэш. Не нравится, как плагины с ним работают. W3 Total Cache ещё не пробовал, значит буду его тестировать.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.