1.Общее описание, структурная схема и жизненный цикл тестирования Yandex.Tank 2.Базовая пред подготовка сервера с Yandex.Tank 3.Установка Yandex.Tank 4.Создание профиля тестирования/сценария нагрузки для Yandex.Tank 1.Общее описание, структурная схема и жизненный цикл тестирования Yandex.Tank Яндекс.Танк — инструмент для проведения нагрузочного тестирования, разрабатываемый в компании Яндекс и распространяемый под лицензией LGPL. В основе инструмента лежит высокопроизводительный асинхронный […]
Архивы рубрики ‘Web’
Установка Apache Tomcat сервера на Ubuntu 16
1.Установка Java
1 |
# apt-get update && apt-get install default-jdk |
1 |
# update-alternatives --config java |
1 |
# nano /etc/environment |
1 |
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" |
1 |
# source /etc/environment |
1 |
# echo ${JAVA_HOME} |
1 |
/usr/lib/jvm/java-8-openjdk-amd64 |
1 |
# update-java-alternatives -l |
1 |
java-1.8.0-openjdk-amd64 1081 /usr/lib/jvm/java-1.8.0-openjdk-amd64 |
2.Установка Tomcat Последняя 8.5.X-версия доступна по адресу http://tomcat.apache.org/download-80.cgi Создаем группу и пользователя tomcat, под которыми будет запускаться Tomcat-сервер
1 |
# groupadd tomcat |
1 |
# useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat |
1 |
# cd /tmp/ && wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.34/bin/apache-tomcat-8.5.34.tar.gz |
1 |
# tar xvzf apache-tomcat-8*.tar.gz -C /opt/tomcat/ --strip-components=1 && rm /tmp/apache-tomcat-8* |
1 |
# chown -R tomcat /opt/tomcat/ |
Создание UNIT-файла и запуск Tomcat
1 |
# nano /etc/systemd/system/tomcat.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=/opt/tomcat/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target |
1 |
# systemctl daemon-reload |
1 |
# systemctl start tomcat |
1 |
# systemctl status tomcat |
3.Настройка Iptables
1 |
# iptables -N tomcat |
1 |
# iptables -A INPUT -p tcp --dport 8080 -j tomcat |
1 |
# iptables -I tomcat -s my_ip_address -j ACCEPT |
1 |
# apt-get update && apt-get install netfilter-persistent && /etc/init.d/netfilter-persistent save |
4.Настройка Tomcat […]
Установка, настройка и оптимизация Apache mpm-itk на Ubuntu16
1.Установка Apache
1 |
# apt-get install apache2 |
2.Установка модуля libapache2-mpm-itk
1 |
# apt-get install libapache2-mpm-itk |
3.Включение модуля mpm-itk
1 |
# a2enmod mpm_itk |
4.Настройка виртуального хоста Apache
1 |
# nano /etc/apache2/sites-enabled/000-default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<VirtualHost *:80> ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/html <Directory "/var/www/html"> AllowOverride All Options -Indexes +FollowSymLinks </Directory> <IfModule mpm_itk_module> AssignUserId www-data www-data </IfModule> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined </VirtualHost> |
5.Перезагрузка Apache и проверка подключенных модулей
1 |
# systemctl restart apache2 |
Проверка подключенных модулей
1 |
# apachectl -t -D DUMP_MODULES | grep mpm |
1 2 |
mpm_itk_module (shared) mpm_prefork_module (shared) |
Либо
1 |
# a2query -m | grep mpm |
1 2 |
mpm_itk (enabled by maintainer script) mpm_prefork (enabled by maintainer script) |
Просмотр типа MPM
1 |
# a2query -M |
1 |
Prefork |
Здесь подключается модуль mpm-itk
1 |
# nano /etc/apache2/mods-enabled/mpm_itk.load |
1 2 |
# Depends: mpm_prefork LoadModule mpm_itk_module /usr/lib/apache2/modules/mpm_itk.so |
Настройка параметров mpm Prefork
1 |
# nano /etc/apache2/mods-enabled/mpm_prefork.conf |
1 2 3 4 5 6 7 |
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxRequestWorkers 150 MaxConnectionsPerChild 4096 </IfModule> |
Немного безопасности
1 |
# nano /etc/apache2/conf-available/security.conf |
1 2 |
ServerTokens Prod ServerSignature Off |
Просмотр […]
Установка и настройка нескольких экземпляров Odoo на одном сервере с использованием Nginx в качестве proxy-сервера на Ubuntu14
Установим две копии Odoo с разными системными пользователями, разными PostgreSQL-пользователями, разными базами данных, на разных xml-портах. В качестве frontend-сервера установим Nginx, который будет проксировать запросы на Odoo-приложения. 1.Установка всех необходимых зависимостей/пакетов
1 |
# apt-get install subversion git bzr bzrtools python-pip postgresql postgresql-server-dev-9.3 python-all-dev python-dev python-setuptools libxml2-dev libxslt1-dev libevent-dev libsasl2-dev libldap2-dev pkg-config libtiff5-dev libjpeg8-dev libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev liblcms2-utils libwebp-dev tcl8.6-dev tk8.6-dev python-tk libyaml-dev fontconfig |
2.Добавление системного пользовател(odoo) и создание необходимых каталогов
1 |
# adduser --system --home=/opt/odoo --group odoo |
Создание каталога для хранения лог-файлов Odoo
1 |
# mkdir /var/log/odoo |
Создание каталога для установки в него Odoo-приложения […]
Настройка Let’s Encrypt SSL-сертификата на Ubuntu/Centos
1.Установка Let’s Encrypt При использовании Nginx в качестве Web-сервера Установка git Ubuntu/Debian
1 |
# apt-get install git |
Centos
1 |
# yum install git |
1 |
# cd /usr/local/ |
1 |
# git clone https://github.com/letsencrypt/letsencrypt |
1 |
# cd /usr/local/letsencrypt/ |
Остановка Nginx, который прослушивает 80 порт. Перед генерацией сертификатов необходимо убедиться, что все имена домена(включая www-поддомен ,если он должен быть включен в сертификат), для которых генерируются сертификаты имеют запись типа А в ДНС. Также необходимо остановить […]
Установка и настройка Jenkins на Ubuntu
Установка Java
1 |
# apt-get update && apt-get install default-jdk |
1 |
# update-alternatives --config java |
1 2 |
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java Nothing to configure. |
1 |
# nano /etc/environment |
1 |
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" |
1 |
# source /etc/environment |
1 |
# echo $JAVA_HOME |
1 |
/usr/lib/jvm/java-8-openjdk-amd64 |
Установка Jenkins 1.Добавление ключа и репозитария в apt
1 |
# wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - |
1 |
OK |
1 |
# sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' |
2.Обновление кеша пакетов
1 |
# apt-get update |
3.Устанавка Jenkins
1 |
# apt-get install jenkins |
Jenkins по умолчанию доступен на порту 8080 http://servername:8080 Если необходимо использовать другой порт, то изменяем в файле /etc/default/jenkins
1 |
# nano /etc/default/Jenkins |
1 2 3 |
# port for HTTP connector (default 8080; disable with -1) HTTP_PORT=8888 |
Файл […]
Ускорение WordPress за счет кеширования в memcached с помощью плагина W3 Total Cache
Установка memcached ранее рассматривалась Установка memcached в Ubuntu Установка memcached в Centos 1.Установка плагина w3 total cache через менеджер плагинов 2.Проверка/добавление наличие строки подключения плагина в файле wp-config.php
1 |
# cat -n /path_to_site/wp-config.php | less |
1 2 3 4 5 |
1 <?php 2 /** Enable W3 Total Cache */ 3 define('WP_CACHE', true); // Added by W3 Total Cache 4 5 /** |
3.Настройка Nginx виртуального хоста(включаем сжатие и определяем типы файлов для сжатия ) в http-секции
1 |
# nano /etc/nginx/conf.d/virtualhostname.conf |
1 2 3 4 |
server { .......... include /path_to_site/nginx.conf; } |
Проверка наличия файла nginx.conf в […]
Установка и настройка GeoIP для Nginx на Ubuntu
1.Проверка того,что Nginx собран с поддержкой geoip-модуля
1 |
# nginx –V |
1 2 |
……………… --with-http_geoip_module |
2. Скачивание GeoIP-баз
1 |
# mkdir /etc/nginx/geoip |
1 |
# cd /etc/nginx/geoip |
1 |
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz |
1 |
# gunzip GeoIP.dat.gz |
1 |
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz |
1 |
# gunzip GeoLiteCity.dat.gz |
3. Настройка GeoIP в Nginx
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 5 6 |
http { ………………. geoip_country /etc/nginx/geoip/GeoIP.dat; geoip_city /etc/nginx/geoip/GeoLiteCity.dat; ……………………….. } |
1 |
# nano /etc/nginx/fastcgi_params |
(связка Nginx+PHP-FPM используется)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
### SET GEOIP Variables ### fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code; fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3; fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name; fastcgi_param GEOIP_CITY_COUNTRY_CODE $geoip_city_country_code; fastcgi_param GEOIP_CITY_COUNTRY_CODE3 $geoip_city_country_code3; fastcgi_param GEOIP_CITY_COUNTRY_NAME $geoip_city_country_name; fastcgi_param GEOIP_REGION $geoip_region; fastcgi_param GEOIP_CITY $geoip_city; fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code; fastcgi_param GEOIP_CITY_CONTINENT_CODE $geoip_city_continent_code; fastcgi_param GEOIP_LATITUDE $geoip_latitude; fastcgi_param GEOIP_LONGITUDE $geoip_longitude; |
Проверка рабостоспособности
1 |
# nano /path_to_sitename/geoiptest.php |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<html> <body> <?php $geoip_country_code = getenv(GEOIP_COUNTRY_CODE); $geoip_country_code3 = getenv(GEOIP_COUNTRY_CODE3); $geoip_country_name = getenv(GEOIP_COUNTRY_NAME); $geoip_city_country_code = getenv(GEOIP_CITY_COUNTRY_CODE); $geoip_city_country_code3 = getenv(GEOIP_CITY_COUNTRY_CODE3); $geoip_city_country_name = getenv(GEOIP_CITY_COUNTRY_NAME); $geoip_region = getenv(GEOIP_REGION); $geoip_city = getenv(GEOIP_CITY); $geoip_postal_code = getenv(GEOIP_POSTAL_CODE); $geoip_city_continent_code = getenv(GEOIP_CITY_CONTINENT_CODE); $geoip_latitude = getenv(GEOIP_LATITUDE); $geoip_longitude = getenv(GEOIP_LONGITUDE); echo 'country_code: '.$geoip_country_code.'<br>'; echo 'country_code3: '.$geoip_country_code3.'<br>;'; echo 'country_name: '.$geoip_country_name.'<br>'; echo 'city_country_code: '.$geoip_city_country_code.'<br>'; echo 'city_country_code3: '.$geoip_city_country_code3.'<br>'; echo 'city_country_name: '.$geoip_city_country_name.'<br>'; echo 'region: '.$geoip_region.'<br>'; echo 'city: '.$geoip_city.'<br>'; echo 'postal_code: '.$geoip_postal_code.'<br>'; echo 'city_continent_code: '.$geoip_city_continent_code.'<br>'; echo 'latitude: '.$geoip_latitude.'<br>'; echo 'longitude: '.$geoip_longitude.'<br>'; ?> </body> </html> |
Обращаемся по
1 |
http://<sitename>/geoiptest.php |
Источник: http://www.howtoforge.com/using-geoip-with-nginx-on-ubuntu-12.04 http://piwik.org/faq/how-to/faq_166/ http://nginx.org/ru/docs/http/ngx_http_geoip_module.html http://www.tech-notes.net/install-nginx-from-sources/
Оптимизация Nginx+PHP-FPM
Оптимизация Nginx 1.Выставляем кол-во процессов Nginx равное кол-ву процессоров в системе.
1 |
# cat /proc/cpuinfo | grep processor | wc –l |
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 |
[...] worker_processes 1; worker_priority -3; [...] |
Максимальное количество соединений одного рабочего процесса. Следует выбирать значения от 1024 до 4096. Метод выбора соединений . Для Linux – epoll, для FreeBSD — kqueue. Ngix будет принимать максимально возможное количество соединений.
1 2 3 4 5 |
events { worker_connections 1024; use epoll; multi_accept on; } |
2. Включаем sendfile, tcp_nopush, tcp_nodelay, отключаем показ версии […]
Установка и настройка Nginx+PHP-FPM на Debian
Загружаем и устанавливаем ключ, которым подписаны пакеты и репозитарий nginx
1 |
# wget http://nginx.org/keys/nginx_signing.key |
1 |
# apt-key add nginx_signing.key |
Добавляем в
1 |
/etc/apt/sources.list |
Для Debian-Wheezy
1 2 |
deb http://nginx.org/packages/debian/ wheezy nginx deb-src http://nginx.org/packages/debian/ wheezy nginx |
Для Debian-Squeeze
1 2 |
deb http://nginx.org/packages/debian/ squeeze nginx deb-src http://nginx.org/packages/debian/ sqeeze nginx |
1 |
# apt-get update |
1.Установка и настройка Nginx
1 |
# apt-get install nginx |
1 |
# sysv-rc-conf --level 2345 nginx on |
1 |
# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf~ |
1 |
# nano /etc/nginx/nginx.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
user nginx; worker_processes 1; #число равно количеству процессов на сервере #cat /proc/cpuinfo | grep processor | wc -l worker_priority -5; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; use epoll; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log /var/log/nginx/access.log main; access_log off; #restricting on numbers of connection from one ip-adress limit_conn_zone $binary_remote_addr zone=connections:10m; limit_conn_log_level notice; #limit_conn connections 15; #restricting numbers of connection per second from one ip-adress limit_req_zone $binary_remote_addr zone=requests:10m rate=5r/s; limit_req_log_level warn; #limit_req zone=requests burst=10; sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; keepalive_timeout 65; types_hash_max_size 2048; gzip on; gzip_static on; gzip_comp_level 5; gzip_min_length 1024; gzip_proxied any; gzip_vary on; gzip_types text/plain text/xml application/xml application/x-javascript text/javascript text/css text/json; gzip_disable "msie6"; open_file_cache max=5000 inactive=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors on; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_connect_timeout 90; fastcgi_send_timeout 90; fastcgi_read_timeout 90; client_max_body_size 128m; client_body_buffer_size 16K; index index.php index.html; include /etc/nginx/conf.d/*.conf; } |
1 |
# nano /etc/nginx/conf.d/default.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
server { listen 192.168.1.72:80 default_server; server_name localhost; root /usr/share/nginx/html; location / { #root /usr/share/nginx/html; try_files $uri $uri/ /index.php?$args; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { #root /usr/share/nginx/html; try_files $uri =404; fastcgi_split_path_info ^(.+?\.php)(/.*)?$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.1.0/24; deny all; } location = /favicon.ico { log_not_found off; access_log off; allow all; } location = /robots.txt { access_log off; log_not_found off; } } |
Настройка конфигурационных файлов виртуальных хостов Nginx(содержание в конце статьи)
1 |
# nano /etc/nginx/conf.d/joomla.uk.conf |
1 |
# nano /etc/nginx/conf.d/wordpress.uk.conf |
1 |
# nano /etc/nginx/conf.d/kamaok.uk.conf |
1 |
# nginx –t |
1 |
# /etc/init.d/nginx restart |
1 |
# tail -f /var/log/nginx/error.log |
Установка и настройка […]