вторник, 28 апреля 2020 г.

Установка и начало работы с Phantomjs и CasperJS в CentOS8

Установка и начало работы с Phantomjs и CasperJS в CentOS8

PhantomJS – программа эмулирующая браузер в консоли. Позволяет работать с движком WebKit с поддержкой JavaScript.
CasperJS – вспомогательный инструмент написанный на JavaScript как обертка PhantomJS.

Установка Phantomjs
# yum install fontconfig
# yum install bzip2

На сайте phantomjs.org, на странице https://phantomjs.org/download.html находим ссылку на архив с программой
Скачиваем архив в директорию /usr/src/
Распаковываем архив и удаляем его потом.
# cd /usr/src/
# tar xvjf  phantomjs-2.1.1-linux-x86_64.tar.bz2
# rm -f phantomjs-2.1.1-linux-x86_64.tar.bz2

Делаем символьную ссылку на исполняемый файл:
# ln -s /usr/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
Проверка весрии Phantomjs
# phantomjs -v
2.1.1


Установка Casperjs
# cd /usr/src
# git clone -b master git://github.com/n1k0/casperjs.git
# cd casperjs
# ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs

casperjs требует Python
Устанавливаем третью версию Python
# yum install python3
Делаем символьную ссылку
# ln -s /usr/bin/python3 /usr/bin/python
Теперь casperjs работает и показывает свою версию:
# casperjs --version
1.1.4


Использование Phantomjs.
Программа Phantomjs работает с файлами javascript кода.
Пример:
# cd ~
Создаем файл для проверки hellophantomjs.js:
# touch hellophantomjs.js
Код:
console.log('Hello, world!');
phantom.exit();

Запускаем этот файл на исполнение командой phantomjs
# phantomjs hellophantomjs.js
Если будет сделан следующий вывод, значит phantomjs работает нормально.
Hello, world!

Использование Casperjs.
Программа Casperjs так же работает с файлами javascript кода.
Создадим файл получения скриншота сайта http://myttk.ru на casperjs:
# touch screencasper.js
Код:
var casper = require('casper').create({  
    verbose: true,
    logLevel: 'debug',
    pageSettings: {
        userAgent: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
    }
});
casper.options.viewportSize = {width: 1280, height: 1024};
casper.start("http://myttk.ru");
casper.then(function() {
    casper.capture("screen.png");
});
casper.run();

Запуск:
# casperjs screencasper.js
В каталоге откуда запускалась команда будет сгенерирован файл скриншота сайта - screen.png.



Базовые конструкции для работы с Casperjs:
 

Проход авторизации Apache
var url = "http://xxx.ru"
var login = "mylogin"
var password = "mypassword"
casper.then(function() {
  casper.thenOpen(url);
  casper.setHttpAuth(login, password);
});
 

Кликнуть по ссылке с неким ID в DOM
var but_id = "xxxx"; 

casper.thenClick('#'+but_id );
 

Вывод сообщения в консоль:
casper.echo('Сообщение в консоль');

Запись содержимого некого тега в файл:
var fs = require('fs');
casper.then(function() {
  this.echo('Приступаем к копированию данных элемента с ID=DATA_TABLE в файл');
  var table = casper.evaluate(function(){
    var table = document.querySelector('#DATA_TABLE').innerHTML;
    return table;
  });
  fs.write(outputFile, table, 'w');
});

воскресенье, 22 марта 2020 г.

Установка MySQL, Apache, PHP7 и PHPMYADMIN на CentOS 8

Установка MySQL, Apache, PHP7 и PHPMYADMIN на CentOS 8

1. Узнаем версию дистрибутива:
# cat /etc/*release
Для CentOS8 должно быть:
NAME="CentOS Linux"
VERSION="8 (Core)"
2. Устанавливаем базовые пакеты:
# yum install nano wget git
# yum -y install epel-release
3. Меняем имя сервера:
# hostnamectl set-hostname www.curator.xxx.ru
4. Выключаем SELINUX.
# nano /etc/sysconfig/selinux
Комментируем все, вставляем строку
SELINUX=disabled
Перезагружаемся:
# reboot

5. Установка MySQL.
# yum install mysql mysql-server
Добавляем в автозапуск и запускаем сервис:
# systemctl enable mysqld.service
# systemctl start mysqld.service
Задаем пароль root для сервера MySQL
# mysql_secure_installation
Сначала на вопрос о проверки надежности пароля отвечаем N.
Затем вводим пароль и его подтверждение. 
На остальные вопросы отвечаем ДА (y)

6. Установка Web-сервера APACHE
# yum install httpd
Задание имени серверу
# nano /etc/httpd/conf/httpd.conf
Имя сервера прописывается в директиве ServerName
ServerName www.curator.xxx.ru
Для того что бы сам сервер знал всегда свое имя, добавляем это имя в файл hosts
# nano /etc/hosts
Вписываем строку в конец:
127.0.0.1 www.curator.xxx.ru curator.xxx.ru
Добавляем сервер Apache в скрипт автозапуска и запускам сервис
# systemctl enable httpd.service
# systemctl start  httpd.service
Открываем 80 порт в Firewall
# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --reload
Проверяем работу Apache обратившись к серверу через http и убеждаемся, что через браузер сервер отвечает (http://<IP-сервера>)
Логи у Apache будут в каталоге /etc/httpd/logs/

7. Устанавка PHP (7 версия)
# yum install php
# yum install php-gd php-ldap php-odbc php-mysqlnd 
Перезапускаем web-сервер
# systemctl restart httpd.service
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo(); ?>
Теперь при запросе страницы Info.php (http://<IP-сервера>/info.php ) можно увидеть информацию о модуле PHP

8. Установка PHPMYADMIN
# yum install -y php-json php-mbstring
# DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
# URL="$(echo $DATA | cut -d ' ' -f 3)"
# VER="$(echo $DATA | cut -d ' ' -f 1)"
# curl -o phpMyAdmin-${VER}-all-languages.tar.gz https://files.phpmyadmin.net/phpMyAdmin/${VER}/phpMyAdmin-${VER}-all-languages.tar.gz
В текущую папку должен скачаться файл-архив с последней версией PhpMyAdmin
Например, phpMyAdmin-5.0.2-all-languages.tar.gz
Распаковываем архив
# tar xvf phpMyAdmin-5.0.2-all-languages.tar.gz
Перемещаем весь архив в папку /usr/share/phpmyadmin
# rm phpMyAdmin-*.tar.gz
# mv phpMyAdmin-*/ /usr/share/phpmyadmin
# chown -R apache:apache /usr/share/phpmyadmin/
Создаем директорию для временных файлов phpmyadmin
# mkdir /usr/share/phpmyadmin/tmp
# chmod 777 /usr/share/phpmyadmin/tmp
Создаем файл конфигурации из типового:
# cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php
Редактируем файл конфигурации:
# nano /usr/share/phpmyadmin/config.inc.php
В переменную $cfg['blowfish_secret'] необходимо вписать 32 символа, которые будут использоваться для шифрования пароля в cookies. Например
$cfg['blowfish_secret'] = 'YTRE137dfgsbvqewdsca6eblfjhsgdye';
Создаем базу данных для phpmyadmin:
# mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Добавляем конфигурацию Apache для phpmyadmin
# nano /etc/httpd/conf.d/phpmyadmin.conf
Содержимое файла:
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny> 
      Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

Перезапускаем сервер Apache
# systemctl restart httpd.service
Теперь к странице phpmyadmin можно обратиться так:
http://<IP-сервера>/phpmyadmin



воскресенье, 23 февраля 2020 г.

CentOS7. Использование syslog-ng для отправки данных в базу REDIS

CentOS7. Использование syslog-ng для отправки данных в базу REDIS

Устанавливаем REDIS:
# yum install redis
Запускаем сервис REDIS и включаем его в автозагрузку
# systemctl start redis.service
# systemctl enable redis

Удаляем сервис rsyslog, установленный по умолчанию и устанавливаем syslog-ng на сервер:
# yum -y remove rsyslog
# yum install syslog-ng
# yum install syslog-ng-redis

Редактируем конфигурации 
# nano /etc/syslog-ng/syslog-ng.conf
Добавляем в конфиг перед строчкой
@include "/etc/syslog-ng/conf.d/*.conf" следующие директивы:
################### Настройки ELIS ##########################
source net { udp(ip(0.0.0.0) port(514)); };
destination d_elis {
    redis(
        host(127.0.0.1)
        port(6379)
        command("rpush" "elislogs" "${R_YEAR}-${R_MONTH}-${R_DAY} ${R_HOUR}:${R_MIN}:${R_SEC}|${HOST}|${PRIORITY}|${MSG}")
    );
};
filter f_elis_10 {
    netmask(10.0.0.0/8);
};
filter f_elis_172 {
    netmask(172.16.0.0/12);
};
log { source(net); filter(f_elis_10); destination(d_elis); };
log { source(net); filter(f_elis_172); destination(d_elis); };
##############################################################

Запускаем syslog-ng и добавляем его в автозагрузку
# systemctl start syslog-ng.service
# systemctl enable syslog-ng.service

Все. Сервис syslog-ng работает на 514 порту и все пришедшие данные складываем в очередь ‘elislogs’ базы REDIS