Quantcast
Channel: Библиотека знаний
Viewing all 1318 articles
Browse latest View live

Настройка NGINX - [Примеры конфигураций]

$
0
0

Настройка NGINX

Скрипт создания настроек сайта для Nginx

Я очень давно разрабатываю web проекты и для их публикации использую nginx web сервер. За это время скопилось много рецептов использования этого замчательного web сервера. Но из за лени каждый раз писать настройки заново я создал скрипт позволяющий ускорить и упростить это муторное занятие.

Параметры сервера

  • client_max_body_size
  • keepalive_timeout

Встроенные переменные

Конструкции и их применение

Модули / Modules

Рецепты

Рекомендации

Примеры конфигураций


Example 1

$
0
0

Example 1

nano /etc/nginx/nginx.conf

user  vagrant vagrant;
worker_processes  1;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
# Уменьшает число системных вызовов gettimeofday(), что приводит к увеличению производительности
timer_resolution 100ms;
 
# Изменяет ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса.
worker_rlimit_nofile 8192;
 
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -5;
 
events {
    worker_connections 1048;
    use epoll;
} 
 
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 off;
    error_log /var/log/nginx/error.log crit;
 
    # Метод отправки данных sendfile более эффективен, чем стандартный метод read+write
    sendfile        on;
    # Будет отправлять заголовки и и начало файла в одном пакете
    tcp_nodelay on;
    tcp_nopush on;
 
    # Будет ждать 30 секунд перед закрытием keepalive соединения
    keepalive_timeout  30;
    # Максимальное количество keepalive запросов от одного клиента
    keepalive_requests 100;
 
    # Если клиент перестал читать отвечать, Nginx будет сбрасывать соединение с ним
    reset_timedout_connection on;
    # Будет ждать 10 секунд тело запроса от клиента, после чего сбросит соединение# client_body_timeout 10;# Если клиент прекратит чтение ответа, Nginx подождет 2 секунды и сбросит соединение# send_timeout 2;# В этом случае сервер не будет принимать запросы размером более 1Мб
    client_max_body_size 1m;
 
    # Будет сжимать все файлы с перечисленными типамиgzip  on;
    # Минимальная длина ответа, при которой модуль будет жать, в байтах
    gzip_min_length  1000;
    # Разрешить сжатие для всех проксированных запросов
    gzip_proxied     any;
    # MIME-типы которые необходимо жать
    gzip_types       text/plain application/xml application/x-javascript text/javascript text/css text/json;
    # Запрещает сжатие ответа методом gzip для IE6  (старый вариант gzip_disable     "msie6";)
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
    # Уровень gzip-компрессии
    gzip_comp_level  6;
    gzip_vary on;
 
    # Определяет максимальное количество файлов, информация о которых будет содержаться в кеше
    open_file_cache max=200000inactive=20s;
    # Определяет через какое время информация будет удалена из кеша
    open_file_cache_valid 30s;
    # Будет кешировать информацию о тех файлах, которые были использованы хотя бы 2 раза
    open_file_cache_min_uses 2;
    # Будет кешировать информацию об отсутствующих файлах
    open_file_cache_errors on;
 
    #Задаёт тип и размеры кэшей для хранения параметров сессий.
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 5m;
    #Указывает, чтобы при использовании протоколов SSLv3 и TLS серверные шифры были более приоритетны, чем клиентские.
    ssl_prefer_server_ciphers on;
    #Позволяет серверу прикреплять OCSP-ответы, тем самым уменьшая время загрузки страниц у пользователей.
    ssl_stapling on;
    resolver 8.8.8.8;
 
    #fastcgi_read_timeout 25; 
    server_tokens off;
    include /etc/nginx/sites-enabled/*;
}

Программное обеспечение - [C]

$
0
0

Программное обеспечение

0-9

A

B

C

D

  • dpkg - Утилита установки пакетов
  • Dovecot - Postfix + Dovecot + MYSQL (IMAP/POP3-сервер)
  • dovecot_exim - Exim4 + Dovecot + MYSQL
  • du - Вычисляем занимаемое место на диске
  • DD - Клонирование диска/партиций
  • dhclient - Dhclient
  • Deluge - Torrent client
  • Dialog - Альтернативой dialog может служить whiptail, который даже присутствует в некоторых системах по умолчанию.

E

F

G

H

I

  • iotop - то же что и обычный top по CPU, но только по диску
  • LVM - Изменения размера логических томов LVM
  • IpSet - Блокируем много IP адресов с помощью ipset и iptables
  • iftop - display bandwidth usage on an interface
  • IPTraf - IP Network Monitoring Software
  • fail2ban - блокирует по IP найденных нарушителей

J

K

  • KVM - Виртуализация на Linux

L

  • lsmod - Список загруженных драйверов
  • links - Текстовой брузер с поддержкой JS
  • links2 - Текстовой брузер с поддержкой JS
  • LMSensors - Сенсоры: температура итд

M

N

O

P

Q

R

S

T

U

  • usermod - Изменение пользовательского аккаунта
  • Unison - утилита для синхронизации файлов
  • updatedb - Пакет для построения индекса. Используется при вызове locate

V

W

X

Y

Z

Centrifugo - Websocket or SockJS

$
0
0

Centrifugo - Websocket or SockJS

Проект написан на Python с использованием асинхронного веб-сервера Tornado. Использовать можно даже если бекенд вашего сайта написан не на Python. Хотелось бы рассказать о том, что Центрифуга представляет собой на данный момент.

Разница между имплементациями на разных языках, используется английское название — Centrifuge для Python-версии, Centrifugo — для Go-версии.

Сыылки

Статьи

Основная документация - [Front-end / Разработка приложений для сайтов]

$
0
0

Основная документация

Back-end / Разработка приложений на стороне сервера

Back-end database / Разработка и настройка баз данных

Серверное программирование и утилиты

Front-end / Разработка приложений для сайтов

App / Разработка приложений под разные платформы

Системы анализа и статистики

Несколько интересностей и полезностей для веб-разработчика

Java-Script Шаблонизаторы - ↷ Страница перемещена из font-end:templates в front-end:templates

$
0
0

Java-Script - ↷ Операцией перемещения обновлены ссылки

$
0
0

Java-Script

Библиотеки скриптов

Сайты

Песочницы/SandBox

Программное обеспечение

Библиотеки

Шаблогизаторы

Скрипты

Отладка / Chrome DevTools

MVC (Model Views Controller) Framework

MCV (Model Collection Views) Framework

  • Backbone.js

Лямбда функции

+function(y){return y+1;}(6);

Функции

# Функция с определенным кол-вом параметров
function f(a, b, c, d){ console.log(a + b + c + d)} 
# Обычный способ вызова
f(1,2,3,4); 
# f.call()
# Метод call жёстко фиксирует количество аргументов, через запятую
f.call(context,1,2,3,4); 
# Вызов функции при помощи func.apply работает аналогично func.call, но принимает массив аргументов вместо списка:
f.apply(context,[1,2,3,4]);

При помощи call/apply можно легко взять метод одного объекта, в том числе встроенного, и вызвать в контексте другого.

function sayHi(){ 
  # Используем эту технику для упрощения манипуляций с arguments. Как мы знаем, это не массив, а обычный объект.. Но как бы хотелось вызывать на нём методы массива.
  arguments.join=[].join;// одолжили метод (1) 
  var argStr = arguments.join(':');// (2) 
  alert(argStr);// сработает и выведет 1:2:3 
} 
sayHi(1,2,3);

Пример JS.Include

Html:

<scripttype="text/javascript">var STATICVER = 83;</script>

Java-script:

try{
  js ={"STATICVER": STATICVER};} catch(e){ js ={};}; 
js.include=function(path){if(typeof(this.STATICVER)=="undefined"){
		this.STATICVER =newDate().getUTCDate();}
	document.write('<script type="text/javascript" src="'+ path.replace('STATICVER', this.STATICVER)+'"></sc'+'ript>');} 
js.dynamicInclude =function(path, callback){if(typeof(this.STATICVER)=="undefined"){
		this.STATICVER =newDate().getUTCDate();}
	$.ajax({
		dataType:"script",
		cache:true,
		url:"/js/"+ this.STATICVER +"/"+ path
	}, callback);} 
js.include('/js/STATICVER/crimea.js');

Минимизация/сжатие

Статьи

Обещания / Promises

Паттерн стратегии на Java-Script

var Animal =function(){}
Animal.prototype.say=function(t){} 
var Dog =function(){}var Cat =function(){} 
var Say =function(obj){
  obj.say();}; 
Dog.prototype.say=function(){
 Animal.prototype.say.call(this);
 console.log('gav');} 
Cat.prototype.say=function(){
 Animal.prototype.say.call(this);
 console.log('myau');} 
var dog =new Dog();var cat =new Cat(); 
Say(cat);
Say(dog);

Ссылки

Видеоуроки

Библиотеки

Q-A

  • Какполучить размер ассоциативного массива?
    • Object.keys(data.data).length где data.data - является массивом

Сети - [Программы для работы с сетью]

$
0
0

Сети

Программы для работы с сетью

Утилиты

Wi-Fi

  • iwconfig - configure a wireless network interface
  • iwlist - Get more detailed wireless information from a wireless interface
  • iwpriv - configure optionals (private) parameters of a wireless network interface
  • iw - show / manipulate wireless devices and their configuration

Протоколы / Соглашения

Ссылки

Маски

Маска сети Сеть Адрес Мин Макс Адресов
32 192.168.1.0/32 192.168.1.0 192.168.1.1 192.168.1.1 1
24 192.168.1.0/24 192.168.1.0 192.168.1.1 192.168.1.254 254
16 192.168.0.0/16 192.168.1.0 192.168.0.1 192.168.255.254 65534
8 192.0.0.0/8 192.168.1.0 192.0.0.1 192.255.255.254 16777214
8 0.0.0.0/8 192.168.1.0 0.0.0.1 255.255.255.254

Калькуляторы масок

Wireshark

Web Sider/Crawler SEO


HHVM - [Скачать]

Восстановление прав для файлов и директорий - создано

$
0
0

Восстановление прав для файлов и директорий

  • chown root:staff -R /var/local
  • chown www-data:www-data -R /var/www
  • chown root:mail -R /var/mail
  • chown -R man /var/cache/man
  • apt-get --reinstall install `dpkg -S /bin/chmod | cut -f1 -d:`

http://www.slideshare.net/cog/chmod-x-chmod

Server install

$
0
0

Server install

Протестировано на Debian OS
site-create.sh
#!/bin/bash 
if[!-n"$BASH"] ;thenecho Please run this script $0 with bash; exit1; fi 
function trim(){echo"$1"|awk'{gsub(/^ +| +$/,"")} {print $0}'} 
function create_site(){ 
        site_name=$HOSTsite_alias=$ALIASsite_addr=$IPpassword=$(date +%s | sha256sum | base64 |head-c16 ; echo) 
        if[-d/home/${site_name}]; thenif[$SET_PASSWORD-eq1]; thenecho${site_name}:${password}| chpasswd
		usermod  -s/bin/bash${site_name}elsepassword='[without changes]'echo"User's password is not updated"fielsemkdir/home/${site_name}mkdir/home/${site_name}/logs
		mkdir/home/${site_name}/httpdocs
		mkdir/home/${site_name}/httpdocs/web
		useradd -d/home/${site_name}-s/bin/bash${site_name}
		usermod -G www-data ${site_name}echo${site_name}:${password}| chpasswd
		mkdir/home/${site_name}/.ssh
		chmod 0700 /home/${site_name}/.ssh
		ssh-keygen-t rsa -N"${site_name}"-f/home/${site_name}/.ssh/id_rsa
		chmod 0600 /home/${site_name}/.ssh/id_rsa
		ssh-keygen-t dsa -N"${site_name}"-f/home/${site_name}/.ssh/id_dsa
		chmod 0600 /home/${site_name}/.ssh/id_dsa
		echo"<?php phpinfo();">/home/${site_name}/httpdocs/web/index.php
		if[$LOCK-eq1]; thenauthpassword=$(date +%s | sha256sum | base64 |head-c6 ; echo)
		php -r"echo 'admin:' . crypt('${authpassword}', 'salt') . ': Web auth for ${site_name}';">/home/${site_name}/authfile
		fichown${site_name}:www-data -R/home/${site_name}fi 
        if[$APACHE-eq1]; then 
        echo"
<VirtualHost 127.0.0.1:8080>
                ServerName ${site_name}
                ServerAlias www.${site_name}
                ServerAdmin info@reklamu.ru
                DocumentRoot /home/${site_name}/httpdocs/web
                <Directory /home/${site_name}/httpdocs/web>
                                Options Indexes FollowSymLinks MultiViews
                                Options FollowSymLinks
                                AllowOverride All
                                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                                Order allow,deny
                                Allow from all
                </Directory>
 
                ErrorLog \${APACHE_LOG_DIR}/${site_name}-error.log
 
                # Possible values include: debug, info, notice, warn, error, crit,
                # alert, emerg.
                LogLevel warn
 
                CustomLog \${APACHE_LOG_DIR}/${site_name}-access.log combined
</VirtualHost>
">/etc/apache2/sites-enabled/${site_name}.conf
 
main="
                                # Apache back-end
                                location / {
                                                proxy_pass  http://127.0.0.1:8080;
                                                proxy_ignore_headers   Expires Cache-Control;
                                                proxy_set_header        Host            \$host;
                                                proxy_set_header        X-Real-IP       \$remote_addr;
                                                proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for;
                                }
                                location ~* \.(js|css|png|jpg|jpeg|gif|ico|swf)\$ {
                                                expires 1y;
                                                log_not_found off;
                                                proxy_pass  http://127.0.0.1:8080;
                                                proxy_ignore_headers   Expires Cache-Control;
                                                proxy_set_header        Host            \$host;
                                                proxy_set_header        X-Real-IP       \$remote_addr;
                                                proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for;
                                }
                                location ~* \.(html|htm)\$ {
                                                expires 1h;
                                                proxy_pass  http://127.0.0.1:8080;
                                                proxy_ignore_headers   Expires Cache-Control;
                                                proxy_set_header        Host            \$host;
                                                proxy_set_header        X-Real-IP       \$remote_addr;
                                                proxy_set_header        X-Forwarded-For \$proxy_add_x_forwarded_for;
                                }
" 
        else 
        php_config=";; php-fpm config for ${site_name}
[${site_name}]
 
user = ${site_name}
group = www-data
 
listen = /var/run/php-fpm-${PHP}-${site_name}.sock
listen.owner = ${site_name}
listen.group = www-data
listen.mode = 0666
 
pm = dynamic
pm.max_children = 250
pm.start_servers = 8
pm.min_spare_servers = 8
pm.max_spare_servers = 16
 
chdir = /
security.limit_extensions = false
php_flag[display_errors] = on
php_admin_value[error_log] = /home/${site_name}/logs/fpm-php-${PHP}-${site_name}.log
php_admin_flag[log_errors] = on
 
; Documentation: http://php.net/manual/ru/opcache.configuration.php
php_flag[opcache.enable] = $PHP_OPCACHE
php_flag[opcache.enable_cli] = $PHP_OPCACHE" 
if[$PHP-eq5]; thenecho"$php_config">"/etc/php5/fpm/pool.d/${site_name}.conf"fi 
if[$PHP-eq7]; thenecho"$php_config">"/etc/php/7.0/fpm/pool.d/${site_name}.conf"fi 
if[$PHP-eq71]; thenecho"$php_config">"/etc/php/7.1/fpm/pool.d/${site_name}.conf"fi 
if[$LOCK-eq1]; thenlock="
auth_basic \"Website development\";
auth_basic_user_file /home/${site_name}/authfile;
"elselock=''fi 
    main="
                                # With PHP-FPM
                                location / {
                                                index index.php;
                                                try_files \$uri \$uri/ /index.php?\$query_string;
                                }
 
                                # PHP fastcgi
                                location ~ \.php {
                                                #try_files \$uri =404;
                                                include fastcgi_params;
                                                # Use your own port of fastcgi here
                                                #fastcgi_pass 127.0.0.1:9000;
                                                ${lock}
                                                fastcgi_pass unix:/var/run/php-fpm-${PHP}-${site_name}.sock;
                                                fastcgi_index index.php;
                                                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                                                fastcgi_param PATH_INFO \$fastcgi_path_info;
                                                fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
                                }
"fi 
if[$AWSTATS-eq1]; thenawstats="# Awstats
server {
                                listen ${site_addr};
                                server_name  awstats.${site_name};
 
                                auth_basic            \"Restricted\";
                                auth_basic_user_file  /home/${site_name}/authfile;
 
                                access_log /var/log/nginx/access.awstats.${site_name}.log;
                                error_log /var/log/nginx/error.awstats.${site_name}.log;
 
                                location / {
                                                root   /home/${site_name}/awstats/;
                                                index  awstats.html;
                                                access_log off;
                                }
 
                                location  /awstats-icon/ {
                                                alias  /usr/share/awstats/icon/;
                                                access_log off;
                                }
 
                                # apt-get awstats install
                                location ~ ^/cgi-bin {
                                                access_log off;
                                                fastcgi_pass   unix:/var/run/fcgiwrap.socket;
                                                include /etc/nginx/fastcgi_params;
                                                fastcgi_param  SCRIPT_FILENAME  /usr/lib\$fastcgi_script_name;
                                }
}
"elseawstats=''fi 
if[$REDIRECT = 'site-www']; thenredirect="
# Rerirect ${site_name}
server {
                                listen ${site_addr};
                                server_name ${site_name};
                                return 301 http://www.${site_name}\$request_uri;
}
"server_name="www.${site_name}"fi 
if[$REDIRECT = 'www-site']; thenredirect="
# Rerirect www.${site_name}
server {
                                listen ${site_addr};
                                server_name www.${site_name};
                                return 301 http://${site_name}\$request_uri;
}
"server_name="${site_name}"fi 
if[$REDIRECT = 'off']; thenredirect=''server_name="${site_name}"fi 
echo"
${awstats} 
${redirect} 
# Site ${server_name}
server {
                                listen ${site_addr};
                                server_name ${server_name}${site_alias};
                                root /home/${site_name}/httpdocs/web;
                                index index.php;
                                access_log /home/${site_name}/logs/access.log;
                                error_log  /home/${site_name}/logs/error.log error;
                                charset utf-8;
                                #charset        windows-1251;
                                location = /favicon.ico {
                                                log_not_found off;
                                                access_log off;
                                                break;
                                }
                                location = /robots.txt {
                                                allow all;
                                                log_not_found off;
                                                access_log off;
                                }
                                ${main}
                                location ~ /(protected|themes/\w+/views)/ {
                                                access_log off;
                                                log_not_found off;
                                                return 404;
                                }
                                #
                                location ~ \.(xml)\$ {
                                                expires 24h;
                                                charset windows-1251;
                                                #log_not_found off;
                                                #try_files \$uri =404;
                                                #try_files \$uri \$uri/ /index.php?\$query_string;
                                }
                                #
                                location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)\$ {
                                                expires 24h;
                                                #log_not_found off;
                                                #try_files \$uri =404;
                                                try_files \$uri \$uri/ /index.php?\$query_string;
                                }
 
                                # Hide all system files
                                location  ~ /\. {
                                                deny  all;
                                                access_log off;
                                                log_not_found off;
                                }
}
">/etc/nginx/conf.d/${site_name}.conf
 
        if[$PHP-eq5]; then
          service php5-fpm reload
        fi 
        if[$PHP-eq7]; then	
          service php7.0-fpm reload
        fi 
        if[$PHP-eq71]; then	
          service php7.1-fpm reload
        fi 
        if[$APACHE-eq1]; then
          service apache2 reload
        fi 
        service nginx reload
 
        echo""echo"--------------------------------------------------------"echo"User: ${site_name}"echo"Login: ${site_name}"echo"Password: ${password}"echo"Path: /home/${site_name}/"echo"SSH Private file: /home/${site_name}/.ssh/id_rsa"echo"SSH Public file: /home/${site_name}/.ssh/id_rsa.pub"echo"Servers:"echo"Site name: ${site_name} (${IP})" 
	if[!-z$site_alias]; thenecho"Site alias: ${site_alias}"fi 
        if[$REDIRECT = 'site-www']; thenecho"Use redirect from ${site_name} to ${server_name}"fiif[$REDIRECT = 'www-site']; thenecho"Use redirect from ${site_name} to ${server_name}"fiif[$REDIRECT = 'off']; thenecho"Redirect disabled. use only ${server_name}"fi 
        echo"Site root: /home/${site_name}/httpdocs/web"echo"Site logs path: /home/${site_name}/logs" 
        if[$APACHE-eq1]; thenecho"Back-end server: Apache 2"echo"NGINX: /etc/nginx/conf.d/${site_name}.conf"echo"APACHE: /etc/apache2/sites-enabled/${site_name}.conf"elseecho"Back-end server: PHP-FPM"echo"NGINX: /etc/nginx/conf.d/${site_name}.conf" 
          if[$PHP-eq5]; thenecho"PHP-FPM: /etc/php5/fpm/pool.d/${site_name}.conf"fi 
          if[$PHP-eq7]; thenecho"PHP-FPM: /etc/php/7.0/fpm/pool.d/${site_name}.conf"fi 
          if[$PHP-eq71]; thenecho"PHP-FPM: /etc/php/7.1/fpm/pool.d/${site_name}.conf"fi 
          echo"unixsock: /var/run/php-fpm-${PHP}-${site_name}.sock"fi 
        if[$LOCK-eq1]; thenecho"Web auth: admin ${authpassword}"fi 
        if[$AWSTATS-eq1]; thenecho"Statistic:"echo"awstats.${site_name}"echo"Add crontab task: */20 * * * * /usr/lib/cgi-bin/awstats.pl -config=${site_name} -update > /dev/null"fi 
        echo"--------------------------------------------------------"echo"" 
} 
usage(){cat<< EOF
usage: $0 options
 
This script create settings files for nginx, php-fpm (ver: 5, 7), apache2, awstats.
 
OPTIONS:
   --host=                  Host name without www (Example: --host=myhost.com)
   --ip=                    IP address, default usage 80 (Example: --ip=127.0.0.1:8080)
   --redirect=              WWW redirect add (Example: --redirect=www-site or --redirect=site-www or disable redirect --redirect=off)
   --alias=                 Set Nginx alias (Examle: --alias="alias1 alias2 etc")
   --apache                 Usage apache back-end
   --awstats                Usage awstats
   --dont-change-password   Usage for change user password (Default: 1. Usage only for update)
   -5 | --php5              Usage PHP 5.x
   -7 | --php7              Usage PHP 7.0
   -71 | --php71            Usage PHP 7.1
   -l | --lock              Usage Nginx HTTP Auth basic	 
   -h | --help              Usage
 
EXAMPLES:
   bash site-create.sh --host="mirocow.com" --ip="192.168.1.131:8082"
   bash site-create.sh --host="mirocow.com" --alias="c1.mirocow.com c2.mirocow.com"
 
EOF} 
SET_PASSWORD=1HTTPS=0REDIRECT='site-www'LOCK=0HOST=''ALIAS=''APACHE=0AWSTATS=0PHP=5PHP_OPCACHE='Off'IP=$(trim $(hostname -I)):80 
for i in"$@"docase$iin--host=*)HOST=("${i#*=}")shift;;--alias=*)ALIAS=("${i#*=}")shift;;--ip=*)IP=("${i#*=}")shift;;--redirect=*)REDIRECT=("${i#*=}")shift;;
        --https)HTTPS=1shift;;
        --apache)APACHE=1shift;;
        --dont-change-password)SET_PASSWORD=0shift;;-l| --lock)LOCK=1shift;;-5| --php5)PHP=5shift;;-7| --php7)PHP=7shift;;-71| --php71)PHP=71shift;;-c| --php-opcache)PHP_OPCACHE='On'shift;;-w| --awstats)AWSTATS=1shift;;-h| --help)
            usage
            exit;;*)# unknown option;;esacdone 
# === AUTORUN ===if[!-z"$HOST"]; then
  create_site
else
  usage
fi

mount - Монтирование файловой системы

$
0
0

mount - Монтирование файловой системы

mount rw

  • mount -o remount,rw /

Ускорение файловой системы EXT2 - EXT4

  • В 4 секции /etc/fstab ввести ,noatime,nodiratime

Монтирование tmpfs

/etc/fstab

# Пример
none    /dev/shm   tmpfs    defaults             0       0
tmpfs    /tmp   tmpfs    defaults             0       0
chromium-cache   /home/USER/.cache/chromium   tmpfs    defaults,noatime,mode=1777,size=500M    0    0

Remot mount / Удаленое монтирование

mount -tfuse sshfs#root@hosting.reklamu.ru:tmp ./test
apt-get install sshfs
mount -tsshfd sshfs#root@hosting.reklamu.ru:tmp ./test
mount -tsshfs sshfs#root@hosting.reklamu.ru:tmp ./test
mount sshfs#root@hosting.reklamu.ru:tmp ./test

Монтирование tmpfs

/etc/fstab

# Пример
none    /dev/shm   tmpfs    defaults             0       0
tmpfs    /tmp   tmpfs    defaults             0       0
chromium-cache   /home/USER/.cache/chromium   tmpfs    defaults,noatime,mode=1777,size=500M    0    0

Linux kernel - [Загрузка драйвера]

$
0
0

Linux kernel

ls/lib/modules/$(uname -r)
build   modules.alias      modules.builtin      modules.dep      modules.devname  modules.softdep  modules.symbols.bin
kernel  modules.alias.bin  modules.builtin.bin  modules.dep.bin  modules.order    modules.symbols  source

Драйверы

$  ls/lib/modules/$(uname -r)/kernel/drivers/
acpi   bluetooth  dax      firewire  hv         infiniband  media     mmc     nvme     platform  scsi     thermal      uwb     w1
ata    cdrom      dca      firmware  hwmon      input       memstick  mtd     nvmem    power     spi      thunderbolt  vfio    watchdog
atm    char       devfreq  gpio      hwtracing  isdn        message   net     parport  powercap  ssb      tty          vhost   xen
bcma   cpufreq    dma      gpu       i2c        leds        mfd       nfc     pci      pps       staging  uio          video
block  crypto     edac     hid       iio        md          misc      nvdimm  pcmcia   ptp       target   usb          virtio

Описание драйвера

$ modinfo acpi
filename:       /lib/modules/4.11.0-2-amd64/kernel/drivers/cpufreq/acpi-cpufreq.ko
alias:          acpi
license:        GPL
description:    ACPI Processor P-States Driver
author:         Paul Diefenbaugh, Dominik Brodowski
alias:          cpu:type:x86,ven*fam*mod*:feature:*00E8*
alias:          cpu:type:x86,ven*fam*mod*:feature:*0016*
alias:          acpi*:ACPI0007:*
alias:          acpi*:LNXCPU:*
depends:
intree:         Y
vermagic:       4.11.0-2-amd64 SMP mod_unload modversions
parm:           acpi_pstate_strict:value 0 or non-zero. non-zero -> strict ACPI checks are performed during frequency changes. (uint)

Загрузка драйвера

$ modprobe foo

С проверкой

$ modprobe -v foo

Выгрузка драйвера

$ modprobe -r foo
$ rmmod foo

Список загруженых драйверов

$  lsmod
Module                  Size  Used by
ufs                    737280
qnx4                   163840
hfsplus               1024000
hfs                    573440
minix                  368640
ntfs                   983040
vfat                   204800
msdos                  204800
fat                    655362 msdos,vfat
jfs                   1802240
xfs                  11755520
fuse                   983043
iptable_filter         163840
ip_tables              245761 iptable_filter
x_tables               368642 ip_tables,iptable_filter
binfmt_misc            204801
nfsd                  3358722
auth_rpcgss            614401 nfsd
oid_registry           163841 auth_rpcgss
nfs_acl                163841 nfsd
nfs                   2457600
lockd                  901122 nfsd,nfs
grace                  163842 nfsd,lockd
fscache                614401 nfs
sunrpc                3317766 auth_rpcgss,nfsd,nfs_acl,lockd,nfs
dm_crypt               286720
dm_mod                1146881 dm_crypt
hp_wmi                 163840
sparse_keymap          163841 hp_wmi
ppdev                  204800
iTCO_wdt               163840
rfkill                 245761 hp_wmi
snd_hda_codec_analog    163841
iTCO_vendor_support    163841 iTCO_wdt
snd_hda_codec_generic    696321 snd_hda_codec_analog
i915                 12574721
drm_kms_helper        1433601 i915
evdev                  2457611
coretemp               163840
parport_pc             286720
drm                   3440643 i915,drm_kms_helper
sg                     327680
serio_raw              163840
snd_hda_intel          368640
snd_hda_codec         1269763 snd_hda_intel,snd_hda_codec_analog,snd_hda_codec_generic
snd_hda_core           778244 snd_hda_intel,snd_hda_codec,snd_hda_codec_analog,snd_hda_codec_generic
pcspkr                 163840
snd_hwdep              163841 snd_hda_codec
lpc_ich                245760
snd_pcm               1024003 snd_hda_intel,snd_hda_codec,snd_hda_core
mfd_core               163841 lpc_ich
i2c_algo_bit           163841 i915
shpchp                 368640
mei_me                 409600
mei                   1024001 mei_me
snd_timer              327681 snd_pcm
parport                491522 parport_pc,ppdev
snd                    778247 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_hda_codec_analog,snd_timer,snd_hda_codec_generic,snd_pcm
wmi                    163841 hp_wmi
soundcore              163841 snd
video                  409601 i915
button                 163841 i915
acpi_cpufreq           204800
ext4                  5898241
crc16                  163841 ext4
jbd2                  1064961 ext4
fscrypto               286721 ext4
ecb                    163840
crypto_simd            163840
cryptd                 245761 crypto_simd
glue_helper            163840
aes_x86_64             204801
mbcache                163841 ext4
btrfs                10772480
raid10                 491520
raid456               1269760
async_raid6_recov      204801 raid456
async_memcpy           163842 raid456,async_raid6_recov
async_pq               163842 raid456,async_raid6_recov
async_xor              163843 async_pq,raid456,async_raid6_recov
async_tx               163845 async_xor,async_pq,raid456,async_memcpy,async_raid6_recov
xor                    245762 async_xor,btrfs
raid6_pq              1146884 async_pq,btrfs,raid456,async_raid6_recov
libcrc32c              163842 xfs,raid456
crc32c_generic         163842
raid1                  409600
raid0                  204800
multipath              163840
linear                 163840
md_mod                1351686 raid1,raid10,multipath,linear,raid0,raid456
sd_mod                 491523
uas                    245760
usb_storage            696321 uas
ata_generic            163840
psmouse               1310720
ata_piix               368642
libata                2375682 ata_piix,ata_generic
scsi_mod              2170885 sd_mod,usb_storage,libata,uas,sg
floppy                 696320
uhci_hcd               450560
e1000e                2416640
ptp                    204801 e1000e
pps_core               163841 ptp
ehci_pci               163840
ehci_hcd               819201 ehci_pci
usbcore               2457605 usb_storage,ehci_hcd,uhci_hcd,uas,ehci_pci
usb_common             163841 usbcore

Dev - Устройства - [Просмотр HDD/SSD устройств]

$
0
0

Dev - Устройства

Просмотр HDD/SSD устройств

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:00232,9G  0 disk
├─sda1   8:10223,4G  0 part /├─sda2   8:20     1K  0 part
└─sda5   8:509,5G  0 part [SWAP]
sdd      8:4801,8T  0 disk
sde      8:640465,8G  0 disk

Список дисков с указанием UUID

$ blkid
/dev/sda1: UUID="dea7b137-e3a0-48fa-8363-5f654ed6d6f5"TYPE="ext4"PARTUUID="9e41fd98-01"/dev/sda5: UUID="d7307b2f-6903-4193-8281-02c17d6aa42a"TYPE="swap"PARTUUID="9e41fd98-05"/dev/sdd: UUID="833ad2a2-23ba-43ea-96bf-f5161b717034"TYPE="ext4"/dev/sde: UUID="929a5b27-8dea-47b5-b6c9-ec90617b6ef2"TYPE="ext4"

Debian, Ubuntu - [Настройки]

$
0
0

Debian, Ubuntu

Скачать

Настройки

Скрипты инсталяции

Сохранение/Восстановление/Обновление

Менеджеры окон

Полезное

Ссылки

Статьи

Ссылки на внешние источники


Макрос для снятия защиты листа или книги Excel - создано

$
0
0

Макрос для снятия защиты листа или книги Excel

Sub Unlock_Excel_Worksheet()
    t = Timer
    If UnlockSheet(ActiveSheet) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту листа", vbCritical
    End If
End Sub
Function UnlockSheet(ByRef sh As Worksheet) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            sh.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockSheet = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

Снимает защиту книги Excel

Sub Unlock_Excel_Workbook() ' снятие защиты книги Excel
    t = Timer
    If UnlockWorkbook(ActiveWorkbook) Then
        MsgBox "Защита снята. Потребовалось времени: " & Format(Timer - t, "0.0 сек.")
    Else
        MsgBox "Не удалось снять защиту книги", vbCritical
    End If
End Sub
Function UnlockWorkbook(ByRef wb As Workbook) As Boolean
    Dim i%, j%, k%, l%, m%, n As Long, i1%, i2%, i3%, i4%, i5%, i6%, txt$
    On Error Resume Next
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66
        txt$ = Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6)
        For n = 32 To 126
            wb.Unprotect txt$ & Chr(n)
            If Err Then
                Err.Clear
            Else
                Debug.Print "Пароль: " & txt$ & Chr(n)
                UnlockWorkbook = True
                Exit Function
            End If
        Next
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next
End Function

VBA

Vagrant - [Установка]

$
0
0

Vagrant

Установка

$

Коробочки

Плагины

Системы управления конфигурацией

  • Shell — старые добрые shell-скрипты. В XXI веке уже не интересно.
  • Ansible— молодая, набирающая обороты, система управления конфигурацией.
  • Chef— про него, пожалуй, слышали все. Поддерживается standalone (Chef Solo) и серверная (Chef Client) версии.
  • Docker— модная в последнее время система, поддерживающая концепцию Immutable Server.
  • Puppet— одна из наиболее распространенных систем управления конфигурацией. Поддерживается standalone и серверная версия.
  • Salt — система управления конфигурацией Salt Stack.

Создание коробки из рабочей виртуальной машины

У нас есть виртуальная машина с наименованием "vm". В отключено состоянии выполняем команду от root. Где /Users/mirocow/vagrant/vm.box является путем до создаваемой коробки.

$ rm/Users/mirocow/vagrant/vm.box
$ vagrant package --base vm --output/Users/mirocow/vagrant/vm.box

Запуск локальных коробок

$ vagrant box add foo-box /path/to/vagrant-box.box
$ vagrant init foo-box
$ vagrant up

On-line конфигураторы

Рецепты

Сатьи / Сайты / Документация

Git - распределённая система управления версиями. - [Ссылки]

$
0
0

Git - распределённая система управления версиями.

Инструкции

Инициализация / init

$ git init
$ git config--global user.name "John Doe"
$ git config--global user.email johndoe@example.com

Windows

global
$ git config--global core.filemode false
$ git config--global core.preloadindex true
$ git config--global core.fscache true
$ git config--global gc.auto 256
$ git config--global status.submoduleSummary false
local
$ git config core.filemode false
$ git config core.preloadindex true
$ git config core.fscache true
$ git config gc.auto 256
$ git config status.submoduleSummary false

Конфигурация

Вывод установленных параметров

$ git config--local-l

Установка параметров

$ git config--local core.filemode true

Актуализация изменений

$ git checkout-- . &&git pull&&git submodule update --init--recursive

Локальное хранилище / stage

  • Добавление в индекс
    • git add <имя_файла>
    • git add *
    • git add .
    • git add -A - Добавить в индекс только удаленные файлы
  • Удаление из индекса
    • git rm <имя_файла>
    • git rm *.php
    • git reset - Отменить индексацию последних изменений
    • git rm --cached <ИМЯ_ФАЙЛА> - Удалить из индекса файл и добавить в игнор. Файл останется в каталоге.
    • git reset HEAD benchmarks.rb - Отменить индексацию файла benchmarks.rb

Локальный репозиторий

    • Фиксация изменений
      • git commit -m "Описание коммита"
      • git checkout <hash-коммита> - Переключиться на определенный коммит
      • git commit --amend - Удаление последнего коммита
    • Восстановление файлов из репозитория
      • git checkout <branch> # Перемещение указателя HEAD на комит или ветку
      • git reset --hard HEAD~n # Перемещение указателя HEAD на комит
      • git checkout -- <имя_файла> - восстановление файла из репозитория
      • git reset --hard origin/master - удалить все локальные изменения и коммиты
      • git reset --hard origin/master
      • git reset --hard HEAD^ # Сбросить все локальные измеения до текущего состояния
    • Перемещение комитов
      • git rebase -i HEAD~n # Позволяет переупорядочивать, менять комменты, выборочно удалять и прочее
    • Ветвление branch
      • git branch bug1Создать ветку bug1
      • git branch -d bug1Удалить ветку bug1
    • Пересадка веток / rebase
      • git rebase master
        1. git checkout master # переключаемся на бранч master
        2. git rebase bug1 # пересаживаем историю изменений ветки bug1 в master
      • или
        1. git checkout bug1
        2. git rebase master
        3. git checkout master
        4. git merge bug1 # При этом произойдет fast-forward merge

Отмена коммитов

До комита
  • git reset --hard HEAD
После комита
  • git reset --hard ORIG_HEAD
Документация

Временное хранилище / Stash

Часто возникает такая ситуация, что пока вы работаете над частью своего проекта, всё находится в беспорядочном состоянии, а вам нужно переключить ветки, чтобы немного поработать над чем-то другим. Подробнее...

Вместо git reset --hard, можно сначала файлы сохранять во временное хранилище, затем применять изменения.

  • git stashПоместить файлы во временное хранилище
  • git stash applyПрименить последнее изменение из стека / лога к текущей рабочей копии
  • git stash dropУдалить последнее изменение в стеке / лога
  • git stash listПоказать все изменения в стеке / логе
  • git stash showПоказать последнее измененеие в стеке / логе (патч)
  • git stash popПрименить последнее изменение из стека к текущей рабочей копии и удалить его из стека
  • git stash clearОчистить стек изменений

Удаленный репозиторий / origin

  • Синхронизация
    • git push origin master
    • git remote add origin <адрес_сервера>

Submodule / Субмодули

  • git submodule add git@github.com:Mirocow/express-chat.git
  • git submodule update –init [express-chat]
  • git submodule update --init --recursive - обновить все зависимые модули (репозитории)
  • git rm -r yii2-mongodb - Удалить сабмодуль yii2-mongodb
  • git rm -r yii2-redactor - Удалить сабмодуль yii2-redactor :!:
  • git submodule add -- /to/path/git/dir - Добавить локальный модуль (Необходимо указывать только полный путь до папки) :!:

Как вынести код в отдельный репозитоий

Дано:

  • Основной репозиторий app/
  • Необходимый код лежит тут app/vendor/mirocow/yii2-redactor
  • копируем код в отдельную папку и создаем репозитоий путь-до-репозитория/yii2-redactor
  • удаляем если есть уже ранее созданный модуль git rm -rf yii2-redactor
  • обязательно переходим в добавляемую папку app/vendor/mirocow
  • добавляем модуль как отдельный репозитоий из папки git submodule add -f путь-до-репозитория/yii2-redactor/

Отладка

GIT_CURL_VERBOSE

$ GIT_CURL_VERBOSE=1git clone htps://...

GIT_TRACE

Принимает значаения 1, 2 или true

$ GIT_TRACE=2git clone htps://...

Настройка

  • git config color.ui true - использовать цветной вывод в терминале

http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg

Настройка deploy on github

Настройка github для работы с Deploy keys

Ошибки

Ошибка: There is no tracking information for the current branch

При возникновении ошибки вида

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to rebase against.
See git-pull(1)for details
 
    git pull<remote><branch> 
If you wish to set tracking information for this branch you can do so with:
 
    git branch--set-upstream-to=origin/<branch> master

следует выполнить

$ git pull origin master
$ git branch--set-upstream-to=origin/master master
$ git pull

Видеоуроки

Документация

Сервер

Клиенты

Code Review

Ссылки

Установка и конфигурирование драйверов

$
0
0

Установка и конфигурирование драйверов

$ lsmod

To show information about a module:

$ modinfo module_name

To list the options that are set for a loaded module:

$ systool -v -m module_name

To display the comprehensive configuration of all the modules:

$ modprobe -c | less

To display the configuration of a particular module:

$ modprobe -c | grep module_name

List the dependencies of a module (or alias), including the module itself:

$ modprobe --show-depends module_name

Загрузка/Тест

$ modprobe module_name

Выгрузка

$ modprobe -r module_name
$ rmmod module_name

Настройка

Папка с настройками /etc/modprobe.d/

Пример:

/etc/modprobe.d/myfilename.conf
options modname parametername=parametercontents

Пример:

/etc/modprobe.d/thinkfan.conf
#On Thinkpads, this lets the 'thinkfan' daemon control fan speed.
options thinkpad_acpi fan_control=1

Символические ссылки

nano /etc/modprobe.d/myalias.conf

alias mymod really_long_module_name

nano /etc/modprobe.d/modprobe.conf

#Prevent Bluetooth autoload.

alias net-pf-31 off

Черный список

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

nano /etc/modprobe.d/nobeep.conf

#Do not load the 'pcspkr' module on boot.

blacklist pcspkr

Драйверы

  • firmware-bnx2 - Драйвер для сетевой платы HP
Viewing all 1318 articles
Browse latest View live