Page_c76a3fcf https://linux-notes.org Unix/ Linux блог, на котором можно найти полезную информацию по настройке ОС и ПО. Thu, 06 Dec 2018 23:05:58 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.7.2 Page_c76a3fcf https://linux-notes.org/ustanovka-tomcat-v-unix-linux/ https://linux-notes.org/ustanovka-tomcat-v-unix-linux/#respond Wed, 21 Jun 2017 11:11:15 +0000 http://linux-notes.org/?p=13072 Установка Tomcat в Unix/Linux Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования. Tomcat используется в качестве самостоятельного веб-сервера, […]

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>

Установка Tomcat в Unix/Linux

Apache Tomcat (ранее — Catalina) — это контейнер сервлетов с открытым исходным кодом, разрабатываемый Apache Software Foundation. Реализует спецификацию сервлетов и спецификацию JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java. Томкат дает возможность запускать приложения для веба, которые содержат ряд утилит для самоконфигурирования.

Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server, а также в качестве контейнера сервлетов в серверах приложений JBoss и GlassFish.

Установка Tomcat в Unix/Linux

Я стараюсь писать статьи со всем необходимым и чтобы снизить поиски траблошутов в интернете. Я расскажу как установить, настроить и работать с  Apache Tomcat в различных Unix/Linux ОС.

Но перед тем как приступим к самой установке, проверяем, установлена ли JAVA на сервере и какая версия:

$ java -version

Если java не установлена в системе, то приступим к установке:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка Java на Debian/Ubuntu/Mint

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

Для других Unix/Linux ОС мне не приходилось устанавливать. По мере возможности, я буду дополнять данный материал новой информацией.

PS: На момент написания статьи, самая актуальная версия — java8 ( 1.8).

Создание пользователя

В идеале,  необходимо создать нового пользователя для запуска Tomcat. В этом примере я создам non-login пользователя «tomcat:

# useradd -s /sbin/nologin -d /usr/local/tomcat9/temp tomcat

ИЛИ:

# useradd -r tomcat --shell /bin/false

Идем дальше.

Установка Tomcat в Debian/Ubuntu/CentOS/Fedora/RedHat/Gentoo/Arch

Я описывал в своей статье, процесс установки tomcat для Ubuntu:

Как установить Tomcat 8.0.5 на Ubuntu

Установка для любого Unix/Linux примитивная — идем на официальный сайт и качаем новую версию томката. Я заюзаю самую последнюю ( но учитывайте дату написания статьи):

# cd /usr/local/src && wget http://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz

Выполним распаковку:

#  tar xfvz /usr/local/src/apache-tomcat-*.tar.gz -C /usr/local/

Старый архив удаляем:

# rm -f /usr/local/src/apache-tomcat-9*.tar.gz

Для удобства, переименуем данный томкат:

# mv /usr/local/apache-tomcat-9.0.1 /usr/local/tomcat9

Меняем права на папку, для того чтобы новый пользователь (tomcat, которого создали в самом начале статьи) мог запустить Tomcat:

# chown -R tomcat. /usr/local/tomcat9

Запуск томката:

$ /usr/local/tomcat9/bin/startup.sh

Для остановки, нужно убить процесс. Но для начала смотри что есть:

# ps -aux | grep tomcat

Я например, делал вот так:

# kill -9 `ps -aux | grep tomcat | grep -Ev "grep"|awk '{print $2}'`

Но это не удобно, немного ниже я расскажу как можно оптимизировать.

Установка Tomcat в Mac OS X

Для начала подключаем brew:

Установка homebrew на Mac OS X

Выполним поиск пакета:

$ brew search tomcat

У меня имеется следующие версии:

tomcat  tomcat-native    tomcat@6     tomcat@7     tomcat@8.0

Для установки используйте:

$ brew install tomcat@8.0

PS: Настройку я не выполнял, по этому — я пока-что упущу данную тему.

Установка Tomcat на другие Unix/Linux ОС

Для других Unix/Linux ОС, можно заюзать docker. Я мало где юзаю его, по этому — пока что нет данной инфы по установке. Но я надеюсь что я выложу.

Настройка Tomcat в Unix/Linux

И так, хотелось бы рассказать как можно запускать томкат. Но для начала, нужно узнать какой механизм инициализации используется:

# ps -s1| awk '{print $4}'| grep -Ev "CMD"

PS: Вот довольно полезное чтиво:

Система инициализации в Unix/Linux

Система инициализации Systemd

Система инициализации SysVinit

Запуск TOMCAT с SysV init

Создадим init скрипт для запуска:

# vim /etc/init.d/tomcat9

И приводим к виду:

#!/bin/bash
#
#https://wiki.debian.org/LSBInitScripts
### BEGIN INIT INFO
# Provides:          tomcat9
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start Tomcat.
# Description:       Start the Tomcat servlet engine.
### END INIT INFO

export CATALINA_HOME=/usr/local/tomcat9
export JAVA_HOME=/usr/local/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH

start() {
 echo "Starting Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/startup.sh
}
stop() {
 echo "Stopping Tomcat 9..."
 /bin/su -s /bin/bash tomcat -c $CATALINA_HOME/bin/shutdown.sh
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Usage : $0 <start|stop|restart>"; exit 1;;
esac

exit 0

Даем права на запуск ( на исполнение):

# chmod 755 /etc/init.d/tomcat9

ИЛИ:

# chmod +x /etc/init.d/tomcat9

Добавляем службу в автозагрузку:

# update-rc.d tomcat9 defaults

Или для CentOS:

# chkconfig --add tomcat9

Запускаем томкат:

# service tomcat9 start

Открываем браузер и смотрим что вышло!

PS: По дефолту, нужно открыть URL-у на 8080-м порту. Я внизу статьи, расскажу как можно будет настроить томкат.

Вот полезное чтиво о том, как создавать SysV init файлы в Unix/Linux:

БУДЕТ, немного позже!

Запуск TOMCAT с systemd

Открываем файл:

# vim /etc/systemd/system/tomcat9.service

И приводим к подобному виду:

[Unit]
Description=Tomcat9
After=syslog.target network.target 

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=CATALINA_PID=/usr/local/tomcat9/tomcat9.pid
Environment=TOMCAT_JAVA_HOME=/usr/bin/java
Environment=CATALINA_HOME=/usr/local/tomcat9
Environment=CATALINA_BASE=/usr/local/tomcat9
Environment=CATALINA_OPTS=
#Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:MaxPermSize=128m -Xms512m -Xmx512m"

ExecStart=/usr/local/tomcat9/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

Чтобы созданный файл применился, перезагрузим службу:

# systemctl daemon-reload

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

# systemctl enable tomcat9

И, перезапускаем:

# systemctl restart tomcat9

Чтобы проверить статус, выполняем:

# systemctl status tomcat9
● tomcat9.service - Tomcat9
   Loaded: loaded (/etc/systemd/system/tomcat9.service; enabled)
   Active: active (running) since Tue 2017-05-09 22:04:58 EEST; 6s ago
  Process: 28528 ExecStop=/bin/kill -15 $MAINPID (code=exited, status=0/SUCCESS)
  Process: 28531 ExecStart=/usr/local/tomcat9/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 28541 (java)
   CGroup: /system.slice/tomcat9.service
           └─28541 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat9/conf/logging.properties -Djava.ut...

May 09 22:04:58 debian systemd[1]: Starting Tomcat9...
May 09 22:04:58 debian startup.sh[28531]: Tomcat started.
May 09 22:04:58 debian systemd[1]: Started Tomcat9.

Как видим, все четко работает.

Вот полезное чтиво о том, как создавать SystemD unit файлы в Unix/Linux:

Пишем systemd Unit файл

Изменить порт в tomcat

Поменять порт:

# vim /usr/local/tomcat9/conf/server.xml

Ищем:

Connector port

и меняем его, после чего — выполняем рестарт томката.

Создание виртуального хоста для tomcat

Виртуальный хостинг предоставляет нам возможность размещать несколько доменов (веб-сайтов) на одном сервере.

Я для примера, создал домен и повесил его на 192.168.1.100. Веб-апликейшены работают на tomcat 9 и исползуют 80-й порт. Я добавил 2 java-приложения через панель — Tomcat Admin. Теперь оба приложения работают по следующим URL-м:

http://192.168.1.100/myapp
http://192.168.1.100/myapp2

Теперь мы хотим запускать оба веб-приложения на основных доменах (tomcat1.linux-notes.org и tomcat2.linux-notes.org). Таким образом, конечные пользователи могут получить доступ к веб-приложению, используя доменное имя.

И так, открываем файл:

# vim /usr/local/tomcat9/conf/server.xml

И приводим к виду:

<Host name="tomcat1.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat1.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat1.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp"
debug="0" reloadable="true"/>
</Host>

<Host name="tomcat2.linux-notes.org" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>www.tomcat2.linux-notes.org</Alias>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="tomcat2.linux-notes_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />

<Context path="" docBase="/usr/local/tomcat9/webapps/myapp2"
debug="0" reloadable="true"/>
</Host>

Суть надеюсь понятна и проста.

После чего, стоит выполнить перезагрузку томката. Я не буду повторятся как это делать, я описывал это в верху.

Настройка SSL для Tomcat

Знаю как, но пока-что не делал.

PS: Вот еще чтиво:

Сконвертировать файл .JKS в .PEM для SSL в Unix/Linux

Идем далее.

Безопасность Tomcat в Linux

Нужно упомянуть про несколько очень важных моментов по безопасности при работе с Tomcat. Рассмотренные выше «ручные» варианты подразумевают обычно запуск из-под root-пользователя. В результате, если вы ещё и стандартно в файле, задающем пользователей (/usr/local/tomcat9/conf/tomcat-users.xml) раскомментируете блок оных:

<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>

…или воспользуетесь распространёнными в интернете примерами получения админских прав типа:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>

…или типа:

<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="tomcat, manager-gui, manager-script"/>

Как-то так, статья «Установка Tomcat в Unix/Linux » завершена.

The post Установка Tomcat в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-tomcat-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-apache-cassandra-klastera-v-unix-linux/ https://linux-notes.org/ustanovka-apache-cassandra-klastera-v-unix-linux/#comments Fri, 21 Apr 2017 15:55:40 +0000 http://linux-notes.org/?p=12434 Установка Apache Cassandra кластера в Unix/Linux Apache Cassandra — это распределённая noSQL система для управления БД которая позволяет создавать высоко- нагруженные и масштабируемые, а так же надежные хранилища больших массивов с данными в виде хэшей. Данный проект, в свое время разрабатывался в компании  Facebook ( до 2009 года), после чего был передан на разработку и […]

The post Установка Apache Cassandra кластера в Unix/Linux first appeared on linux-notes.org.]]>

Установка Apache Cassandra кластера в Unix/Linux

Apache Cassandra — это распределённая noSQL система для управления БД которая позволяет создавать высоко- нагруженные и масштабируемые, а так же надежные хранилища больших массивов с данными в виде хэшей. Данный проект, в свое время разрабатывался в компании  Facebook ( до 2009 года), после чего был передан на разработку и поддержку Apache Software Foundation которая и продолжает развитие Cassandra. Данное ПО используют такие гиганты как Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Apple и Twitter.

Установка Apache Cassandra кластера в Unix/Linux

Данная СУБД, дает возможность создавать линейную масштабируемость ( если объём данных растет). Для хранения данных,  Cassandra юзает ColumnFamily. Данная можель отличается от memcachedb (которые хранят данные только в связке ключ/значение). Cassandra относится к категории хранилищ, повышенно устойчивых к сбоям: помещённые в БД данные автоматически реплицируются на несколько узлов распредёленной сети или даже равномерно распределяются в нескольких дата-центрах. Когда выходит нода из строя, ее функционал подхватывают другие. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурации других узлов. Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language).

Недавно, я описывал простую установку Apache Cassandra в Unix/Linux (для одной ноды):

Установка Apache Cassandra в Unix/Linux

Пришло время описать установку для нескольких нод с Apache Cassandra, которые представляют собой кластер.

Настройка Apache Cassandra кластера в Unix/Linux

Имеется следующие данные о серверах:

  • 192.168.13.163 — Apache_Cassandra_01 (centos 6)
  • 192.168.13.145 — Apache_Cassandra_02 (kali linux 2)
  • 192.168.13.147 — Apache_Cassandra_03 (Debian 8)

Далее редактируем конфиги на каждой их нод.

-===НОДА_1===-

Редактируем конфиги на нодах будущего кластера на 192.168.13.163:

# vim /etc/cassandra/conf/cassandra.yaml

В данном конфиги нужно изменить (прописать) следующее:

  • cluster_name — Имя кластера
    cluster_name: 'cassandra_cluster'
  • seeds — Прописываем адреса нод кластера
    seeds: "192.168.13.163, 192.168.13.145, 192.168.13.147"
  • listen_address — адрес самой ноды
    listen_address: 192.168.13.163
  • rpc_address — адрес самой ноды
    rpc_address: 192.168.13.163

Выполняем настройку следующего файла:

# vim /etc/cassandra/conf/cassandra-topology.properties

И прописываем в него:

# Cassandra Node IP=Data Center:Rack
192.168.13.163=dc1:rac1
192.168.13.145=dc1:rac1
192.168.13.147=dc1:rac1


# default for unknown nodes
default=DC1:r1

И переходим к другим нодам.

-===НОДА_2===-

Редактируем конфиги на нодах будущего кластера на 192.168.13.145:

# vim /etc/cassandra/cassandra.yaml

В данном конфиги нужно изменить (прописать) следующее:

  • cluster_name — Имя кластера
    cluster_name: 'cassandra_cluster'
  • seeds — Прописываем адреса нод кластера
    seeds: "192.168.13.163, 192.168.13.145, 192.168.13.147"
  • listen_address — адрес самой ноды
    listen_address: 192.168.13.145
  • rpc_address — адрес самой ноды
    rpc_address: 192.168.13.145

Выполняем настройку следующего файла:

# vim /etc/cassandra/cassandra-topology.properties

И прописываем в него:

# Cassandra Node IP=Data Center:Rack
192.168.13.163=dc1:rac1
192.168.13.145=dc1:rac1
192.168.13.147=dc1:rac1


# default for unknown nodes
default=DC1:r1

И переходим к другим нодам.

-===НОДА_3===-

Редактируем конфиги на нодах будущего кластера на 192.168.13.147:

# vim /etc/cassandra/cassandra.yaml

В данном конфиги нужно изменить (прописать) следующее:

  • cluster_name — Имя кластера
    cluster_name: 'cassandra_cluster'
  • seeds — Прописываем адреса нод кластера
    seeds: "192.168.13.163, 192.168.13.145, 192.168.13.147"
  • listen_address — адрес самой ноды
    listen_address: 192.168.13.147
  • rpc_address — адрес самой ноды
    rpc_address: 192.168.13.147

Выполняем настройку следующего файла:

# vim /etc/cassandra/cassandra-topology.properties

И прописываем в него:

# Cassandra Node IP=Data Center:Rack
192.168.13.163=dc1:rac1
192.168.13.145=dc1:rac1
192.168.13.147=dc1:rac1


# default for unknown nodes
default=DC1:r1

И переходим к другим нодам если они имеются.

Тестирование Cassandra кластера

Все ноды настроены и объединены в кластер и для запуска, можно использовать следующий вариант:

$ cassandra

Данное действие необходимо выполнить на всех узлах кластера!

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

$ nodetool status

Получил ошибку:

nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.

Исправлением служит следующие действия…. Находим файл cassandra-env.sh и нужно его отредактировать:

# vim /etc/cassandra/conf/cassandra-env.sh

PS: можно заюзать locate для поиска этого файла — Установка locate и updatedb в Unix/Linux

Находим в нем:

# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"

И приводим к виду ( пример):

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=192.168.13.163"

И так на каждой из нод.

На одной из нод, получил еще ошибку:

ERROR 13:20:47 Fatal configuration error
org.apache.cassandra.exceptions.ConfigurationException: Cannot change the number of tokens from 256 to 255
	at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:896) ~[apache-cassandra-2.2.8.jar:2.2.8]
	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:647) ~[apache-cassandra-2.2.8.jar:2.2.8]
	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:518) ~[apache-cassandra-2.2.8.jar:2.2.8]
	at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:310) [apache-cassandra-2.2.8.jar:2.2.8]
	at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:532) [apache-cassandra-2.2.8.jar:2.2.8]
	at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:641) [apache-cassandra-2.2.8.jar:2.2.8]
WARN  13:20:47 No local state, state is in silent shutdown, or node hasn't joined, not announcing shutdown

Решение:

# nodetool flush

Потом:

# service cassandra stop

И:

# rm -rf /var/lib/cassandra/data/system/*

Запускаем кассандру и выполняем сново проверку:

$ nodetool status

Получаем:

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.13.145  128.89 KB  256          62.4%             1a360230-95c7-44ec-a61f-f314e374da6e  rack1
UN  192.168.13.163  89.97 KB   256          67.4%             e92cc1f5-69e2-4fe0-bf4b-28c1bf5b0131  rack1
UN  192.168.13.147  147.77 KB  256          70.2%             27f5040b-072f-4ec7-bb7c-62021a454e39  rack1

Крутотенюшки, все завелось и работает.

PS: Нужно отключить или настроить SELinux:

Как отключить SELinux на CentOS

И, если используется IPtables, то настроить его:

$ iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 7199 -j ACCEPT
$ iptables -A INPUT -p tcp --dport 9160 -j ACCEPT

Основы работы с cqlsh и языком CQL

Выполняем подключение на одну из нод:

$ cqlsh 192.168.13.145

Начнем с того, что создадим ДБ, но правильней всего — стоит называть —  keyspace:

cqlsh> create keyspace example with replication ={'class':'SimpleStrategy','replication_factor':2};
cqlsh> use example;

Данными действиями, я создал кейспейс с названием example. И сейчас, создаем некоторую структуру таблиц:

cqlsh:example> create table my_table ( id int primary key, description text );

Заполняем данными для тестов:

cqlsh:example> insert into my_table (id, description) values (1,'Item 1');
cqlsh:example> insert into my_table (id, description) values (2,'Item 2');
cqlsh:example> insert into my_table (id, description) values (3,'Item 3');

Создали, а теперь проверим что получилось:

cqlsh:example> select * from my_table;

id | description
-----+-------------
1 | Item 1
2 | Item 2
3 | Item 3

(3 rows)

В кассандре нельзя выбрать строку по описанию ( как в мускуле):

cqlsh:example> select id from my_table where description = 'Item 1';
InvalidRequest: code=2200 [Invalid query] message="No secondary indexes
on the restricted columns support the provided operators: "

Строим вторичный индекс:

cqlsh:example> create index on my_table (description);

Вот теперь можно:

cqlsh:example> select id from my_table where description = 'Item 1';

id
-----
1

(1 rows)

Можно вкл\выкл трассировку запросов:

cqlsh:example> tracing on;
Now Tracing is enabled

cqlsh:example> tracing off;
Disabled Tracing.

Чтобы получить инфу о вашем кейспейсе или таблице, используйте:

cqlsh:example> desc table my_table;

... skiped ...

cqlsh:example> desc keyspace example;

... skiped ...

Чтобы удалить строку, используем:

cqlsh:example> delete from my_table where id = 1;

Чтобы удалить таблицу, используем:

cqlsh:example> drop table my_table;

Чтобы удалить кейспейс, используем:

cqlsh:example> drop keyspace example;

Для выхода, используем:

cqlsh:example> exit

Или:

cqlsh:example> quit

Вот и все, статья «Установка Apache Cassandra кластера в Unix/Linux» завершена.

The post Установка Apache Cassandra кластера в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-apache-cassandra-klastera-v-unix-linux/feed/ 1
Page_c76a3fcf https://linux-notes.org/ustanovka-kafka-v-unix-linux/ https://linux-notes.org/ustanovka-kafka-v-unix-linux/#comments Sun, 09 Apr 2017 00:36:29 +0000 http://linux-notes.org/?p=11641 Установка Kafka в Unix/Linux Kafka (Apache Kafka) — Является популярным распределенным брокером сообщений, разработанным для эффективного управления большими объемами данных в режиме реального времени. Кластер Kafka не только хорошо масштабируется (настраивается отказоустойчивость), но также имеет гораздо более высокую пропускную способность по сравнению с другими подобными технологиями, — такими как ActiveMQ и RabbitMQ. Хотя он обычно используется […]

The post Установка Kafka в Unix/Linux first appeared on linux-notes.org.]]>

Установка Kafka в Unix/Linux

Kafka (Apache Kafka) — Является популярным распределенным брокером сообщений, разработанным для эффективного управления большими объемами данных в режиме реального времени. Кластер Kafka не только хорошо масштабируется (настраивается отказоустойчивость), но также имеет гораздо более высокую пропускную способность по сравнению с другими подобными технологиями, — такими как ActiveMQ и RabbitMQ. Хотя он обычно используется в качестве системы обмена сообщениями pub/sub, многие организации также используют его для агрегирования логов, поскольку он обеспечивает постоянное хранение опубликованных сообщений.

Установка Kafka в Unix/Linux

В данной статье, я расскажу как можно установить kafka на различные Unix/Linux ОС.

Установка Kafka на Debian/Ubuntu

Создаем kafka пользователя 

Поскольку Kafka может обрабатывать запросы через сеть, вам следует создать для нее выделенного пользователя.

Примечание. После настройки Apache Kafka рекомендуется создать другого пользователя без полномочий root для выполнения других задач на этом сервере.

В качестве пользователя root создайте пользователя с именем kafka с помощью команды:

# useradd kafka -m

Назначим пароль для созданного пользователя:

# passwd kafka

После этого, созданного юзера вносим в группу sudo( чтобы иметь привилегии, необходимые для установки зависимостей Кафки). Это можно сделать с помощью команды:

# adduser kafka sudo

Теперь ваш пользователь готов. Залогинимся в него:

# su - kafka

Устанавка Java

Если не знаете как выполнить установку Java, JRE — вот мануалы:

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка Java на Debian/Ubuntu/Mint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

Устанавка ZooKeeper

Если не знаете как выполнить установку ZooKeeper — вот мануал:

Установка ZooKeeper в Unix/Linux

По умолчанию он будет прослушивать 2181 порт. Чтобы убедиться, что он работает, подключитесь к нему через Telnet:

# telnet localhost 2181

Вводим слово и нажимаем «enter»:

ruok

Если все работает, то должны получить:

imok

После чего, сеанс сам завершиться.

Устанавка Kafka

Теперь, когда установлены Java и ZooKeeper, настало время загрузить и распаковать Kafka.

$ cd /usr/local/src && wget "http://apache.cp.if.ua/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz"

PS: Вышла новая версия ПО и ее можно скачать (на момент обновления статьи):

$ cd /usr/local/src && wget "http://apache.cp.if.ua/kafka/1.0.0/kafka-1.0.0-src.tgz"

Выполняем распаковку:

#  tar xfvz kafka_*tgz -C /usr/local/

PS: Опция «—strip 1» дает возможность не создавать папку, а распаковать все содержимое в текущее место.

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

# mv /usr/local/kafka_* /usr/local/kafka

Переходим к настройке.

Настройка Kafka

Открываем:

# vim /usr/local/kafka/config/server.properties

По умолчанию, Kafka не позволяет удалять темы. Чтобы иметь возможность удалять темы, добавьте следующую строку в конец файла или, найдите и расскоментируйте данную строку (у меня это 24-я строка):

delete.topic.enable = true

Сохраняем и закрываем файл.

Запускаем скрипт kafka-server-start.sh, используя nohup, чтобы запустить сервер Kafka (также называемый брокер Kafka) в качестве фонового процесса, который не зависит от сеанса оболочки:

# nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties > /var/log/kafka.log 2>&1 &

Подождите несколько секунд и сервер запустится. Чтобы быть уверенным что сервер успешно запущен, проверим kafka.log лог-файл:

...
[2017-04-09 01:35:37,019] INFO starting (kafka.server.KafkaServer)
[2017-04-09 01:35:37,024] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
[2017-04-09 01:35:37,048] INFO Starting ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
[2017-04-09 01:35:37,076] INFO Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:host.name=localhost.localdomain (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.version=1.8.0_121 (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.home=/usr/java/jdk1.8.0_121/jre (org.apache.zookeeper.ZooKeeper)
.....
[2017-04-09 01:35:37,943] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2017-04-09 01:35:38,376] INFO Registered broker 0 at path /brokers/ids/0 with addresses: EndPoint(localhost.localdomain,9092,ListenerName(PLAINTEXT),PLAINTEXT) (kafka.utils.ZkUtils)
....

Теперь у вас есть сервер Kafka, который прослушивает 9092 порт.

Тестирование Kafka

Давайте теперь опубликуем и используем сообщение «Hello, man», чтобы убедиться, что сервер Kafka работает правильно.

Для публикации сообщений вы должны создать «продюсера» для Kafka. Вы можете легко создать это прямо из командной строки, используя скрипт kafka-console-producer.sh:

$ echo "Hello, man" | /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Поскольку темы не существует, Кафка создаст ее автоматически.

Чтобы потреблять сообщения, вы можете создать потребителя Kafka, используя kafka-console-consumer.sh скрипт.

Следующая команда использует сообщения из опубликованной темы. Обратите внимание на использование флага -from-beginning, который присутствует.  Данный параметр покажет сообщение до запуска самого потребителя:

$ /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

Т.к я запускал несколько раз kafka-console-producer.sh, то получил следующее:

Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
Hello, World
Hello, World
Hello, man

Как видим, что все работает отлично!

Установка KafkaT

KafkaT — это небольшой инструмент от Airbnb, который упрощает просмотр информации о вашем кластере Kafka, а также выполняет несколько административных задач из командной строки. Поскольку он написанный на Ruby, то для его использования вам понадобится Ruby. Вам также понадобится пакет build-essential. Установите все необходимое с помощью следующей команды:

# apt-get install ruby ruby-dev build-essential -y

И сейчас, выполняем установку KafkaT:

# gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

Получил ошибку:

ERROR:  Error installing kafkat:
	highline requires Ruby version >= 1.9.3.

Исправляем:

Установка Ruby (несколько версий Ruby) в Unix/Linux

Используйте текстовый редактор для создания нового файла:

# vim ~/.kafkatcfg

Это файл конфигурации, который KafkaT использует для определения каталогов установки и папки, где находятся логи от Kafka. Соответственно, добавьте следующие строки:

{
"kafka_path": "/usr/local/kafka",
"log_path": "/tmp/kafka-logs",
"zk_path": "localhost:2181"
}

Теперь вы готовы использовать KafkaT. Для начала рассмотрим, как вы будете использовать его для просмотра деталей всех разделов Kafka:

$ kafkat partitions

Вы должны увидеть следующий результат:

Topic		Partition	Leader		Replicas						ISRs						
TutorialTopic	0		0		[0]							[0]

PS: Можно построить multi-broker кластер.  Кроме того, вы должны внести следующие изменения в файл server.properties в каждом из них:

  • Значение свойства broker.id должно быть изменено таким образом, чтобы оно было уникальным во всем кластерах
  • Значение свойства zookeeper.connect должно быть изменено таким образом, чтобы все узлы указывали на тот же экземпляр ZooKeeper
  • Если вы хотите иметь несколько экземпляров ZooKeeper для вашего кластера, значение свойства zookeeper.connect на каждом узле должно быть идентичным, разделенным запятыми строкой, в которой перечислены IP-адреса и номера портов для всех экземпляров ZooKeeper.

Теперь, когда все установки сделаны, вы можете снять права администратора (суперпользователя) kafka. Для начала выйдите с оболочки или используйте другого пользователя чтобы сделать следующее действия. Удаляем пользователя kafka из группы sudo:

# deluser kafka sudo

Чтобы еще больше повысить безопасность вашего сервера Kafka, заблокируйте пароль пользователя kafka с помощью команды passwd. Это гарантирует, что никто не сможет напрямую войти через данного пользователя:

# passwd kafka -l

На данный момент только root или пользователь sudo могут войти в систему под именем kafka, введя следующую команду:

# su - kafka

В будущем, если вы хотите разблокировать его, используйте passwd с ключом «-u»:

# passwd kafka -u

Вот и все!

Установка Kafka на CentOS/Fedora/RHEL

Создаем пользователя 

Поскольку Kafka может обрабатывать запросы через сеть, вам следует создать для нее выделенного пользователя.

Примечание. После настройки Apache Kafka рекомендуется создать другого пользователя без полномочий root для выполнения других задач на этом сервере.

В качестве пользователя root создайте пользователя с именем kafka с помощью команды:

# useradd kafka -m

Назначим пароль для созданного пользователя:

# passwd kafka

После этого, созданного юзера вносим в группу sudo( чтобы иметь привилегии, необходимые для установки зависимостей Кафки). Это можно сделать с помощью команды:

# usermod -aG wheel kafka

Теперь ваш пользователь готов. Залогинимся в него:

# su - kafka

Устанавка Java

Если не знаете как выполнить установку Java, JRE — вот мануалы:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

Устанавка ZooKeeper

Если не знаете как выполнить установку ZooKeeper — вот мануал:

Установка ZooKeeper в Unix/Linux

По умолчанию он будет прослушивать 2181 порт. Чтобы убедиться, что он работает, подключитесь к нему через Telnet:

# telnet localhost 2181

Вводим слово и нажимаем «enter»:

ruok

Если все работает, то должны получить:

imok

После чего, сеанс сам завершиться.

Устанавка Kafka

Теперь, когда установлены Java и ZooKeeper, настало время загрузить и распаковать Kafka.

$ cd /usr/local/src && wget "http://apache.cp.if.ua/kafka/0.10.2.0/kafka_2.11-0.10.2.0.tgz"

PS: Вышла новая версия ПО и ее можно скачать (на момент обновления статьи):

$ cd /usr/local/src && wget "http://apache.cp.if.ua/kafka/1.0.0/kafka-1.0.0-src.tgz"

Выполняем распаковку:

#  tar xfvz kafka_*tgz -C /usr/local/

PS: Опция «—strip 1» дает возможность не создавать папку, а распаковать все содержимое в текущее место.

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

# mv /usr/local/kafka_* /usr/local/kafka

Переходим к настройке.

Настройка Kafka

Открываем:

# vim /usr/local/kafka/config/server.properties

По умолчанию, Kafka не позволяет удалять темы. Чтобы иметь возможность удалять темы, добавьте следующую строку в конец файла или, найдите и расскоментируйте данную строку (у меня это 24-я строка):

delete.topic.enable = true

Сохраняем и закрываем файл.

Запускаем скрипт kafka-server-start.sh, используя nohup, чтобы запустить сервер Kafka (также называемый брокер Kafka) в качестве фонового процесса, который не зависит от сеанса оболочки:

# nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties > /var/log/kafka.log 2>&1 &

Подождите несколько секунд и сервер запустится. Чтобы быть уверенным что сервер успешно запущен, проверим kafka.log лог-файл:

...
[2017-04-09 01:35:37,019] INFO starting (kafka.server.KafkaServer)
[2017-04-09 01:35:37,024] INFO Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
[2017-04-09 01:35:37,048] INFO Starting ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
[2017-04-09 01:35:37,076] INFO Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:host.name=localhost.localdomain (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.version=1.8.0_121 (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper)
[2017-04-09 01:35:37,076] INFO Client environment:java.home=/usr/java/jdk1.8.0_121/jre (org.apache.zookeeper.ZooKeeper)
.....
[2017-04-09 01:35:37,943] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2017-04-09 01:35:38,376] INFO Registered broker 0 at path /brokers/ids/0 with addresses: EndPoint(localhost.localdomain,9092,ListenerName(PLAINTEXT),PLAINTEXT) (kafka.utils.ZkUtils)
....

Теперь у вас есть сервер Kafka, который прослушивает 9092 порт.

Тестирование Kafka

Давайте теперь опубликуем и используем сообщение «Hello, man», чтобы убедиться, что сервер Kafka работает правильно.

Для публикации сообщений вы должны создать «продюсера» для Kafka. Вы можете легко создать это прямо из командной строки, используя скрипт kafka-console-producer.sh:

$ echo "Hello, man" | /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Поскольку темы не существует, Кафка создаст ее автоматически.

Чтобы потреблять сообщения, вы можете создать потребителя Kafka, используя kafka-console-consumer.sh скрипт.

Следующая команда использует сообщения из опубликованной темы. Обратите внимание на использование флага -from-beginning, который присутствует.  Данный параметр покажет сообщение до запуска самого потребителя:

$ /usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

Т.к я запускал несколько раз kafka-console-producer.sh, то получил следующее:

Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
Hello, World
Hello, World
Hello, man

Как видим, что все работает отлично!

Установка KafkaT

KafkaT — это небольшой инструмент от Airbnb, который упрощает просмотр информации о вашем кластере Kafka, а также выполняет несколько административных задач из командной строки. Поскольку он написанный на Ruby, то для его использования вам понадобится Ruby. Вам также понадобится необходимые  пакеты. Установите все необходимое с помощью следующей команды:

# yum install ruby ruby-devel rubygems gcc gcc-c++ make openssl-devel ibxml2 libxml2-devel libxslt libxslt-devel kernel-devel   -y

И сейчас, выполняем установку KafkaT:

# gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

Получил ошибку:

ERROR:  Error installing kafkat:
	highline requires Ruby version >= 1.9.3.

Исправляем:

Установка Ruby (несколько версий Ruby) в Unix/Linux

Используйте текстовый редактор для создания нового файла:

# vim ~/.kafkatcfg

Это файл конфигурации, который KafkaT использует для определения каталогов установки и папки, где находятся логи от Kafka. Соответственно, добавьте следующие строки:

{
"kafka_path": "/usr/local/kafka",
"log_path": "/var/log/kafka-logs",
"zk_path": "localhost:2181"
}

PS: Директория «/tmp/kafka-logs» должна быть созданной и иметь чтение-запись!

Теперь вы готовы использовать KafkaT. Для начала рассмотрим, как вы будете использовать его для просмотра деталей всех разделов Kafka:

$ kafkat partitions

Вы должны увидеть следующий результат:

Topic		Partition	Leader		Replicas						ISRs						
TutorialTopic	0		0		[0]							[0]

PS: Можно построить multi-broker кластер.  Кроме того, вы должны внести следующие изменения в файл server.properties в каждом из них:

  • Значение свойства broker.id должно быть изменено таким образом, чтобы оно было уникальным во всем кластерах
  • Значение свойства zookeeper.connect должно быть изменено таким образом, чтобы все узлы указывали на тот же экземпляр ZooKeeper
  • Если вы хотите иметь несколько экземпляров ZooKeeper для вашего кластера, значение свойства zookeeper.connect на каждом узле должно быть идентичным, разделенным запятыми строкой, в которой перечислены IP-адреса и номера портов для всех экземпляров ZooKeeper.

Теперь, когда все установки сделаны, вы можете снять права администратора (суперпользователя) kafka. Для начала выйдите с оболочки или используйте другого пользователя чтобы сделать следующее действия. Удаляем пользователя kafka из группы sudo:

# groupmems -g wheel -d kafka

Чтобы еще больше повысить безопасность вашего сервера Kafka, заблокируйте пароль пользователя kafka с помощью команды passwd. Это гарантирует, что никто не сможет напрямую войти через данного пользователя:

# passwd kafka -l

На данный момент только root или пользователь sudo могут войти в систему под именем kafka, введя следующую команду:

# su - kafka

В будущем, если вы хотите разблокировать его, используйте passwd с ключом «-u»:

# passwd kafka -u

Вот и все!

Установка Kafka на Mac OS X

Устанавливаем Homebrew:

Установка Homebrew на Mac OS X

Для поиска используем команду:

$ brew search kafka

И, устанавливаем нужные пакеты. Я не использовал kafka на Mac OS X. По этому, не могу описать подробную инструкцию.

Статья «Установка Kafka в Unix/Linux» завершена. В следующих статьях, я планировал собрать кластер с Kafka. Но на все времени нет, напишу когда будет время 😉

The post Установка Kafka в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-kafka-v-unix-linux/feed/ 1
Page_c76a3fcf https://linux-notes.org/ustanovka-zookeeper-v-unix-linux/ https://linux-notes.org/ustanovka-zookeeper-v-unix-linux/#respond Sat, 08 Apr 2017 19:48:55 +0000 http://linux-notes.org/?p=11637 Установка ZooKeeper в Unix/Linux ZooKeeper (Apache zookeeper)— это служба, которая выполняет роль распределенного сервиса конфигурирования и синхронизации. Если копнуть дальше, —  это распределенное key/value сторедж с имеющимися свойствами: Пространство ключей образовывает иерархию (нечто подобное как у файловой системе); Значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы […]

The post Установка ZooKeeper в Unix/Linux first appeared on linux-notes.org.]]>

Установка ZooKeeper в Unix/Linux

ZooKeeper (Apache zookeeper)— это служба, которая выполняет роль распределенного сервиса конфигурирования и синхронизации. Если копнуть дальше, —  это распределенное key/value сторедж с имеющимися свойствами:

  • Пространство ключей образовывает иерархию (нечто подобное как у файловой системе);
  • Значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы и каталогами), узел иерархии называется znode;
  • Между  сервером и клиентом имеется двухнаправленная связь (клиент может подписываться как изменение конкретного значения или части иерархии);
  • Возможно создать временную пару ключ/значение, которая существует, пока клиент, её создавший, подключен к кластеру;
  • Все данные должны помещаться в память;
  • Устойчивость к смерти некритического количества узлов кластера.

Установка ZooKeeper в Unix/Linux

Перед тем как перейдем к самой установки zookeeper, нужно установить Java на сервер. Я сейчас приведу несколько полезных инструкций по этой теме:

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка Java на Debian/Ubuntu/Mint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

И после этого действия, переходим к установке утилиты.

Установка ZooKeeper на CentOS/RedHat/Fedora

И так, первое что сделаю — обновлю ОС:

# yum update -y && yum upgrade -y

Можно установить репозиторий и с него установить zookeeper. Но т.к я не особо доверяю сторонним репозиториям, по этому, я установлю по другом ( установка внизу).

Установка ZooKeeper на Debian/Ubuntu

Обновить данные о репозиториях

$ sudo apt-get update -y

И:

$ sudo apt-get upgrade -y

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

# apt-get install zookeeperd -y

PS: Такую настройку не производил.

Установка ZooKeeper для других Unix/Linux

Приведу пример установки на CentOS. И так, перейдем в папку и скачаем последний стабильный релиз утилиты ( на момент написания статьи):

$ cd /usr/local/src &&  wget http://apache-mirror.rbc.ru/pub/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

После скачивания, распаковываем архив:

$ tar -zxf zookeeper-*.tar.gz -C /usr/local

И переименуем папку ( для удобства использования):

# mv -f /usr/local/zookeeper-* /usr/local/zookeeper

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

$ mkdir -p /home/zookeeper/data

Установка завершена, приступим к настройке!

Настройка ZooKeeper в Unix/Linux

Настройка zookeeper, очень простая и сейчас вы в этом убедитесь. В папке conf, имеется простой конфигурационный файл, возьмем его и скопируем:

$ cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg

Открываем файл с настройками:

# vim /usr/local/zookeeper/conf/zoo.cfg

Приводим его к следующему виду:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/home/zookeeper/data
clientPort=2181

Запускаем сервер:

$ /usr/local/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

И выполняем проверку:

$ /usr/local/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: standalone

Видим, что все запустилось и работает хорошо. И сейчас, стоит запустить еще один сервис:

$ /usr/local/zookeeper/bin/zkCli.sh

И еще, можно проверить работу самого zookeeper следующим образом:

$ echo ruok | nc 127.0.0.1 2181

imok

Настройка завершена.

PS: Можно для удобства использования, прописать ENV переменные ( местонахождение скриптов для запуска zookeeper).  Например, открываем bashrc ( можно zsh, если используете ее):

$ vim ~/.bash_profile

И прописываем:

export ZOOKEEEPER_HOME=/usr/local/zookeeper:$ZOOKEEEPER_HOME/bin

Чтобы изменения вступили в силу, выполняем:

$ . ~/.bash_profile

Или:

$ source ~/.bash_profile

Использование упростилось до:

$ zkServer.sh status

Как по мне, довольно стоящее решение.

The post Установка ZooKeeper в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-zookeeper-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-ant-v-unix-linux/ https://linux-notes.org/ustanovka-ant-v-unix-linux/#respond Sat, 01 Apr 2017 21:26:21 +0000 http://linux-notes.org/?p=12228 Установка Ant в Unix/Linux И так, что же такое apache Ant? Apache Ant — это библиотека Java и средство командной строки. Задачей которого — управлять процессами, описанными в файлах сборки, в качестве целей и точек расширения, зависящих друг от друга. Основным известным использованием Ant — является сборка Java-приложений. Ant предоставляет ряд встроенных задач, позволяющих компилировать, собирать, […]

The post Установка Ant в Unix/Linux first appeared on linux-notes.org.]]>

Установка Ant в Unix/Linux

И так, что же такое apache Ant? Apache Ant — это библиотека Java и средство командной строки. Задачей которого — управлять процессами, описанными в файлах сборки, в качестве целей и точек расширения, зависящих друг от друга. Основным известным использованием Ant — является сборка Java-приложений. Ant предоставляет ряд встроенных задач, позволяющих компилировать, собирать, тестировать и запускать приложения Java. Ant также может эффективно использоваться для создания приложений, отличных от Java, например приложений на C/C ++.

Установка Ant в Unix/Linux

Сейчас я расскажу как можно установить данный инструмент на различные Unix/Linux ОС. Для работы Maven потребуется установить JDK, вот некоторые полезные статьи в помощь:

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка Java на Debian/Ubuntu/Mint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

И так, джаву установили. Идем далее….

Установка Ant в CentOS/RedHat/Fedora

-===Использование готового пакета==-

После установки джавы, необходимо посетить официальный сайт и скачать Ant. На момент написания статьи, я использую последнюю версию ПО и вы может использовать ее:

$ cd /usr/local/src && sudo wget http://apache.cp.if.ua//ant/binaries/apache-ant-1.10.1-bin.zip

Выполним распаковку скачанного архива:

# unzip apache-ant-*-bin.zip

Сейчас, перенесу данное ПО в /usr/local/ папку для дальнейшего использования:

# mv apache-ant-*/ /usr/local/

Создам симлинк:

# ln -s /usr/local/apache-ant-* /usr/local/ant

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

Создание ссылок (symlink) в Unix/Linux

Последним что нужно сделать — настроить переменную среду (environment) для Ant, для этого, я создам файл ant.sh в /etc/profile.d/ папке:

# vim /etc/profile.d/ant.sh

и прописываем следующее:

#!/bin/bash

export ANT_HOME=/usr/local/ant
export PATH=${ANT_HOME}/bin:${PATH}
export CLASSPATH=.

После этого, сохраняем и закрываем файл. Сделаем файл исполняемым:

# chmod +x /etc/profile.d/ant.sh

Чтобы прописанные настройки вступили в силу и работали, выполнив следующую команду:

# source /etc/profile.d/ant.sh

Так же, можно обойтись без создания данного файла, для этого — открываем:

$ sudo vim ~/.bashrc

И вставляем:

export ANT_HOME=/usr/local/ant
export PATH=${ANT_HOME}/bin:${PATH}
export CLASSPATH=.

Перезагрузим оболочку:

# . /etc/profile.d/ant.sh

Проверяем, работает ли все корректно. Например, проверим версию Ant:

$ ant -version

Получаем:

Apache Ant(TM) version 1.10.1 compiled on February 2 2017

Как-то так.

-===Использование репозитория и пакетного менеджера==-

Можно установить Ant и через пакетный менеджер, для этого выполняем:

# yum install ant -y

Довольно простая установка.

Установка Ant в Debian/Ubuntu

-===Использование готового пакета==-

Описывал как это можно сделать выше.

-===Использование репозитория и пакетного менеджера==-

Выполняем:

# apt-get install ant -y

Установка Ant на Mac OS X

Для начала, устанавливаем HomeBrew:

Установка HomeBrew на mac OS X 

После чего, выполняем команду:

$ brew search ant

Данная команда покажет какие пакеты имеются.

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

$ brew install ant

Использование  Ant в Unix/Linux

Использование Ant очень простое. Все действия производятся через build.xml файл. Сейчас я приведу очень простые примеры использования данного ПО, но для начала создам папку для будущего проекта (и после чего, перейду в нее):

$ mkdir test-ant && cd $_

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

$ vim build.xml

Прописываем в него следующее:

<?xml version="1.0"?>
   <project name="Hello World Project" default="info">
   
   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!</echo>
   </target>
   
</project>

Чтобы собрать проект, выполните:

$ ant

Получаем:

[root@localhost test-ant]# ant
Buildfile: /home/captain/test-ant/build.xml

info:
     [echo] Hello World - Welcome to Apache Ant!

BUILD SUCCESSFUL
Total time: 0 seconds
[root@localhost test-ant]# 

Первый билд завершился успехом. Круто 🙂

Вот и все. Статья «Установка Ant в Unix/Linux» завершена.

The post Установка Ant в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-ant-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/ustanovka-maven-v-unix-linux/ https://linux-notes.org/ustanovka-maven-v-unix-linux/#respond Sat, 01 Apr 2017 20:32:31 +0000 http://linux-notes.org/?p=12213 Установка Maven в Unix/Linux И так, что же такое Apache Maven? Apache Maven —  фреймворк, который позволяет собирать проекты (Java, C#, Ruby, Scala, и другие языки) в автоматическом режиме на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML. Само maven слово, переводиться с языка Идиш как «собиратель знания». Maven обеспечивает декларативную, а не […]

The post Установка Maven в Unix/Linux first appeared on linux-notes.org.]]>

Установка Maven в Unix/Linux

И так, что же такое Apache Maven? Apache Maven —  фреймворк, который позволяет собирать проекты (Java, C#, Ruby, Scala, и другие языки) в автоматическом режиме на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML. Само maven слово, переводиться с языка Идиш как «собиратель знания».

Maven обеспечивает декларативную, а не императивную (в отличие от средства автоматизации сборки Apache Ant) сборку проекта. В файлах описания проекта содержится его спецификация, а не отдельные команды выполнения. Все задачи по обработке файлов, описанные в спецификации, Maven выполняет посредством их обработки последовательностью встроенных и внешних плагинов.

Установка Maven в Unix/Linux

Сейчас я расскажу как можно установить данный инструмент на различные Unix/Linux ОС. Для работы Maven потребуется установить JDK, вот некоторые полезные статьи в помощь:

Установка JAVA 9 (JDK9) на Debian/Ubuntu/LinuxMint

Установка JAVA (JDK) на CentOS/RHEL/Fedora

Установка Java на Debian/Ubuntu/Mint

Узнать размер Java Heap Memory Size

Установка переменных JAVA_HOME / PATH в Linux

И так, джаву установили. Идем далее….

Установка Maven в CentOS/RedHat/Fedora

-===Использование готового пакета==-

После установки java, загружаем Apache maven с официального сайта или используйте следующую команду для загрузки Apache Maven 3.3.9 (на момент написания статьи — самая последняя и стабильная версия):

$ cd /usr/local/src && wget http://www-eu.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz

Теперь извлекаем скаченный архив, используя следующую команду:

# tar xzf apache-maven-*-bin.tar.gz -C /usr/local

И создаем симлинк:

# ln -s /usr/local/apache-maven-*/ /usr/local/maven

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

Создание ссылок (symlink) в Unix/Linux

Далее, настроим путь Maven:

# vim /etc/profile.d/maven.sh

и прописываем:

#!/bin/bash

export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}

Для того чтобы настройки вступили в силу, выполняем:

$ source /etc/profile.d/maven.sh

Так же, можно обойтись без создания данного файла, для этого — открываем:

$ sudo vim ~/.bashrc

И вставляем:

export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}

Перезагрузим оболочку:

# . ~/.bashrc

-===Использование репозитория и пакетного менеджера==-

Добавляем репозиторий:

$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

И выполняем установку:

# yum install apache-maven -y

И так, проверяем версию maven:

$ mvn -version

Вывод:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T18:41:47+02:00)
Maven home: /usr/local/maven
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.12.1.el6.x86_64", arch: "amd64", family: "unix"

При желании, если вы используете Maven за прокси-сервером, вы должны сделать следующее. Открываем файл:

$ sudo vim ~/.m2/settings.xml

И прописываем:

<settings>
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.host.com</host>
      <port>port_number</port>
      <username>proxy_user</username>
      <password>proxy_user_password</password>
      <nonProxyHosts>www.google.com|*.somesite.com</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

Заменяем некоторые параметры и наслаждаемся работой.

Установка Maven в Debian/Ubuntu

-===Использование пакетного менеджера==-

Первое что нужно сделать, — проверить имеется ли пакет в репозитории:

# apt-cache search maven

Устанавливаем сам Maven:

$ apt-get install maven -y

И так, проверяем версию maven:

$ mvn -version

Вывод:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T18:41:47+02:00)
Maven home: /usr/local/maven
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_121/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.12.1.el6.x86_64", arch: "amd64", family: "unix"

-===Использование готового пакета==-

Данное действие, я описывал в примере выше ( для centOS).

Установка Maven на Mac OS X

Для начала, устанавливаем HomeBrew:

Установка HomeBrew на mac OS X 

После чего, выполняем команду:

$ brew search maven

Данная команда покажет какие пакеты имеются.

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

$ brew install maven

Установка Maven на другие Unix/Linux ОС

Для других Unix/Linux ОС — установка такая же — скачиваем архив, распаковываем его. Прописываем путь к мавену и можно использовать.

На этом, у меня все. Статья «Установка Maven в Unix/Linux» завершена.

The post Установка Maven в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/ustanovka-maven-v-unix-linux/feed/ 0
Page_c76a3fcf https://linux-notes.org/pokazat-skry-t-fajly-i-papki-v-nginx-apache/ https://linux-notes.org/pokazat-skry-t-fajly-i-papki-v-nginx-apache/#respond Thu, 24 Nov 2016 03:19:43 +0000 http://linux-notes.org/?p=11225 Показать/Скрыть файлы и папки в Nginx/Apache Злоумышленник может просматривать файлы, находящиеся в каталоге и потенциально может получить доступ к файлам, по этому, желательно отключать автоиндекс в папке. Но иногда нужно и видеть некоторые файлы в определенной папке и в своей статье «Показать/Скрыть файлы и папки в Nginx/Apache», я расскажу как можно выключить или включить просмотр […]

The post Показать/Скрыть файлы и папки в Nginx/Apache first appeared on linux-notes.org.]]>

Показать/Скрыть файлы и папки в Nginx/Apache

Злоумышленник может просматривать файлы, находящиеся в каталоге и потенциально может получить доступ к файлам, по этому, желательно отключать автоиндекс в папке. Но иногда нужно и видеть некоторые файлы в определенной папке и в своей статье «Показать/Скрыть файлы и папки в Nginx/Apache», я расскажу как можно выключить или включить просмотр содержимого каталога в веб-серверах nginx или apache.

Показать/Скрыть файлы и папки в Nginx

Можно прописать изменения в nginx.conf или в любом другом виртуальном хосте. Безопасная конфигурация для запрашиваемого каталога должен быть похожа:

location /My_some_folder {
         autoindex off; 
}

Данная конфигурация запретить запросы на просмотр My_some_folder каталога. Если нужно включить просмотр содержимого, используйте:

 location /My_some_folder {
          autoindex on; 
          autoindex_exact_size off;
          autoindex_localtime on;
}

Разъяснения:

  • autoindex on — Данная конфигурация разрешит запросы на просмотр My_some_folder каталога.
  • autoindex_exact_size off — Выполняем округление размера для файлов (мб, гб). Если установить в  «on» — то будет показывать точный размер в байтах.
  • autoindex_localtime on — Включаем отображение локального времени на сервере (когда создался, модифицировался и так далее). При использовании «of», будет использовать GMT.
  • charset utf-8; — Можно прописать его для отображения русских файлов и папок в Unix/Linux-системах.

После чего, нужно перезапустить веб-сервер nginx:

# service nginx restart

Показать/Скрыть файлы и папки в Apache

Если нет DirectoryIndex (обычно не сконфигурирован как index.html, index.htm, index.php, welcome.html) присутствует в каталоге, и если mod_autoindex включен (который по умолчанию обычно включен), Apache будет выводить список содержимого каталога;

Отключение mod_autoindex

Самый простой способ, чтобы отключить модуль AUTOINDEX полностью — это отключение самого модуля с apache

# a2dismod autoindex

Можно тключить автоиндекс для определенной папки

Вот пример конфигурации:

<Directory /home/my_site/www>
Options -Indexes
</Directory>

ЗАМЕЧАНИЕ!

  1. -Indexes — Запрещает вывод файлов и папок
  2. +Indexes — Розрешает вывод файлов и папок

Перезапускаем apache/httpd сервер.

Прописать изменения в .htaccess файл

Описанный выше способ также будет работать, если прописать в .htaccess:

Options -Indexes

или чтобы видеть содержимое:

Options +Indexes

Перезапускаем apache/httpd сервер.

Тема «Показать/Скрыть файлы и папки в Nginx/Apache» завершена.

The post Показать/Скрыть файлы и папки в Nginx/Apache first appeared on linux-notes.org.]]>
https://linux-notes.org/pokazat-skry-t-fajly-i-papki-v-nginx-apache/feed/ 0
Page_c76a3fcf https://linux-notes.org/zashhita-ot-clickjacking/ https://linux-notes.org/zashhita-ot-clickjacking/#respond Thu, 17 Nov 2016 19:25:16 +0000 http://linux-notes.org/?p=7321 Защита от ClickJacking Что такое ClickJacking?  ClickJacking — это один из типов атак на сайты. ClickJacking переводится «кража клика». Суть этой атаки заключается в том, что некоторый юзер, который совершает нажатие (делает клик по ссылке) на определенную область ( та которая была сформирована ранее злоумышленником), то на самом деле нажимает на ссылку другого сайта. Часто всего — это используется для […]

The post Защита от ClickJacking first appeared on linux-notes.org.]]>

Защита от ClickJacking

Что такое ClickJacking? 

ClickJacking — это один из типов атак на сайты. ClickJacking переводится «кража клика». Суть этой атаки заключается в том, что некоторый юзер, который совершает нажатие (делает клик по ссылке) на определенную область ( та которая была сформирована ранее злоумышленником), то на самом деле нажимает на ссылку другого сайта. Часто всего — это используется для накрутки ретвитов или лайков.

Как это работает?

Принцип атаки заключается в возможности загружать атакуемый сайт в фрейм.

События могут развиваться:

  • Фрейм атакуемого сайта делается прозрачным.
  • Фрейм атакующего сайта (прозрачный) накладывается на привычный пользователю сайт.

Какие сайты подвержены ClickJacking-у?

Сайты которые дают возможность загружать страницы своих ресурсов во фреймы, которые находятся на других доменных именах. Чтобы загружать страницы (документы) в фреймы с других сайтов служит  заголовок X-Frame-Options.

Данный заголовок имеет 4 состояния ( опций):

  1. DENY он блокирует загрузку сайта во фрейм.
  2. SAMEORIGIN дает возможность загружать домен на уровне одного сайта.
  3. ALLOW-FROM your_domain дает возможность загружать домен в iframe определенного домена.
  4. ALLOW-ALL значение по умолчанию что дает возможность атаки..

Защита от ClickJacking в Apache

Чтобы обеспечить защиту от ClickJacking в http(d)/Apache, нужно добавить заголовок в .htaccess файл.

У заголовка X-Frame-Options:ALLOW-ALL имеется 2 стабильных варианта:

Header always set X-Frame-Options SAMEORIGIN
Header always set X-Frame-Options DENY

И так, если вы хотите запретить загрузку домена во фреймы ( которые могут быть на других сайтах),  то стоит прописать:

#Allow Sameorigin .htaccess
Header always set X-Frame-Options SAMEORIGIN

Если хотите чтобы домен не был загружен в iframe даже на вашем сайте, используйте вторую строку ( вариант с DENY):

Header always set X-Frame-Options DENY

Защита от ClickJacking в Nginx

Для nginx похожие настройки как и для apache. Открываем ваш nginx конфигурационный файл и прописываем:

add_header X-Frame-Options "SAMEORIGIN";

PS: Данную опию нужно вставить после «server»:

nginx clickjacking

Проверка на ClickJacking

В своем терминале можно выполнить команду:

$ curl -IL https://linux-notes.org &>2 | grep X-Frame-Options

X-Frame-Options: DENY

Вот и все! Защита от ClickJacking выполнена.

The post Защита от ClickJacking first appeared on linux-notes.org.]]>
https://linux-notes.org/zashhita-ot-clickjacking/feed/ 0
Page_c76a3fcf https://linux-notes.org/rewrite-pravila-dlya-zameny-propisny-h-bukv-v-strochny-e/ https://linux-notes.org/rewrite-pravila-dlya-zameny-propisny-h-bukv-v-strochny-e/#comments Wed, 20 Apr 2016 19:42:28 +0000 http://linux-notes.org/?p=9980 Rewrite правила для замены прописных букв в строчные Недавно, столкнулся с проблемой, нужно было сделать реврайт для замены прописных букв в строчные. Решил написать статью «Rewrite правила для замены прописных букв в строчные», возможно кому-то еще будет полезным. Rewrite правила для замены прописных букв в строчные для apache Хотите чтобы все ссылки с любыми символами верхнего регистра […]

The post Rewrite правила для замены прописных букв в строчные first appeared on linux-notes.org.]]>

Rewrite правила для замены прописных букв в строчные

Недавно, столкнулся с проблемой, нужно было сделать реврайт для замены прописных букв в строчные. Решил написать статью «Rewrite правила для замены прописных букв в строчные», возможно кому-то еще будет полезным.

Rewrite правила для замены прописных букв в строчные для apache

Хотите чтобы все ссылки с любыми символами верхнего регистра перенаправлялись в нижний регистр с использованием чистого mod_rewrite в файле .htaccess? Конечно, почему бы и нет!

Перенаправление прописных и строчных букв (Uppercase to Lowercase) в .htaccess 

То что я предоставлю, должно идти в самом начале .htaccess (по крайней мере, они должны идти выше любых других RewriteRules). И так, открываем ваш htaccess и прописываем:

RewriteEngine On
RewriteBase /
 
# If there are caps, set HASCAPS to true and skip next rule
RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
 
# Skip this entire section if no uppercase letters in requested URL
RewriteRule ![A-Z] - [S=28]
 
# Replace single occurance of CAP with cap, then process next Rule.
RewriteRule ^([^A]*)A(.*)$ $1a$2
RewriteRule ^([^B]*)B(.*)$ $1b$2
RewriteRule ^([^C]*)C(.*)$ $1c$2
RewriteRule ^([^D]*)D(.*)$ $1d$2
RewriteRule ^([^E]*)E(.*)$ $1e$2
RewriteRule ^([^F]*)F(.*)$ $1f$2
RewriteRule ^([^G]*)G(.*)$ $1g$2
RewriteRule ^([^H]*)H(.*)$ $1h$2
RewriteRule ^([^I]*)I(.*)$ $1i$2
RewriteRule ^([^J]*)J(.*)$ $1j$2
RewriteRule ^([^K]*)K(.*)$ $1k$2
RewriteRule ^([^L]*)L(.*)$ $1l$2
RewriteRule ^([^M]*)M(.*)$ $1m$2
RewriteRule ^([^N]*)N(.*)$ $1n$2
RewriteRule ^([^O]*)O(.*)$ $1o$2
RewriteRule ^([^P]*)P(.*)$ $1p$2
RewriteRule ^([^Q]*)Q(.*)$ $1q$2
RewriteRule ^([^R]*)R(.*)$ $1r$2
RewriteRule ^([^S]*)S(.*)$ $1s$2
RewriteRule ^([^T]*)T(.*)$ $1t$2
RewriteRule ^([^U]*)U(.*)$ $1u$2
RewriteRule ^([^V]*)V(.*)$ $1v$2
RewriteRule ^([^W]*)W(.*)$ $1w$2
RewriteRule ^([^X]*)X(.*)$ $1x$2
RewriteRule ^([^Y]*)Y(.*)$ $1y$2
RewriteRule ^([^Z]*)Z(.*)$ $1z$2
 
# If there are any uppercase letters, restart at very first RewriteRule in file.
RewriteRule [A-Z] - [N]
 
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]

Использование RewriteMap в самом httpd.conf.

Самый быстрый способ справится с поставленной задачей — это использовать способ что ниже. Примите во внимание, что все что я приведу ниже, должно быть прописано в файле httpd.conf (не в .htaccess). И так, открываем свой httpd.conf и вносим изминения:

RewriteEngine on
RewriteBase /
RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/?(.*)$ /${lowercase:$1} [R=301,L]

Вот еще один способ:

RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

Приведу еще один способ для того чтобы вы смогли выбрать 1 на свой вкус. Прежде всего, необходимо добавить эту строку в httpd.conf, чтобы определить RewriteMap:

RewriteMap lc int:tolower

Затем добавьте это правило в корневом каталог .htaccess файла:

RewriteEngine On
RewriteRule ^(.*?[A-Z]+.*)$ /${lc:$1} [L,NE,R=302]

Использование mod_speling в httpd.conf. 

Вы можете проверить что позволяет делать mod_speling модуль в апаче. Я лично не использую его, но многие люди любят его. По этому, приведу пример и с ним:

<IfModule mod_speling.c>
CheckCaseOnly On
CheckSpelling On
</IfModule>

Решаем проблему с WP:

function unFocus_insensitivity() {
if (preg_match('/[A-Z]/', $_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = strtolower($_SERVER['REQUEST_URI']);
$_SERVER['PATH_INFO'] = strtolower($_SERVER['PATH_INFO']);
}
}
add_action('init', 'unFocus_insensitivity');

Использование perl.

Можно использовать perl для того чтобы перевести буквы с одного регистра в другой, для этого используйте:

location ~ [A-Z] {
perl 'sub { my $r = shift; $r->internal_redirect(lc($r->uri)); }';
}

Есть еще несколько способов сделать подобное, но я решил привести наиболее распространенные.

Rewrite правила для замены прописных букв в строчные для nginx

Создаем в конфиге локейшен:

location ~ [A-Z] {
          rewrite ^(.*)$ $scheme://$host$uri_lowercase;
}

Но на мой взгляд, более правильный вариант:

location / {
                    if ( $uri != $uri_lowercase ) {
                           rewrite ^(.*)$ $scheme://$host$uri_lowercase;
                           #rewrite . http://$host$uri_lowercase;
                    }
}

PS: Нужно перед этим инициализировать переменную uri_lowercase

perl_set $uri_lowercase 'sub {
      my $r = shift;
      my $uri = $r->uri;
      $uri = lc($uri);
      return $uri;
    }';

Или если нужно сделать это с исключениями:

if ($uri !~ "ajax|/cart|/account|/admin_Qff_RKTOrM|/boss|/customer|/checkout|persistent") {
 set $case_redirect "1";
 }

 if ($uri ~ [A-Z] ) {
 set $case_redirect "${case_redirect}2";
 }

 if ($case_redirect = "12") {
 rewrite ^(.*)$ $scheme://$host$uri_lowercase;
 }

С использованием perl.

Как я описывал для apache, можно сделать подобное и для nginx:

location ~ [A-Z] {
                   perl 'sub { my $r = shift; $r->internal_redirect(lc($r->uri)); }';
                 }

С использованием lua.

location /captain/ {
                  set_by_lua $request_uri_low "return ngx.arg[1]:lower()" $request_uri;
                  rewrite ^ https://$host$request_uri_low;
                  }

Вот и все. Надеюсь было все понятно. Я завершаю свою тему «Rewrite правила для замены прописных букв в строчные».

The post Rewrite правила для замены прописных букв в строчные first appeared on linux-notes.org.]]>
https://linux-notes.org/rewrite-pravila-dlya-zameny-propisny-h-bukv-v-strochny-e/feed/ 1
Page_c76a3fcf https://linux-notes.org/perenapravlenie-http-na-https-dlya-apache-v-unix-linux/ https://linux-notes.org/perenapravlenie-http-na-https-dlya-apache-v-unix-linux/#respond Sun, 17 Jan 2016 22:50:37 +0000 http://linux-notes.org/?p=9532 Перенаправление HTTP на HTTPS для Apache в Unix/Linux Хотел бы рассказать о том как можно перенаправить любой запрос HTTP на веб-сервере на HTTPS. Это не очень сложно и я ничего нового не расскажу кто это знает, но для новичка — будет полезным. В своей теме «Перенаправление HTTP на HTTPS для Apache в Unix/Linux» я расскажу как […]

The post Перенаправление HTTP на HTTPS для Apache в Unix/Linux first appeared on linux-notes.org.]]>

Перенаправление HTTP на HTTPS для Apache в Unix/Linux

Хотел бы рассказать о том как можно перенаправить любой запрос HTTP на веб-сервере на HTTPS. Это не очень сложно и я ничего нового не расскажу кто это знает, но для новичка — будет полезным. В своей теме «Перенаправление HTTP на HTTPS для Apache в Unix/Linux» я расскажу как это можно сделать.

Для примера, я возьму свой сайт http://linux-notes.org и сделаю перенаправление на https://linux-notes.org

Для начала открываем файл с конфигурацией (для разных Linux ОС файл с конфигурациями может лежать в другом месте):

В CentOS/Fedora/Redhat:

# vim /etc/httpd/conf/httpd.conf

В Debian/Ubuntu:

# vim /etc/apache2/apache2.conf

Убедитесь что модуль mod_rewrite.so загружен (имеется строчка):

[...]
LoadModule rewrite_module modules/mod_rewrite.so
[...]

Если ее нет, то пропишите.

Перенаправление HTTP на HTTPS для Apache в Unix/Linux

Прописываем в свой файл с конфигурацией:

[...]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
[...]

PS: Лучше это сделать в файле htaccess (в домашней директории самого сайта)!

Принудительное перенаправление HTTP на HTTPS для Apache в Unix/Linux

Для того, чтобы перенаправить весь веб-трафик на HTTPS (принудительно)вставить следующие строки кода в файле .htaccess в корневой папке вашего сайта.

Важно: Если у вас есть существующий код в .htacess, добавьте эти строки — выше:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www. linux-notes.org/$1 [R,L]

Не забудьте заменить www. linux-notes.org на ваш домен.

Чтобы заставить конкретный домен использовать HTTPS, используйте следующие строки кода в файле .htaccess в корневой папке вашего сайта:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^linux-notes\.org [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.linux-notes.org/$1 [R,L]

Не забудьте заменить linux-notes\.org с вашим доменом. Кроме того, вам нужно заменить www. linux-notes.org с вашим действительным именем домена.

Если вы хотите заставить принудительно использовать SSL на определенную папку, то пропишите:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} folder
RewriteRule ^(.*)$ https://www. linux-notes.org/folder/$1 [R,L]

После чего, необходимо перезапустить службу с apache:

# service httpd restart

Это для rpm’s ОС, а для deb’s — это выглядит так:

# service apache2 restart

PS: Если прописать в htaccess, то перезапускать web-сервер не нужно.

На этом все, статья «Перенаправление HTTP на HTTPS для Apache в Unix/Linux» завершена.

The post Перенаправление HTTP на HTTPS для Apache в Unix/Linux first appeared on linux-notes.org.]]>
https://linux-notes.org/perenapravlenie-http-na-https-dlya-apache-v-unix-linux/feed/ 0