Создание своего сайта оказалось весьма не простым занятием, и времени на его подготовку ушло совсем не мало... Было проделано не мало работы и теперь все шаги по порядку.
Первым делом был поднят LAMP на Ubuntu:
https://onedayadmin.sytes.net/lamp/
Теперь у нас настроен свой web сервер и пора приступить к установке Content Management System, в качестве которой я выбрал WordPress.
Установка WordPress.
Скачайте и распакуйте дистрибутив WordPress, если вы этого еще не сделали.
cd /home/temp
wget https://ru.wordpress.org/wordpress-4.7.1-ru_RU.zip
unzip wordpress-4.7.1-ru_RU.zip
cp -rf /home/temp/wordpress /var/www/yuosite
Создадим базу данных для WordPress на нашем веб-сервере.
Вводим пароль рута для MySQL
CREATE DATABASE wordpress;
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON wordpress.* to 'wordpress'@'localhost' ;
flush privileges;
exit
Переименуем файл wp-config-sample.php файл в wp-config.php. и перетянем его на каталог выше.
Отредактируем wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'youpass');
define('DB_HOST', 'localhost');
Тут генерим ключи https://api.wordpress.org/secret-key/1.1/salt/ и копируем их в соответствующую секцию файла, будет что-то такое:
define('AUTH_KEY', '-x6`/&)+!dC,|j0{`fY66=;J%dls.^,0#R.-|Rp6Wwo$hNYdmk(rg#9ETgh-/p,o');
define('SECURE_AUTH_KEY', 'UfjG7H_sKL@.0NyIudiwYz<1m^CThelEiUo_@NucqH$JgK-{d|wJM|>Nw>M$]@[>');
define('LOGGED_IN_KEY', '#qFY>5^nE`U.3y*7qXBw0T4u97+EGPxkFdaF;Tvf4`a~{v$rTE1B0{DzIhE_zy`7');
define('NONCE_KEY', 'RJ%.E<YI#!;9jvM<%bR^)4Xj.3meolw#Tv]+7k_k^<w+9DUpF=Z5[Q~HG)*@f1A|');
define('AUTH_SALT', 'f+bl^8tcL5 hf+Y|#Z./JPQWuelJ2BCwcc}c=hZE<e$E##q,@EH1prR):bjdj1[t');
define('SECURE_AUTH_SALT', '@K0wE-2elc:a5+!-lu&B/wLz(67ahaMjiD4.#_-BvmZycKu)G;1Pl4dF04|^rtKo');
define('LOGGED_IN_SALT', 'zDm9sEJ,o,ZQ-46DFz#eh|D. UqO_v.&3edt,[bJ/m7cGDH,!q1Rqf2@AE1!=,I6');
define('NONCE_SALT', 'UfYO-A!{_,d0|++ckvH^Z |(F?~fC2s|[<b~z@/1ZR`m~^QG.8l:_UKe!+AU@26i');
заменим префикс таблиц и поправим путь к директории:
$table_prefix = 'lex_';
#Проверим путь к директории WordPress
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
#Включим шифрование SLL для админки
define('FORCE_SSL_ADMIN', true);
Установим wordpress.
Вводим в браузере данную ссылку:
https://youipaddress/wp-admin/install.php
После установки удалим установочный скрипт:
Безопасность.
Если мы не вынесли, как я писал выше, конфигурационный файл на одну директорию выше от нашего сайта, то:
- Запретим доступ к файлу wp-config.php извне при помощи файла .htaccess .
Очень важно убедиться, что файл .htaccess находится в той же директории что и файл wp-config.php
<files wp-config.php>
Order deny,allow
deny from all
- Запретим отображение ошибок на странице авторизации.
Достаточно добавить строку в файл functions.php вашей темы:
- Изменим адрес входа в админку.
Для того, чтобы переименовать файл wp-login.php (тем самым изменить страницу входа) вам потребуется:
Изменим название файла wp-login.php на свое (например, login-yousite.php )
Скопируем это название, откроем переименованный файл login-mysite.php и с помощью текстового редактора заменим все слова wp-login.php на login-yousite.php
Откройте файл wp-includes/general-template.php и также произведите замену всех wp-login.php на login-yousite.php
После этих несложных манипуляций адресная строка входа в панель администратора изменится с http:// yousite.net /wp-login.php на http:// yousite.net.login-mysite.php
Если все работает удаляем wp-login.php он больше не нужен. Но при таком раскладе введя http://yousite.net/wp-admin/ опять откроется окно авторизации, поэтому для надежности запретим все ip кроме той машины откуда будем админить.
order deny,allow
allow from 178.158.103.10 192.168.1.20
deny from all
Чтобы он заработал правим конфигурационный файл нашего сайта:
<Directory /var/www/onedayadmin.sytes.net/wp-admin/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
- Запрещаем просмотр папок на нашем сервере.
дописываем строку Options All –Indexes
- Защищаем WordPress от XSS-инъекций.
Программисты обычно стараются защитить GET- и POST- запросы, однако, иногда этого недостаточно. Необходимо защитить блог от XSS-инъекций и попыток модификации переменных GLOBALS и _REQUEST.
Следующий код блокирует использование XSS-инъекций и попытки модифицировать переменные GLOBALS и_REQUEST. Вставьте код в файл .htacces
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]
Код блокирует 403-й ошибкой запросы которые содержат тег <script> или попытку модифицировать значение переменных GLOBALS и _REQUEST.
- Скрываем версию WordPress'a.
WordPress автоматически вставляет номер своей версии в исходный код страниц. К сожалению, не всегда удаётся вовремя обновлять движок. А это означает, что зная какая у вас версия WordPress’a со всеми её брешами и слабыми местами, злоумышленник может очень-очень огорчить вас.
Снова открываем functions.php , лежащий в папке с активной темой нашего блога и добавляем туда этот код :
add_filter('the_generator', '__return_empty_string');
function rem_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'rem_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'rem_wp_ver_css_js', 9999 );
Иногда необходимо скрыть версию от, например, владельца сайта (если вы разработчик сайта) или от пользователей, имеющих доступ к админке (администраторы сайта, контент-менеджеры). Версия WP в админке обычно выводится в футере. Если ее там нет, значит ваша тема оформления по умолчанию убирает сама.А если есть и ее надо убрать, то воспользуйтесь данным способом. В файле functions.php вашей темы необходимо добавить код:
function kill_footer_version ($default) {
return '';
}
add_filter ('update_footer', 'kill_footer_version', 999);
// Удаление сообщений "Спасибо, что выбрали WordPress"
function kill_footer_filter ($default) {
return '';
}
add_filter ('admin_footer_text', 'kill_footer_filter')
И наконец удалим два файла readme.html и license.txt которые содержат информацию о версии wordpress.
- Плагин для защиты от зловредных url-запросов.
Хакеры и недохакеры всех родов очень часто пытаются найти слабые места при помощи всевозможных зловредных запросов. WordPress неплохо защищён от этого, но лишняя защита никогда не повредит. Установим и активируем плагин block-bad-queries.
https://wordpress.org/plugins/block-bad-queries/
- Ограничим количество неудачных попыток авторизации.
Для борьбы с обычным брутом нам поможет плагин для wordpress под названием wp-limit-login-attempts. Скачиваем и устанавливаем его.
https://uk.wordpress.org/plugins/wp-limit-login-attempts/
"Человеко понятные урлы".
WordPress по умолчанию при создании новой статьи или страницы создает ссылки с примерно такого вида /index.php?p=15. Это не очень удобно для чтения человеком, да и при поиске поисковики будут обращать внимание на то, что в ссылках содержатся слова и, если поисковый запрос будет частично или полностью совпадать с ссылкой, то они будут учитывать это. Поэтому применяются ЧПУ, выглядят они примерно так: https://onedayadmin.sytes.net/wordpress/.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Если не сработало проверим конфигурационный файл Apache.
Должна быть директива AllowOverride All .
Заходим в https://yousite.net/wp-admin/
Настройки –> Постоянные ссылки -> Название записи https://yousite.net/sample-post/ -> сохранить.
Автоматический перевод русских слов в ссылках сайта на транслит.
Если статья у нас имеет в названии русские слова, то для правильного отображения их следует привести к виду в котором в ссылке содержаться только латинские буквы или символ "-". Для этого установим плагин под названием CurToLatEnhanced.
Скачиваем, разархивируем, ложим в папку plugin .
https://ru.wordpress.org/plugins/cyr3lat/
Включаем его в настройках wordpress. И проверяем Настройки->ПостоянныеСсылки->НазваниеЗаписи-> https://yousite.net/sample-post/
Ставим редактор текста TinyMCE Advanced.
Редактировать текст нашей статьи или просто страниц гораздо удобнее редактором с расширенными возможностями, для этого установим плагин TinyMCE Advanced.
Установка стандартная – после скачивания по ссылке https://ru.wordpress.org/plugins/tinymce-advanced/ разархивируем и загружаем на фтп блога в папку wp-content/plugins. Включаем его. Настройки данного плагина в пункте настройки-> TinyMCE Advanced.
Отключаем комментарии в статьях.
Так как времени отвечать на какие либо вопросы у меня не будет, коментарии к статьям пока что я просто отключу.
Настройки -> снять галочку «разрешить оставлять комментарии на новые статьи».