Hello and welcome to #root.bg!
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Here you can find tutorials about linux, networks and their firewall, games and fun, as well as hobbies – rollers, drones and many more.
Николай Николов Работа ext3, ext4, fsck, migration, proxmox 0
Здравейте,
Тази сутрин трябваше да направя live migration от ext3 към ext4 на един proxmox сървър, и в този пост искам да споделя преживяното:

Започнах процедурата като спазвах стъпките от https://debian-administration.org/article/643/Migrating_a_live_system_from_ext3_to_ext4_filesystem , но излезе следният проблем:
Първо при umount /dev/pve/data излезе :
umount: /var/lib/vz: target is busy (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)
Използвах флаг-а -l при umount и продължих по стъпките.
При fsck.ext4 -yfD /dev/pve/data обаче възникна същия проблем :
moon:~# fsck.ext4 -yfD /dev/pve/data e2fsck 1.42.12 (29-Aug-2014) /dev/pve/data is in use. e2fsck: Cannot continue, aborting.
За да разбера какво караше /dev/pve/data да е все още монтиран, трябваше да използвам командата fuser -m /dev/pve/data
И така разбрах следното :
moon:/var/lib# fuser -m /dev/pve/data /dev/dm-2: 11657 11685 17558 22012 24655 26116 29357 34728 35034 35694 42784 46330 47645
Това бяха pid-овете на процесите задържащи /dev/pve/data .. спрях ги един по един и успях да продължа миграцията както следва :
moon:~# tune2fs -O extents,uninit_bg,dir_index /dev/pve/data tune2fs 1.42.12 (29-Aug-2014) moon:~# fsck.ext4 -yfD /dev/pve/data e2fsck 1.42.12 (29-Aug-2014) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 3A: Optimizing directories Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/pve/data: ***** FILE SYSTEM WAS MODIFIED ***** /dev/pve/data: 770019/482590720 files (0.3% non-contiguous), 1543788056/3860725760 blocks
Накрая монтирах на ново /dev/pve/data към /var/lib/vz и вече имах успешно мигрирана ext4 файлова система! Нито един файл не се затри през цялата операция! 🙂
Това е!
Николай Николов Howto convert, mysql, null, select, timezone 0
Привет,
Днес се сблъсках с един странен проблем при конвертиране на timezone в MySQL.
Проблемът беше следния : mysql select convert_tz returns null
mysql> SELECT CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC');
+-----------------------------------------------------------+
| CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC') |
+-----------------------------------------------------------+
| NULL |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
Това го дава въпреки настроената правилно timezone-а на сървъра :
mysql> SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | SYSTEM | +--------------------+---------------------+ 1 row in set (0.00 sec)
Вместо NULL обаче трябва да вади валидна дата и час.
Този проблем се оправя с командата : mysql_tzinfo_to_sql , или накратко така :
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
И вече резултата от селекта изглежда така:
mysql> SELECT CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC');
+-----------------------------------------------------------+
| CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC') |
+-----------------------------------------------------------+
| 2016-11-01 18:00:00 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)
Това е!
Николай Николов Howto blog, nginx, reverse proxy, seo, wordpress 0
Привет,
Наскоро ми се наложи да търся решение за използване на Nginx като reverse proxy със субдомейни.

Идеята беше следната :
Имаме сайт : testsait.com който се намира на един сървър с nginx и wordpress блог на адрес : blog.testsait.com който се намира на друг сървър.
Целта е да направим testsait.com/blog да се отваря директно през blog.testsait.com.
Всичко това е с цел по-добро SEO, или поне нашите SEO гурута смятат така 😀 хаха.
Ето и начина по който се прави това:
Във виртуалният хост на сайта ни testsait.com се добавя следното :
location /blog/ {
rewrite ^/blog/(.*) /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 90;
proxy_pass http://blog.testsait.com/;
proxy_redirect http://blog.testsait.com/ /blog/;
}
Този блок се добавя преди: location /
Така направено всичко ще работи, освен wp-login.php. Причината е заради location ~ \.php$ {
За това този location блок се заменя със следния :
location ~* ^((?!\/blog)(.+)\.php)$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_max_temp_file_size 0;
client_max_body_size 32M;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 240;
#add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
fastcgi_param SCRIPT_FILENAME /var/www/testsait.com/$fastcgi_script_name;
}
Така всички php заявки ще бъват насочени към php-fpm socket-а освен /blog/.
Резултата е работещ testsait.com/blog и testsait.com/blog/wp-login.php.
Това е!
Николай Николов Работа discourse, haproxy, nginx 0
Привет,
Днес един от съфорумците на root.bg CopyCat репортна проблем с логването във форума.

Оказа се, че при последната версия на discourse (v1.7.0.beta6 +23) е задължително да се добави :
proxy_set_header X-Forwarded-Proto https;
когато се използва reverse proxy. Повече инфо тук.
При мен схемата обаче не е с nginx за reverse proxy, а haproxy. Съответно нещата изглеждат ето така :
backend forums.root.bg
#redirect scheme https if { hdr(Host) -i git.root.bg } !{ ssl_fc }
cookie SERVERID insert indirect
balance leastconn
reqadd X-Forwarded-Proto:\ https
option httpclose
server forums 192.168.168.92:80 cookie forums-container check inter 2000 rise 2 fall 5
Това е!
ПС. Благодаря за репорт-а колега CopyCat!