четверг, 23 февраля 2017 г.

Установка MySQL + Apache + PHP + phpMyAdmin в FreeBSD 11

1. Проводим процедуру обновления портов:
# portsnap fetch
# portsnap extract
# portsnap update

2. Устанавливаем MySQL из портов
# cd /usr/ports/databases/
Ищем доступные версии MySQL сервера
# find . -name 'mysql*-server'
./mysql57-server
./mysql55-server
./mysql56-server
./mysql80-server
Установим свежайшую версию 5.7
# cd mysql57-server/
# make install clean
В процессе установке будут заданы ряд вопросов. Все оставляем по умолчанию, кликнув по «ОК»


 








Добавляем службу MySQL в автозагрузку
Для этого в файл /etc/rc.conf добавим строку
mysql_enable="YES"

Для удобства дальнейшего конфигурирования сервера и работы с MySQL создаем файл конфигурации сервера, куда можно заносить индивидуальные директивы настройки сервера. Файл конфигурации копируем из имеющегося файла-примера:
# cp /usr/local/share/mysql/my-default.cnf /etc/my.cnf

Стартуем службу MySQL
#service mysql-server start
Starting mysql.

Запускаем первичный скрипт настройки безопасности.
На первый вопрос отвечаем «N» или просто нажимаем Enter. Этим мы сообщаем программе в том, что не нуждаемся в проверке пароля на устойчивость.
# mysql_secure_installation
mysql_secure_installation: [ERROR] unknown variable 'prompt=\u@\h [\d]>\_'
Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: <нажимам Enter>
Using existing password for root.
На вопрос о необходимости установки пароля отвечаем y (yes, да)
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
Вводим пароль два раза:
New password: <Вводим пароль>
Re-enter new password: <Вводим пароль>
Затем на остальные вопросы везде отвечаем Да – «y»
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
Перезапускаем службу
#service mysql-server restart

Теперь можно зайти в MySQL с помощью клиента:
#mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 5.7.17-log
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
root@localhost [(none)]>
В MySQL 5.7, поле пароля password пользователя было удалено и теперь необходимо использовать поле 'authentication_string'. В связи с этим на ввод любой команды в клиенте MySQL будет выдаваться ошибка. Пример:
> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
Устраняем ошибку следующей командой, которая пропишет наш пароль в правильное место:
> ALTER USER USER() IDENTIFIED BY ‘<Пароль>';
Query OK, 0 rows affected (0,00 sec)
Теперь можно пользоваться клиентом MySQL
root@localhost [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0,03 sec)


3. Устанавливаем Apache
Ищем какие версии пакетов Apache доступны для установки
# pkg search apache | grep server
apache-solr-6.3.0              High performance search server built using Lucene Java
apache-solr3-3.6.2             High performance search server built using Lucene Java
apache22-2.2.31_1              Version 2.2.x of Apache web server with prefork MPM
apache22-event-mpm-2.2.31_1    Version 2.2.x of Apache web server with event MPM
apache22-itk-mpm-2.2.31_1      Version 2.2.x of Apache web server with itk MPM
apache22-peruser-mpm-2.2.31_1  Version 2.2.x of Apache web server with peruser MPM
apache22-worker-mpm-2.2.31_1   Version 2.2.x of Apache web server with worker MPM
apache24-2.4.25_1              Version 2.4.x of Apache web server
p5-Config-ApacheFormat-1.2_2   Parse a configuration file in the same syntax as the Apache web server

Проводим установку пакета apache24
root@kvs-freebsd:~ # pkg install apache24-2.4.25_1
Updating FreeBSD repository catalogue...
...
The process will require 76 MiB more space.
18 MiB to be downloaded.
На вопрос отвечаем утвердительно, введя y
Proceed with this action? [y/N]: y
Установка завершается сообщением:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- apache24 default build changed from static MPM to modular MPM
- more modules are now enabled per default in the port
- icons and error pages moved from WWWDIR to DATADIR
   If build with modular MPM and no MPM is activated in
   httpd.conf, then mpm_prefork will be activated as default
   MPM in etc/apache24/modules.d to keep compatibility with
   existing php/perl/python modules!
Please compare the existing httpd.conf with httpd.conf.sample
and merge missing modules/instructions into httpd.conf!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Конфигурация сервера будет в файле /usr/local/etc/apache24/httpd.conf
В этом файле раскомментируем и меняем переменную ServerName
#ServerName www.example.com:80
ServerName www.kvs-freebsd.svttk.ru:80
Здесь kvs-freebsd - имя машины в домене svttk.ru
Так же необходимо серверу указать какие файлы искать и запускать по умолчанию в каталоге. Это делается директивой DirectoryIndex:
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
Я добавил файл index.php.

Для того что бы машина знала, кто она такая даже без DNS нужно сделать запись в /etc/hosts
Пример:
10.10.49.153   www.kvs-freebsd.svttk.ru kvs-freebsd.svttk.ru kvs-freebsd

Файлы WEB-сервера должны находиться в папке DocumentRoot
В конфигурации по умолчанию прописано место папки DocumentRoot
DocumentRoot "/usr/local/www/apache24/data"

Для автозагрузки сервера Apache В файл /etc/rc.conf добавляем строчку
apache24_enable="YES"

Стартуем сервис Apache
# service apache24 start
Performing sanity check on apache24 configuration:
Syntax OK
Starting apache24.
Теперь обратившись к к серверу через браузер получим сообщение:


Остановка сервера выполняется так:
# service apache24 stop
Stopping apache24.
Waiting for PIDS: 52099.
Рестарт сервера:
# service apache24 restart


4. Устанавливаем PHP5.6 из портов
# cd /usr/ports/lang/php56
# make all install clean
В появившемся диалоговом окне оставляем все по умолчанию и просто нажимаем «ОК»
 
Затем устанавливаем расширения PHP5.6
# cd /usr/ports/lang/php56-extensions
# make all install clean
В появившемся окне отмечаем (клавишей «пробел» или мышкой) дополнительные галочки:
BCMATH BZ2 CALENDAR CURL GD MBSTRING MCRYPT MYSQL MYSQLI ODBC 
Остальное оставляем без изменений.


Перед установкой будут выданы диалоговые окна, в которых просто нажимаем «Ок»










5. После успешной установки PHP5.6 и расширений к языку устанавливаем модуль php56 к серверу Apache:
# cd /usr/ports/www/mod_php56
# make all install clean
В диалоговом окне оставляем все по умолчанию и просто нажимаем «ОК»


После установки расширения перечитываем конфигурацию:
# apachectl graceful

Вносим изменения в конфигурацию Apache, что бы web-сервер увидел конфигурацию модуля php. В папке /usr/local/etc/apache24/Includes создаём файл php-application.conf 
# touch /usr/local/etc/apache24/Includes/php-application.conf 
Вносим в файл 2 строчки:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phpsXsource
После этого создаем файл php.ini Из файла примера:
# cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini 
# chmod u+w /usr/local/etc/php.ini
Перезагружаем WEB-сервер:
# service apache24 restart

Проверяем работу WEB-сервера с поддержкой php:
В папке /usr/local/www/apache24/data создаем файл info.php
# touch /usr/local/www/apache24/data/info.php
В файл вставляем строки:
<?php
phpinfo();
?>
Открываем браузер и запрашиваем созданную страницу:
http://<IP-адрес>/info.php 
Должно появиться окно, описывающее текущую конфигурацию PHP.
В списке поддерживаемых модулей должны быть разделы MySQL и MySQLi



6. Устанавливаем PhpMyAdmin
# cd /usr/ports/databases/phpmyadmin
# make all install clean
В диалоговом окне просто нажимаем “OK”


После установки создаем файл
# touch /usr/local/etc/apache24/Includes/phpmyadmin.conf
Вносим в файл содержимое:
    Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">
        Options none
        AllowOverride Limit
        Order Deny,Allow
        Require all granted
    </Directory>

Перезапускаем Apache:
# service apache24 restart
Заходим на страницу phpmyadmin
http://<IP-адрес>/phpmyadmin
Должны увидеть окно запрашивающее логин и пароль:
Используя данные пользователя MySQL можно подключиться к консоли управления базой данных:



четверг, 9 февраля 2017 г.

Midnight Commander (MC) в FreeBSD 11

Midnight Commander (MC) в FreeBSD 11.

Midnight Commander (MC) – это удобная файловая оболочка в системах Linux / FreeBSD.

Лично мне оболочка не нравиться ярким синим оформлением. Как хорошо, что оформление можно сменить. Для этого перейти в меню «Настройка»  «Оформление…»


Мне симпатична тема gotar





При редактировании текста в оболочке через F4 неочевидно использование буфера обмена. Задействовать его можно так:
1 Способ - Ctrl+Shift+Mouse - скопировать в буфер обмена.
Потом вставить можно так  -  Shift+Ins
2 Способ - Нажимаем Shift и выделяем мышкой - занесли текст в буфер обмена
Нажали Shift и кликнули правую кнопку мышки – вставили из буфера обмена

Другие «горячие клавиши»  в режиме редактирования текста
Ctrl+y - Удалить строку
Alt+L - Переход к строке по номеру

«Горячие клавиши» режима отображения панели:
Alt + a - Вставить в командную строку путь из активной панели
Alt + Enter - Вставить в командную строку название выделенного файла
Alt+c - Вызывается меню быстрой смены текущего каталога на активной панели
Esc + 0 – Быстрый выход из mc.

Ctrl+o- временно скрыть mc и уйти в консоль.
Работа этой команды имеет нюансы. Выполнение команд mc из командной строки выполняется фактически в subshell, а не в основном шелле.


Это значит, что мы можем иметь ситуацию, что введя команду и отправив ее на выполнение, мы нажав Ctrl+o не увидим результата.
Subshell надежно работает в оболочке bash, поэтому для корректной работы Subshell в mc в FreeBSD необходимо:
1) Установить и назначить пользователю оболочку bash (для этого есть отдельный мануал)
2) Внести изменения в файл /etc/termcap. Этот файл описывает настройки терминала в FreeBSD.
В редакторе открываем файл /etc/termcap и переходим на строку 3013 (используя Alt+L в mc)
Вставляем перед строкой
 :tc=xterm-new: 
дополнительную строку (копируем ее в буфер и вставляем в редакторе mc нажав Shift + Ins
  :te=\E[?1049l:ti=\E[?1049h:\
Должно получиться
xterm|X11 terminal emulator:\
    :te=\E[?1049l:ti=\E[?1049h:\
    :tc=xterm-new:
 
Сохраняемся (F2) и выходим (F10).
Теперь subshell работает нормально.

среда, 8 февраля 2017 г.

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

По умолчанию bash не установлен в Freebsd 11.

Проверить какой шелл используется можно так:
# echo $shell
/bin/csh

Для установки bash выполняем:
 # cd /usr/ports/shells/bash
 # make install clean

В процессе установки будут заданы вопросы, на которые просто отвечаем «ОК»




Установка заканчивается так:
===================================================================
bash requires fdescfs(5) mounted on /dev/fd
If you have not done it yet, please do the following:
        mount -t fdescfs fdesc /dev/fd
To make it permanent, you need the following lines in /etc/fstab:
        fdesc   /dev/fd         fdescfs         rw      0       0
===================================================================
Это говорит о том, что bash, стандартная оболочка Linux, использует псевдо-файловую систему /dev/fd для сбора информации о системе. В связи с этим некоторые сторонние скрипты, написанные на bash, не будут без этого работать в FreeBSD.

Выполняем рекомендации:
# mount -t fdescfs fdesc /dev/fd
Прописываем дополнительную строчку в fstab
# nano /etc/fstab
Дописываем строку
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/da0s1a     /               ufs     rw      1       1
/dev/da0s1b     none            swap    sw      0       0
fdesc           /dev/fd         fdescfs rw      0       0

Проверяем какие теперь есть шеллы в системе
# cat /etc/shells
Убеждаемся, что в файле есть строка
/usr/local/bin/bash

Смена шелла пользователя USER выполняется командой
# chsh -s /usr/local/bin/bash USER
Если USER не вводить, то мы сменим шелл для пользователя под которым работаем
# chsh -s /usr/local/bin/bash
chsh: user information updated
Теперь можно перезайти в систему и наслаждаться bash
Что бы изменить shell без повторного входа – достаточно запустить:
# exec /usr/local/bin/bash

Проверить у кого из пользователей используется bash можно так
# cat /etc/passwd | grep bash

четверг, 2 февраля 2017 г.

Сводка недоступна. Нажмите эту ссылку, чтобы открыть запись.
Использование NGREP в Linux

NGREP - это утилита, представляющая собой что-то среднее между tcpdump и wireshark. 
NGREP не такой удобный как wireshark, зато превосходит по удобству использования tcpdump.
NGREP работает в терминале и это здорово!

Сайт проекта
http://ngrep.sourceforge.net/

Установка  ngrep в CentOS7
# yum -y install epel-release
# yum install ngrep

Основные ключи запуска
-W сохранить форматирование строк
-q скрывает избыточную информацию о неподходящих пакетах
-d определение сетевого интерфейса, который нужно прослушивать

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:
Просмотр трафика проходящего порт 5060 интерфейса ens32
# ngrep -q -d ens32 -W byline port 5061

Просмотр трафика, проходящего через порт 5061, интерфейс ens32 и с хостом 10.10.50.240
# ngrep -q -d ens32 -W byline  host 10.10.50.240 and port 5061
# ngrep -qt -p -d ens32 -W byline  host 10.10.50.240 and port 5061

Перехватывает все пакеты с методами HTTP: GET или POST:
# ngrep -q -d ens32 -W byline "^(GET|POST) .*"

Перехват трафика, содеожащего в пакете цифры 99991003 (например номер телефона)
# ngrep -qt -p -d ens32 -W byline "99991003"  host 10.10.50.240 and port 5061

Перехват трафика и сброс его в файл:
# ngrep -W byline -d eth0 port 5060 -O capture_file