Архив автора: admin

Кеширование исполняемого php-кода: OPCache

Обзор расширения OPCache для PHP можно почитать на хабре




Включение:




 sudo phpenmod opcache 




Выключение:




sudo phpdismod opcache 




Тут можно ознакомиться со скриптами для мониторигна работы OPCache




Тут можно почитать ещё одну полезную статью




И даже тут




А тут ещё одну 🙂



2019-05-08T02:08:19
Настройка web сервера

Основные команды SSH

Рассмотрим основные команды, используемые при работе с сервером через SSH.




ls




Выводит список файлов и папок в текущей директории.




ls -la или ll




Выводит список файлов и папок в текущей директории, а также их размеры, владельца, права на них и дату последнего изменения.




cd




Переход в указанную директорию.
Вводится так: cd директория




mv




Перемещение или переименование файла или папки.
Вводится так: mv текущее_имя новое_имя




rm




Удаление файла или папки.
Вводится так: rm путь_к_файлу




cp




Копирование файла или папки в другое место.
Вводится так: cp имя_файла куда_скопировать




chmod




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




chown




Изменяет владельца файла или папки.
Вводится так: chown пользовать:группа файл




mkdir




Создание директории по указанному пути.
Вводится так: mkdir путь




mc




Запускает файловый менеджер Midnight Commander.



2019-05-07T19:09:09
Настройка web сервера

Обзор бесплатных VPN-программ для разных платформ

Виртуальные сети всё больше набирают обороты популярности. Дело в следующем: интернет-пространство небезопасно: всегда существует возможность того, что ваши персональные данные будут украдены или на компьютер без разрешения установится вредоносное программное обеспечение. Использование VPN позволяет оградить от этих угроз, а также получить доступ к заблокированным ресурсам интернета.

Читать

Как в WhatsApp удалить сообщение у собеседника

WhatsApp предлагает пользователям массу интересного функционала. В частности, в этом мессенджере вы можете удалить отправленное сообщение не только у себя, но и у своих собеседников. Полезная функция, не правда ли? Но использовать её можно далеко не всегда.

Читать

Установка PhpMyAdmin 5.X.X на сервер с Ubuntu 18.04 LTS

Будем считать, что у вас уже есть сервер с настроенным и работающим сайтом. Доменное имя у него пусть будет phpmyadmin.site.




Для начала вам нужно закачать в корневую или любую другую директорию сайта (на ваш выбор) архив phpmyadmin. Скачивать мы будем с официального сайта: https://www.phpmyadmin.net




Теперь у нас есть два варианта развития событий:




  1. Закачать напрямую через wget ssh консоль сервера;
  2. Скачать архив себе на компьютер, а затем уже закачать и распаковать или закачать распакованную версию на ваш сайт через sftp/ftp.




Во верхнем правом углу видим кнопку «Download 5.x.x», нажимаем её и скачиваем к себе на компьютер, а потом закачиваем к себе на сайт или же, дабы упростить это действие я закачиваю напрямую на свой сервер:




Перехожу в корневую директорию своего сайта:




cd /home/phpmyadmin_site/www




Копирую адрес ссылки phpmyadmin c официального сайта (наводим курсор мышки на кнопку DOWNLOAD, ПКМ, копировать адрес ссылки)




Возвращаемся в консоль сервера и закачиваем:




wget https://files.phpmyadmin.net/phpMyAdmin/5.x.x/phpMyAdmin-4.x.x-all-languages.zip







Не забывайте, что у вас будет другая версия phpmyadmin и 5.x.x будет отличаться.




Распаковываем скачанный архив:




unzip phpMyAdmin-5.x.x-all-languages.zip 




Удаляем архив:




rm phpMyAdmin-5.x.x-all-languages.zip 




Если вам нужно поместить phpmyadmin не в корневую директорию, то можно просто переименовать папку командой:




mv ./phpMyAdmin-5.x.x-all-languages  ./phpma 




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




Теперь можно перейти по адресу phpmyadmin вашего сервера:




http(s)://phpmyadmin.site/phpma




И попробовать авторизоваться под пользователем root и его паролем. Скорее всего вы получите ошибку вида:




mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'




На серверах с Ubuntu, использующей MySQL 5.7 (и более поздние версии), пользователь root в MySQL по умолчанию аутентифицируется с помощью плагина auth_socket, а не по паролю. Это в целом более безопасно и удобно во многих случаях, но не в случае, когда вам необходимо организовать доступ к MySQL со стороны сторонней программы, например, phpMyAdmin.




Для того, чтобы пользователь root в MySQL мог использовать пароль для входа в систему вам необходимо изменить метод аутентификации с auth_socket на mysql_native_password. Для этого войдите в оболочку MySQL следующей командой:




sudo mysql 




Далее проверьте, какой метод аутентификации используется для каждого из ваших пользователей MySQL:




SELECT user,authentication_string,plugin,host FROM mysql.user; 




Скорее всего вывод будет приблизительно таким:




Вывод
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC944277A401A7D25BE1CA89AFF17BF607F8707F | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)




В этом примере ваш пользователь root использует аутентификацию с помощью плагина auth_socket. Для изменения этой настройки на использование пароля используйте следующую команду ALTER USER. Не забудьте изменить password на ваш сильный пароль:




ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 

password нужно заменить на ваш пароль для root пользователя




Далее выполните команду FLUSH PRIVILEGES, которая применит внесённые изменения:




FLUSH PRIVILEGES; 




Проверьте методы авторизации для пользователей ещё раз для того, чтобы убедиться, что пользователь root более не использует плагин auth_socket для авторизации:




SELECT user,authentication_string,plugin,host FROM mysql.user; 







Вывод
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *8656DACC8616D997782ADD0839F92C1571D6FDDA | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC944277A401A7D25BE1CA89AFF17BF607F8707F | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)




Как можно видеть на представленном выводе теперь root пользователь MySQL аутентифицируется с использованием пароля. После того, как мы в этом убедились, можно выйти из оболочки MySQL:




exit




Больше полезной информации по авторизации mysql: https://www.digitalocean.com/community/tutorials/mysql-ubuntu-18-04-ru




После чего вы вновь можете зайти в phpmyadmin через браузер с логином root и его паролем. Скорее всего вы успешно авторизуетесь, но в панели phpMyAdmin вы увидете множество алертов, вроде следующих:




 Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.







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







В конфигурационном файле необходимо задать парольную фразу (blowfish_secret). 







$Cfg['TempDir'] (./tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным. 




Далее нам нужно настроить phpmyadmin




Копируем образец конфигурационного файла phpmyadmin:




cp ./phpma/config.sample.inc.php ./phpma/config.inc.php




Редактируем конфиг:




sudo nano ./phpma/config.inc.php




Первым делом нужно задать секретный blowfish ключ, который будет состоять из 32 символов:




$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Вставляем что-то вроде этого:
$2a$58$iMaKE1DFydKAKNQPGR631uXjN75C0PT37x2xacokFCpZgcbm42G1q

В итоге получаете:
$cfg['blowfish_secret'] = '$2a$58$iMaKE1DFydKAKNQPGR631uXjN75C0PT37x2xacokFCpZgcbm42G1q'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */




Избавляемся от ошибки связанной с отсутствием расширения php-mbstring




Для избавления от следующей ошибки




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




Просто устанавливаем соответствующее расширение:




sudo apt install php-mbstring




После чего отправляем команду перечитать конфиги сервер Apache:




sudo service apache2 reload




Избавляемся от ошибки кэширования шаблонов phpmyadmin




Сама ошибка выглядит следующим образом:




$Cfg['TempDir'] (./tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным. 




Возникает она из-за отсутствия в директории phpmyadmin папки tmp или из-за отсутствия прав на запись в неё.




Решить эту проблему можно двумя способами:




  1. Создать новую папку tmp в директории phpmyadmin
  2. Указать путь до вашей основной tmp папки сайта




В первом случае делаем следующее




Переходим в папку phpmyadmin:




cd ./phpma




Проверяем наличие папки:




ls -la




Если папка отсутствует, то создаем её:




mkdir ./tmp




Теперь нужно убедиться, что пользователь (или группа), на котором запущен веб-сервер (например, Apache), имеет доступ на запись во вновь созданную папку tmp. Следовательно, измените владельца на этого пользователя или добавьте права на запись для всех пользователей. Последний не может быть действительно целесообразным.




sudo chown -R phpmyadmin_site:www-data ./tmp 

phpmyadmin_site нужно заменить на имя пользователя, от которого работает этот сайт
(изменение владельца файла или папки вводится так: chown пользовать:группа файл/папка)




Во втором варианте поступаем иначе




Открываем конфигурационный файл phpmyadmin




sudo nano ./config.inc.php




И вставляем следующую строчку:




 $cfg['TempDir'] = '/home/phpmyadmin_site/temp'; 

/home/phpmyadmin_site/temp нужно заменить на основную tmp директорию вашего сайта. Так же можно заменить её на ../../tmp







Я вставлял после следующих строчек: 
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;




Избавляемся от алерта хранилища конфигурации phpMyAdmin




Выглядит этот алерт следующим образом:




Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину. 
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.




Исправляем:




Нажимаем «Узнайте причину». Далее выскочит следующее сообщение.
Создать базу данных с именем 'phpmyadmin' и настроить там хранение конфигурации phpMyAdmin.
Нажимаем создать, phpMyAdmin сделает все сам.




Теперь можно работать.



2019-05-07T17:04:01
Настройка web сервера

MikroTik Blocking All Websites Except a Few Websites

A few days ago, someone asked me how to block all websites except one with MikroTik Firewall. For this, I have decided to discuss about blocking all websites except someone’s whitelist. Unlike firewall devices, MikroTik Firewall by default allows all websites. So, if you need to block any website, you have to create a firewall rule that will block the specific website. Now if we want to block all websites and want to allow a few websites, we have to do reverse work that means we have to create a firewall rule that will block all websites and we have to create another firewall rule that will allow a group of websites through MikroTik Firewall. In this article, I will discuss how to block all websites except a few websites using MikroTik Firewall.




MikroTik Firewall Rule to Block All Websites




HTTP and HTTPS are responsible to view websites. HTTP works on TCP port 80 and HTTPS works on TCP port 443. So, to block all websites, we have to drop all requests on TCP port 80 and 443 trough MikroTik Firewall. The following steps will show how to drop all requests on TCP port 80 and 443 in MikroTik Firewall.




  • Go to IP > Firewall menu item and click on Filter Rules tab and then click on PLUS SIGN (+). New Firewall Rule window will appear.
  • Choose forward from Chain dropdown menu.
  • Choose tcp from Protocol dropdown menu.
  • Click on Dst. Port input box and put 80,443.
  • Click on Action tab and choose drop from Action dropdown menu.
  • Click Apply and OK button.




Alternatively, you can apply the following command to create this blocking firewall rule.




/ip firewall filter add chain=forward dst-port=80,443 protocol=tcp action=drop




Blocking Firewall Rule
Blocking Firewall Rule




All websites are now blocked. So, user cannot be viewed any websites trough MikroTik Router. If we now want to allow a few websites, we have to create another firewall rule that will allow a group of website trough MikroTik Firewall.




MikroTik Firewall Rule to Allow a Group of Websites




Blocking all websites, it is time to allow permitted websites. We will now create a new firewall rule that will allow a group of websites which are permitted. The following steps will show how to allow a group of websites through MikroTik Firewall.




  • Go to IP > Firewall menu item and click on Filter Rules tab and then click on PLUS SIGN (+). New Firewall Rule window will appear.
  • Choose forward from Chain dropdown menu.
  • Choose tcp from Protocol dropdown menu.
  • Click on Dst. Port input box and put 80,443.
  • Click on Advanced tab and put a group name (such as Allowed Websites) in Dst. Address List input box.
  • Click on Action tab and choose accept from Action dropdown menu.
  • Click Apply and OK button.




Allowed rule has been created. Now place this allowed rule above the dropped rule. Otherwise, allowed websites will go under dropped rule and user will fail to get permitted websites.




MikroTik Firewall Rules
MikroTik Firewall Rules




We have created permitted website group but don’t specify any website of this group. The following steps will show how to add a website to the allowed website group.




  • Go to IP > Firewall menu item and click on Address Lists tab and then click on PLUS SIGN (+). New Firewall Address List window will appear.
  • Choose your created group name (Allowed Websites) from Name dropdown menu.
  • Put website’s URL (such as www.bing.com) that you want to add this group in Address input field.
  • Click Apply and OK button.




Adding Allowed Websites
Adding Allowed Websites




Similarly, you can add as many websites as you want in your allowed group following the above steps.




Note: If you want to allow those websites which use multiple IPs for a domain such as Google, Facebook, YouTube and so on, you have to add all IPs in your allowed group otherwise you will not be able to access those websites.




If you face any confusion to follow the above steps properly, watch the below video about blocking all websites except a few with MikroTik Firewall. Hope it will reduce your any confusion.