Установка Apache JMeter в Ubuntu

Apache JMeter — инструмент для нагрузочного тестирования.

Для Apache JMeter необходимо установить Java, смотрите мою статью — Установка Java в Linux.

Для примера установлю Apache JMeter в Ubuntu Desktop 18.04.

После того как Java установлен, скопируем ссылку на архив с последней версией Apache JMeter с официального сайта http://jmeter.apache.org/download_jmeter.cgi и скачаем его:

wget http://apache.volia.net//jmeter/binaries/apache-jmeter-4.0.tgz

Распакуем архив:

tar -xf apache-jmeter-4.0.tgz

Запустим:

cd apache-jmeter-4.0/bin/
./jmeter

После запуска отобразилось сообщение, что в графическом режиме Apache JMeter можно создавать тесты, а выполнять их можно только из терминала, например так:

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

Кстати Apache JMeter в Windows запускается через файл jmeter.bat.

Загрузка и выгрузка модулей в Linux

В этой статье я приведу пример ручной и автоматической загрузки/выгрузки моделей в Linux.

Сначала переключимся на root пользователя если не под ним, например в Ubuntu это можно сделать так:

sudo su

Посмотрим список загруженных модулей:

lsmod

Посмотреть загружен ли конкретный модуль можно так (где NAME — имя модуля):

lsmod | grep NAME

Для загрузки/выгрузки модуля используются команды:

modprobe NAME
modprobe -r NAME

Когда выполняется команда загрузки модуля, modprobe ищет его в директории:

/lib/modules/$(uname -r)

Можно посмотреть какие есть например так:

ls /lib/modules/$(uname -r)
ls /lib/modules/$(uname -r)/kernel/net/netfilter/

Для загрузки/выгрузки модуля из другой директории можно выполнить команды:

insmod /path/to/module/name.ko
rmmod /path/to/module/name.ko

Посмотреть информацию о модуле и возможные параметры запуска можно так:

modinfo NAME

Можно посмотреть конкретную информацию о модуле, например где он находится:

modinfo --filename NAME

Чтобы модули запускались в самом начале запуска системы, то их нужно прописать в файл /etc/modules.conf, а чтобы запускались в последнюю очередь после запуска всех служб, то в файл /etc/rc.local.
Помимо файла /etc/modules.conf есть также директория /etc/modprobe.d/, где находятся подобные файлы с расширением .conf.

Например в rc.local модули прописываются так:

/sbin/modprobe NAME

В файле modules.conf прописываются так:

nf_nat_ftp

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

blacklist NAME

Установка панели управления Webuzo

Для примера установлю панель управления Webuzo в Ubuntu 16.04 LTS.

Переключимся на root пользователя:

sudo su

Скачаем скрипт установки:

wget -N http://files.webuzo.com/install.sh

Делаем файл скрипта исполняемым:

chmod 0755 install.sh

Запустим скрипт установки:

./install.sh

Дождемся завершения установки.
По завершению установки у меня отобразилось следующее:

———————————————————
Welcome to Webuzo Installer
———————————————————
Installation Logs : tail -f /root/webuzo-install.log
———————————————————
1) Installing Libraries and Dependencies
2) Setting UP WEBUZO
3) Downloading and Installing Webuzo
4) Downloading System Apps
—————————————————————-
/$$ /$$ /$$$$$$$$ /$$$$$$$ /$$ /$$ /$$$$$$$$ /$$$$$$
| $$ /$ | $$| $$_____/| $$__ $$| $$ | $$|_____ $$ /$$__ $$
| $$ /$$$| $$| $$ | $$ \ $$| $$ | $$ /$$/ | $$ \ $$
| $$/$$ $$ $$| $$$$$ | $$$$$$$ | $$ | $$ /$$/ | $$ | $$
| $$$$_ $$$$| $$__/ | $$__ $$| $$ | $$ /$$/ | $$ | $$
| $$$/ \ $$$| $$ | $$ \ $$| $$ | $$ /$$/ | $$ | $$
| $$/ \ $$| $$$$$$$$| $$$$$$$/| $$$$$$/ /$$$$$$$$| $$$$$$/
|__/ \__/|________/|_______/ \______/ |________/ \______/
—————————————————————-
Congratulations, Webuzo has been successfully installed
You can now configure Softaculous Webuzo at the following URL :
http://192.168.1.9:2004/
—————————————————————-
Thank you for choosing Webuzo !
—————————————————————-

После этого я открыл в браузере http://192.168.1.9:2004/, указал придуманное имя пользователя и пароль, email и имя домена/IP на котором будет работать Webuzo.
На этом установка была завершена и отобразилась следующая информация:

You can login to the Webuzo Admin Panel using your root details at the following URL :
http://192.168.1.9:2004/
To start installing Apps you can login with the following details :
URL : http://192.168.1.9:2002/
Username : admin
Password : (the one you entered)
We request you to please register for updates and notifications at :
http://www.softaculous.com/board/index.php?act=register It also inspires us when you register. Registration is free and just a one minute job.
If you need any support you can always count on us. Just drop in at our Support Board:
http://www.webuzo.com/forums
Alternatively, you can contact us via Email at support@webuzo.com
Thank you for choosing Webuzo!

Так как установлена бесплатная версия Webuzo, то много утилит и модулей станут доступны только после обновления на премиум версию Webuzo.

Установка Certbot в Ubuntu

На тесте установлю ACME клиент Certbot в Ubuntu 16.04 (xenial), который поможет получить бесплатные SSL сертификаты Let’s Encrypt на 90 дней и автоматически обновлять их.
Для других версий Ubuntu клиент Certbot устанавливается аналогично.

Первым делом добавим репозиторий Certbot и выполним установку:

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

Теперь запустим Certbot чтобы получить SSL сертификат:

sudo certbot --apache

Чтобы вручную внести изменения в конфигурацию Apache2 и Certbot не изменял её, можно выполнить команду:

sudo certbot --apache certonly

После запуска команды, необходимо выбрать сайт для которого будет запрашиваться SSL сертификат.

После получения сертификата отобразилась информация:

IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-08-01. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the «certonly» option. To non-interactively renew *all* of
your certificates, run «certbot renew»
— Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.

Создался отдельный файл конфигурации сайта для HTTPS, а в том что был добавились строки выполняющие переадресацию с HTTP на HTTPS, общем аналогичные изменения как я описывал в этой статье — Установка и настройка Let’s Encrypt SSL.

Для автоматического обновления необходимо выполнить команду:

sudo certbot renew

Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON

Пример добавления в Cron (каждый понедельник в 3:15):

sudo crontab -e
15 3 * * 1 certbot renew >> /var/log/certbot-renew.log

Для тестового обновления можно выполнить команду (конфигурация и сертификаты не будут затронуты):

sudo certbot renew --dry-run

Если срок сертификата еще не истекает и запустить обновление, то ничего не произойдет.

Установка и настройка Let’s Encrypt SSL

На тесте установлю Let’s Encrypt котоый позволяет установить бесплатные SSL сертификаты на 90 дней и автоматически перевыдавать их.

Допустим на Ubuntu Server установлен Apache2 и есть один сайт, для которого мы настроили один файл конфигурации /etc/apache2/sites-available/test.conf, и включили его:

sudo a2ensite test
sudo service apache2 restart

Смотрите пример конфигурации в моей статье — Установка и настройка веб-сервера Apache2
Сайт работает по HTTP на 80, теперь приступим к установке Let’s Encrypt:

sudo apt-get update
sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Перейдем в директорию с Let’s Encrypt и запросим сертификат для сайта:

cd /opt/letsencrypt
sudo ./letsencrypt-auto --apache -d example.com

Можно также запросить и для www поддомена:

sudo ./letsencrypt-auto --apache -d example.com -d www.example.com

Я заменил в статье настоящее имя сайта на example.com. Чтобы получить сертификат, сайт должен быть доступен по доменному имени из интернета.
Для ресурсов внутри сети, с серыми IP, получить сертификат не получится.

После получения сертификата у меня создался и активировался еще один файл конфигурации /etc/apache2/sites-available/test-le-ssl.conf со следующим содержимым:

<IfModule mod_ssl.c>
<VirtualHost *:443>
     ServerName example.com
     DocumentRoot /var/www/test/

     <Directory /var/www/test>
     Options -Indexes
     AllowOverride All
     Order allow,deny
     allow from all
     </Directory>

     ErrorLog /var/log/test.error.log
     CustomLog /var/log/test.access.log combined
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Так как во время получения сертификата я согласился на переадресацию HTTP запросов на HTTPS, то в конце моего файла конфигурации /etc/apache2/sites-available/test.conf добавилось следующее:

RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

По истечении срока действия сертификата, его можно обновить командой:

sudo /opt/letsencrypt/letsencrypt-auto renew

Команду также можно добавить в Cron для автоматического обновления, смотрите мою статью — Использование и настройка CRON

Пример добавления в Cron (каждый понедельник в 3:15):

sudo crontab -e
15 3 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/letsencrypt-renew.log

Если срок сертификата еще не истекает и выполнить команду обновления, то ничего не произойдет:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
——————————————————————————-
Processing /etc/letsencrypt/renewal/example.com.conf
——————————————————————————-
Cert not yet due for renewal
——————————————————————————-
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2018-08-01 (skipped)
No renewals were attempted.
——————————————————————————-

Смотрите также:
Установка Certbot в Ubuntu

Установка Docker CE в Ubuntu

Docker CE — программная платформа для развертывания приложений, упаковывает приложения в контейнер, добавляя в него библиотеки и все необходимые зависимости для запуска приложения, что позволяет быстро запускать код почти в любой среде. Есть бесплатная версия Docker Community Edition (CE) и расширенная Enterprise Edition (EE).

Для примера установлю Docker CE в Ubuntu 16.04 LTS (Xenial).

Удалим старые версии Docker, если они установлены:

sudo apt-get remove docker docker-engine docker.io

Добавим официальные GPG ключ Docker и убедимся что последняя команда покажет 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

Теперь необходимо добавить stable репозиторий Docker:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

И запустить установку из него:

sudo apt-get update
sudo apt-get install docker-ce

Если необходимо установить конкретную версию, то можно указать:

apt-cache madison docker-ce
sudo apt-get install docker-ce=18.03.0.ce

Но при обновлении системы будет выполнено обновление до последней.

После установки, Docker будет автоматически запущен, убедимся в этом:

sudo docker run hello-world

Для удаления Docker CE со всеми данными необходимо выполнить:

sudo apt-get purge docker-ce
sudo rm -rf /var/lib/docker

Настройка Fail2Ban под ProFTPd

Допустим Fail2Ban уже установлен, если нет, то смотрите мою статью — Установка и настройка Fail2ban.

В Fail2Ban по умолчанию уже есть фильтры для ProFTPd и он знает что файл логов находится по адресу /var/log/proftpd/proftpd.log, поэтому достаточно создать файл:

sudo nano /etc/fail2ban/jail.d/proftpd.local

И внести данные ниже, тем самым активировав проверку лог файла /var/log/proftpd/proftpd.log:

[proftpd]
enabled = true
bantime = 86400

Перезапустим Fail2Ban чтобы применить изменения:

sudo service fail2ban restart

Можно проверить статус:

sudo fail2ban-client status proftpd

Решение WARNING: The «syslog» option is deprecated

Заметил однажды предупреждение в файле /var/log/samba/log.:

[2018/04/13 20:51:05.280655,  1] ../lib/param/loadparm.c:1629(lpcfg_do_global_parameter)
  WARNING: The "syslog" option is deprecated

Как и сообщается, опция «syslog» устарела, и чтобы предупреждение не появлялось, её необходимо убрать из конфигурации.

Я открыл файл конфигурации в текстовом редакторе:

sudo nano /etc/samba/smb.conf

Нашел эту опцию:

syslog = 0

И закомментировал её:

#syslog = 0

После изменений необходимо перезапустить samba, можно так:

sudo service samba restart
sudo restart smbd
sudo restart nmbd

После этого предупреждение больше не появлялось.

Смотрите также:
Установка и настройка Samba в Linux

Установка Magento в Ubuntu

На тесте установлю Magento в Ubuntu Server 16.04 & PHP 7.

Сначала обновим систему и установим необходимые компоненты:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 php mysql-server mysql-client openssl libcurl3 php-curl php-gd php-mcrypt php-xml php-intl php-zip php-mbstring php-soap php-mysql php-cli php-json libapache2-mod-php php-xsl composer

Откроем файл конфигурации PHP в текстовом редакторе:

sudo nano /etc/php/7.0/apache2/php.ini

И установим или убедимся что memory_limit не меньше 512M:

memory_limit = 512M

Активируем необходимые модули:

sudo a2enmod rewrite
sudo phpenmod mcrypt

В конфигурации apache2 добавим сайт или отредактируем стандартный:

sudo nano /etc/apache2/sites-enabled/000-default.conf

Добавим внутри тегов VirtualHost параметры:

<Directory /var/www/html/magento_test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>

Перезапустим apache2 чтобы применить изменения:

sudo service apache2 restart

Подключимся к MySQL серверу, создадим базу и пользователя:

mysql -u root -p
CREATE DATABASE magento;
CREATE USER magento@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON magento.* TO magento@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

Скачаем архив с последней версией Magento и распакуем его:

cd /tmp/
wget https://github.com/magento/magento2/archive/2.2.3.tar.gz
tar xzvf 2.2.3.tar.gz

Переместим файлы в директорию веб-сервера:

sudo mv magento2-2.2.3 /var/www/html/magento_test

Выполним команду:

cd /var/www/html/magento_test
sudo composer install

Установим на файлы права, владельца и группу под которым работает веб-сервер:

cd /var/www/html/magento_test
sudo find var vendor pub/static pub/media app/etc -type f -exec chmod u+w {} \;
sudo find var vendor pub/static pub/media app/etc -type d -exec chmod u+w {} \;
sudo chmod u+x bin/magento
sudo chown -R www-data:www-data /var/www/html/magento_test/

Откроем в браузере http://SERVER/magento_test и продолжим процесс установки следуя инструкциям, запомним логин/пароль и «Magento Admin Address» так как по нему будет открываться админ панель.

После установки посмотрим где находится php чтобы правильно указать путь в cron заданиях (обычно он в /usr/bin/php):

which php

Откроем crontab:

sudo crontab -u www-data -e

И добавим задания:

* * * * * /usr/bin/php /var/www/html/magento_test/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/html/magento_test/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/html/magento_test/update/cron.php >> /var/www/html/magento_test/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/html/magento_test/bin/magento setup:cron:run >> /var/www/html/magento_test/var/log/setup.cron.log

На этом установка Magento завершена.

Смотрите также:
Решение ошибки «Autoload error» при установке Magento
Использование и настройка CRON

Решение ошибки «Autoload error» при установке Magento

Однажды устанавливал Magento в Ubuntu и заметил в браузере следующую ошибку:

Autoload error

Также присутствовали куски кода, в зависимости от открытой страницы.

В моем случае ошибка возникала из-за неустановленного libapache2-mod-php, установил его командой:

sudo apt-get install libapache2-mod-php

После это ошибка не появлялась и я продолжил установку Magento.