Статьи

20 шагов к гибкой и безопасной установке WordPress

Комплексная установка WordPress, хотя и проста в изготовлении, часто требует нескольких шагов, многие из которых могут быть случайно опущены. Сколько раз вы забыли настроить структуру постоянных ссылок? Как насчет добавления в плагин карты сайта? Как насчет изменения вашего часового пояса? Если вы установили WordPress более одного раза, скорее всего, вы что-то пропустили. Сделайте следующие шаги, и вы никогда больше ничего не пропустите.

Учебник теперь на Wptuts

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

Если вы загружаете WordPress из SVN, все, что вам нужно сделать, это запустить в командной строке следующее:

1
svn co http://core.svn.wordpress.org/tags/3.0 .

Может быть, вы хотите последнюю версию для разработчиков. Это еще проще:

1
svn co http://core.svn.wordpress.org/trunk/ .

Почему это так полезно? Для начала все, что нужно, это одна команда. Взгляд на WordPress в долгосрочной перспективе показывает, что SVN также предоставляет самый простой и простой способ обновления до новой стабильной версии (или даже перехода на более раннюю версию). Например, допустим, вы хотите обновить версию 3.0. Все, что вам нужно сделать, это запустить команду переключения SVN:

1
svn sw http://core.svn.wordpress.org/tags/3.0/ .

Насколько это было легко? Обратите внимание, что если вы используете версию разработчика, обновление еще проще:

1
svn up

Это все, что нужно. Если вам когда-нибудь понадобится URL-адрес нового стабильного хранилища версий, посетите Кодекс WordPress . Вы также можете найти полные инструкции по использованию SVN там.

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


каталог

Теперь, когда вы используете SVN, вы должны убедиться, что ваши каталоги .svn защищены от публичного доступа. Одна из основных причин заключается в файле .svn / records, который может выдавать злоумышленникам конфиденциальную информацию. Для получения дополнительной информации по этому вопросу, пожалуйста, ознакомьтесь со статьей Smashing Magazine о проблеме администратора сервера SVN .

Чтобы защитить каталоги .svn с помощью .htaccess, просто примените следующее правило перенаправления:

1
RewriteRule ^(.*/)?.svn/ — [F,L]

Как указано в известной 5-минутной установке WordPress , вам нужно переименовать wp-config-sample.php в wp-config.php и добавить информацию о вашей базе данных.


Ключи

Оставление файла wp-config.php только с информацией о базе данных и без других настроек является проблемой безопасности . Обязательно создайте ключи аутентификации, как указано в комментариях. Для этого перейдите на страницу https://api.wordpress.org/secret-key/1.1/salt/ и скопируйте случайно созданные ключи в файл.

Обратите внимание, что вы также должны изменить префикс таблицы базы данных WordPress по умолчанию. Это необходимо для защиты вашей установки от взломов, таких как недавняя вспышка Pharma Hack . Посетите random.org, чтобы сгенерировать случайную строку префикса, которую вам нужно установить как $table_prefix в wp-config.php. Кроме того, обязательно добавьте подчеркивание в конце префикса.


Как обычно, зайдите в ваш браузер wp-admin / install.php и следуйте инструкциям. При заполнении формы измените имя пользователя по умолчанию («admin») для повышения безопасности. Обратите внимание, что большинство злоумышленников нацеливаются на установку WordPress с настройками по умолчанию. Таким образом, изменение этого имени пользователя является обязательным.

«Обратите внимание, что большинство злоумышленников нацеливаются на установку WordPress с настройками по умолчанию».


Это обычно пропускаемый шаг, выполнение которого занимает всего несколько секунд. Просто удалите скрипт wp-admin / install.php после установки WordPress для дальнейшей безопасности.


Войдите в свою установку WordPress по адресу http://example.com/wp-admin , щелкните свое имя пользователя в правом верхнем углу и заполните свой профиль пользователя.


Часовой пояс

На вкладке «Настройки»> «Общие» обязательно измените временную шкалу вашего блога и часовой пояс.


Хотя вам, возможно, и не нужно ничего менять, лучше посмотреть «Настройки»> «Запись», «Настройки»> «Чтение» и «Настройки»> «Обсуждение». Убедитесь, что конфигурация соответствует вашим стандартам.


Постоянная ссылка

Установка WordPress по умолчанию идет с постоянными ссылками строки запроса, которые выглядят как http://example.com/?p=1 для каждой статьи. Мало того, что это не дружественный для поисковых систем, но это также даже не дружественный для человека. Измените это на постоянную структуру, которая содержит заголовок сообщения (% postname%, если вы используете пользовательскую конфигурацию).


Файл .htaccess необходим для правильной работы вашего сайта WordPress. Для начала включите RewriteEngine:

1
RewriteEngine On

Отключить списки каталогов в целях безопасности:

1
Options -Indexes

Добавьте / удалите www, чтобы предотвратить дублирование контента (замените example.com вашим доменом):

1
2
3
# Add www (change www.example.com to example.com to remove www)
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

WordPress требует, чтобы вы перенаправили все не-файлы и каталоги в index.php:

1
2
3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .

Отключить ETag:

1
2
Header unset ETag
FileETag None

Подавить ошибки PHP (обратите внимание, что это может работать не на всех хостах):

1
2
3
4
5
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

Управляйте кэшированием файлов, чтобы ускорить ваш сайт:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
ExpiresActive On
ExpiresDefault A0
<FilesMatch «.(gif|jpg|jpeg|png|swf)$»>
# 2 weeks
ExpiresDefault A1209600
Header append Cache-Control «public»
</FilesMatch>
<FilesMatch «.(xml|txt|html)$»>
# 2 hours
ExpiresDefault A7200
Header append Cache-Control «proxy-revalidate»
</FilesMatch>
<FilesMatch «.(js|css)$»>
# 3 days
ExpiresDefault A259200
Header append Cache-Control «proxy-revalidate»
</FilesMatch>

Защитите файл .htaccess:

1
2
3
4
<Files .htaccess>
 Order Allow,Deny
 Deny from all
</Files>

Защитите файл wp-config.php:

1
2
3
4
<Files wp-config.php>
 Order Deny,Allow
 Deny from all
</Files>

Безопасные каталоги .svn, как описано в шаге № 2:

1
RewriteRule ^(.*/)?.svn/ — [F,L]

Если вы хотите добавить дополнительную конфигурацию для своего веб-сайта и ищете общий учебник, рассмотрите Ultimate Guide по доступу к файлам Nettuts или глупые хитрости htaccess на скоропортящихся прессах.


Gzip

Применение gzip может сжимать текстовые файлы до 80% и значительно экономить пропускную способность. Чтобы сделать его активным на вашем сайте, требуется только файл PHP и немного .htaccess. Обратите внимание, что на следующий код ссылается учебник gzip по боковому коду.

1
2
3
4
5
6
<?php
    if( isset( $_SERVER[‘HTTP_ACCEPT_ENCODING’] ) && substr_count( $_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’ ) && !preg_match( ‘/(load-styles|load-scripts).php/’, $_SERVER[ ‘SCRIPT_NAME’ ] ) )
        ob_start( ‘ob_gzhandler’ );
    else
        ob_start();
?>

Поначалу это может показаться немного сложным, но на самом деле это не так уж и плохо. Большое логическое выражение проверяет, доступен ли gzip и, если да, то применяется. К сожалению, я обнаружил, что этот метод gzip не работает с WordPress ‘load-styles.php и load-scripts.php. В результате preg_match используется для их исключения.

01
02
03
04
05
06
07
08
09
10
11
12
13
<FilesMatch «.js$»>
AddHandler application/x-httpd-php .js
php_value default_mimetype «text/javascript»
</FilesMatch>
<FilesMatch «.css$»>
AddHandler application/x-httpd-php .css
php_value default_mimetype «text/css»
</FilesMatch>
<FilesMatch «.(htm|html|shtml)$»>
AddHandler application/x-httpd-php .html
php_value default_mimetype «text/html»
</FilesMatch>
php_value auto_prepend_file /absolute/path/to/gzip.php

Этот фрагмент добавляет обработчик php в файлы .html, .css и .js, чтобы их можно было распаковать. Также добавляется ранее упомянутый файл gzip.php. Обязательно измените /absolute/path/to/gzip.php на правильный путь.


Черный список 4G Perishable Press предотвратит многочисленные атаки на ваш сайт через .htaccess. Я включил код ниже (отредактированный для WordPress). Вы можете узнать о том, как это работает, прочитав статью о скоропортящейся прессе :

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
### PERISHABLE PRESS 4G BLACKLIST ###
 
# ESSENTIALS
RewriteEngine on
ServerSignature Off
Options All -Indexes
Options +FollowSymLinks
 
# FILTER REQUEST METHODS
<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
 RewriteRule ^(.*)$ — [F,L]
</IfModule>
 
# BLACKLIST CANDIDATES
<Limit GET POST PUT>
 Order Allow,Deny
 Allow from all
 Deny from 75.126.85.215 «# blacklist candidate 2008-01-02 = admin-ajax.php attack «
 Deny from 128.111.48.138 «# blacklist candidate 2008-02-10 = cryptic character strings «
 Deny from 87.248.163.54 «# blacklist candidate 2008-03-09 = block administrative attacks «
 Deny from 84.122.143.99 «# blacklist candidate 2008-04-27 = block clam store loser «
 Deny from 210.210.119.145 «# blacklist candidate 2008-05-31 = block _vpi.xml attacks «
 Deny from 66.74.199.125 «# blacklist candidate 2008-10-19 = block mindless spider running «
 Deny from 203.55.231.100 «# 1048 attacks in 60 minutes»
 Deny from 24.19.202.10 «# 1629 attacks in 90 minutes»
</Limit>
 
# QUERY STRING EXPLOITS
<IfModule mod_rewrite.c>
 RewriteCond %{QUERY_STRING} ../ [NC,OR]
 RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
 RewriteCond %{QUERY_STRING} tag= [NC,OR]
 RewriteCond %{QUERY_STRING} ftp: [NC,OR]
 RewriteCond %{QUERY_STRING} http: [NC,OR]
 RewriteCond %{QUERY_STRING} https: [NC,OR]
 RewriteCond %{QUERY_STRING} mosConfig [NC,OR]
# RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|’|»|;|?|*).* [NC,OR]
# RewriteCond %{QUERY_STRING} ^.*(%22|%27|%3C|%3E|%5C|%7B|%7C).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(globals|encode|localhost|loopback).* [NC,OR]
 RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare|drop).* [NC]
 RewriteRule ^(.*)$ — [F,L]
</IfModule>
 
# CHARACTER STRINGS
<IfModule mod_alias.c>
 # BASIC CHARACTERS
 RedirectMatch 403 ,
 RedirectMatch 403 :
 RedirectMatch 403 ;
# RedirectMatch 403 =
 RedirectMatch 403 @
 RedirectMatch 403 [
 RedirectMatch 403 ]
 RedirectMatch 403 ^
 RedirectMatch 403 `
 RedirectMatch 403 {
 RedirectMatch 403 }
 RedirectMatch 403 ~
 RedirectMatch 403 «
 RedirectMatch 403 $
 RedirectMatch 403 <
 RedirectMatch 403 >
 RedirectMatch 403 |
 RedirectMatch 403 ..
# RedirectMatch 403 //
 RedirectMatch 403 %0
 RedirectMatch 403 %A
 RedirectMatch 403 %B
 RedirectMatch 403 %C
 RedirectMatch 403 %D
 RedirectMatch 403 %E
 RedirectMatch 403 %F
 RedirectMatch 403 %22
 RedirectMatch 403 %27
 RedirectMatch 403 %28
 RedirectMatch 403 %29
 RedirectMatch 403 %3C
 RedirectMatch 403 %3E
# RedirectMatch 403 %3F
 RedirectMatch 403 %5B
 RedirectMatch 403 %5C
 RedirectMatch 403 %5D
 RedirectMatch 403 %7B
 RedirectMatch 403 %7C
 RedirectMatch 403 %7D
 # COMMON PATTERNS
 Redirectmatch 403 _vpi
 RedirectMatch 403 .inc
 Redirectmatch 403 xAou6
 Redirectmatch 403 db_name
 Redirectmatch 403 select(
 Redirectmatch 403 convert(
 Redirectmatch 403 /query/
 RedirectMatch 403 ImpEvData
 Redirectmatch 403 .XMLHTTP
 Redirectmatch 403 proxydeny
 RedirectMatch 403 function.
 Redirectmatch 403 remoteFile
 Redirectmatch 403 servername
 Redirectmatch 403 &rptmode=
 Redirectmatch 403 sys_cpanel
 RedirectMatch 403 db_connect
 RedirectMatch 403 doeditconfig
 RedirectMatch 403 check_proxy
 Redirectmatch 403 system_user
 Redirectmatch 403 /(null)/
 Redirectmatch 403 clientrequest
 Redirectmatch 403 option_value
 RedirectMatch 403 ref.outcontrol
 # SPECIFIC EXPLOITS
 RedirectMatch 403 errors.
# RedirectMatch 403 config.
 RedirectMatch 403 include.
 RedirectMatch 403 display.
 RedirectMatch 403 register.
 Redirectmatch 403 password.
 RedirectMatch 403 maincore.
 RedirectMatch 403 authorize.
 Redirectmatch 403 macromates.
 RedirectMatch 403 head_auth.
 RedirectMatch 403 submit_links.
 RedirectMatch 403 change_action.
 Redirectmatch 403 com_facileforms/
 RedirectMatch 403 admin_db_utilities.
 RedirectMatch 403 admin.webring.docs.
 Redirectmatch 403 Table/Latest/index.
</IfModule>

Некоторые из этих правил закомментированы или отредактированы, потому что они мешают WordPress. Если у вас возникают проблемы с определенными URL-адресами, исправьте их, добавив «#» (комментарий) к соответствующему правилу.


«Активация Akismet необходима для предотвращения спама в комментариях».

Активация Akismet является обязательной для предотвращения спама в комментариях. Сделайте это, зарегистрировавшись на ключ API на akismet.com . Обратите внимание, что ключ API учетной записи WordPress.com также будет работать.

Получив ключ, зайдите в Плагины> Конфигурация Akismet на своей панели и вставьте его в соответствующее поле.


Плагины

Следующие плагины очень помогают любому блогу WordPress:

Для дополнительной безопасности эти плагины, на которые ссылается статья DigWP о блокировке WordPress , также важны:

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

1
2
3
4
5
6
7
8
wget http://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip
wget http://downloads.wordpress.org/plugin/google-sitemap-generator.3.2.4.zip
wget http://downloads.wordpress.org/plugin/wordpress-file-monitor.2.3.3.zip
wget http://downloads.wordpress.org/plugin/wp-security-scan.zip
wget http://downloads.wordpress.org/plugin/ultimate-security-check.1.2.zip
wget http://downloads.wordpress.org/plugin/secure-wordpress.zip
find .
rm *.zip

Это позволит получить zip-файлы для плагинов, распаковать их и удалить .zips

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

После того, как вы закончите установку плагинов, обязательно включите их через панель управления WordPress.


Прежде чем все в одном SEO Pack станет активным, вам нужно его настроить. Перейдите в Настройки> Все в одном SEO, чтобы сделать это. Обязательно отметьте «включенный» переключатель. Кроме того, добавьте в название дома, описание и ключевые слова. Наконец, установите остальные параметры по своему вкусу.


Перейдите в «Настройки»> «XML-карта сайта», чтобы создать свой первый файл сайта, который будет отправлен поисковым системам. Прежде чем сделать это, убедитесь, что параметры на странице соответствуют вашим желаниям. Например, я часто редактирую частоты изменений, так как мои сообщения изменяются довольно часто.

Когда вы будете готовы, прокрутите страницу вверх и нажмите на ссылку сборки («Нажмите здесь»). Возможно, вам придется создать два пустых файла — sitemap.xml и sitemap.xml.gz — в корневом каталоге в зависимости от разрешений каталога. Тем не менее, как только вы закончите сборку в первый раз, он должен автоматически обновляться, если у вас установлен флажок «Перестроить карту сайта, если вы измените содержимое своего блога».


Безопасность

На данный момент вы уже установили четыре плагина безопасности. Теперь вы должны использовать их.

Зайдите в «Настройки»> «Монитор файлов WordPress» и добавьте wp-контент / загрузки в путь исключения. Измените другую информацию, если это необходимо. Обратите внимание, что этот плагин будет информировать вас всякий раз, когда он замечает изменения в вашей файловой системе.

В разделе «Настройки»> «Безопасный WP» проверьте сообщения об ошибках и Windows Live Writer для дополнительной защиты.

Обратите внимание, что есть новая вкладка «Безопасность», созданная WP Security Scan. Исправьте элементы красного цвета в разделе «Безопасность»> «Безопасность»> «Сканер». Когда вы заходите в раздел «Безопасность»> «Сканер», убедитесь, что все ваши отдельные плагины также изменены с 755. Кроме того, вы можете использовать инструмент для создания надежного пароля.

Наконец, исправьте ошибки в разделе Инструменты> Проверка окончательной безопасности и убедитесь, что ваш сайт получает А.


Теперь, когда вы настроили гибкую и безопасную установку WordPress, вам нужно сделать ее всеобъемлющей, настроив тему и боковую панель в соответствии с потребностями вашего сайта. Конечно, не существует заданного метода для этого; Каждый сайт по-своему уникален. Создайте тему, которая понравится вам и вашим читателям.


Написать

Все, что осталось сейчас, — это написать подлинный контент, который привлекает вашу базу пользователей. Теперь у вас есть гибкая, безопасная и комплексная установка WordPress. Использовать его мудро.


Поздравляем! Теперь у вас есть гибкая, безопасная и комплексная установка WordPress. Использовать его мудро!

Если вы новичок в разработке WordPress, вас также может заинтересовать наша информация по установке WordPress Theme в Envato Studio, где у нас также есть широкий спектр ресурсов WordPress.