.
Место для Вашей рекламы
20 Июнь 2013

Копирование русских файлов в UTF-8 в FreeBSD

ВОПРОС:
В консоли имею русский koi8
На сайты юзера закачивают файлы в UTF-8 — нормально работают
Забэкапил таром — перетащил на другой сервер — русские файлы похерелись 🙁

Цепляюсь по фтп — нормально отображаюся, но перетаскивать по ФТП не вариант — очень много файлов.

Подскажите как можно решить проблему ?
PS.
по идее — русифицировать консоль в UTF-8 но я так понял во фришке это проблема …

ОТВЕТ:
в скрипт бэкапа в начало
export LANG=ru_RU.UTF-8
решит все проблемы !

рубрики: NIX, Администрирование | Комментарии (0)

18 Июнь 2013

Правильный перенос работающего сайта на WebAsyst на новый сервер

Итак, задача:
Имеется работающий интернет магазин, всё крутиться на одном серваке — необходимо без потерь заказов перетащить всё на другой сервер.

Схема следующая:
1. Перетаскиваем файло и БД на новый сервер
2. На старом сервере настраиваем работу на MYSQL на новый (по IP)
3. Переключаем DNS на новый

За основу (куда тащим) у меня в распоряжении оказалась виртуальная машина VM Битрикс.
Соответственно, сначала заводим юзера с правами зацепляться отовсюду,в настройках /etc/my.cnf убираем привязку bind_adress и разрешаем в фаерволе входящие по порту 3306 (либо руками, либо можно webmin поставить). Всё это после окончательного переноса нужно будет возвратить для большей секъюрности в прежние значения.
Далее проверяем возможность зацепиться к базе со старого сервака простым скриптиком через mysql_connect
Ура — всё ок!

Далее чего пишу-то: меняю настройки в системе — а нифига! не цепляется
Помогли на официальном форуме.

настройки хоста в \kernel\wbs.xml , замените везде localhost

Ну и кэш всё таки в инсталлере почистить не помешает!

Ещё момент — на сайте откуда перетаскивали mysql был регистронезависим по отношению к названию таблиц, а на хостинге куда — регистрозависим.
Соответственно, пришлось переименовывать таблицы


RENAME TABLE accessrights_link TO ACCESSRIGHTS_LINK;
RENAME TABLE appsettings TO APPSETTINGS;
RENAME TABLE cfolder TO CFOLDER;
RENAME TABLE clist TO CLIST;
RENAME TABLE clist_contact TO CLIST_CONTACT;
RENAME TABLE company TO COMPANY;
RENAME TABLE contact TO CONTACT;
RENAME TABLE contactfield TO CONTACTFIELD;
RENAME TABLE contactnote TO CONTACTNOTE;
RENAME TABLE contacttype TO CONTACTTYPE;
RENAME TABLE currency TO CURRENCY;
RENAME TABLE customer TO CUSTOMER;
RENAME TABLE disk_usage TO DISK_USAGE;
RENAME TABLE email_contact TO EMAIL_CONTACT;
RENAME TABLE issue TO ISSUE;
RENAME TABLE issuefilter TO ISSUEFILTER;
RENAME TABLE issuetransitionlog TO ISSUETRANSITIONLOG;
RENAME TABLE issuetransitionschema TO ISSUETRANSITIONSCHEMA;
RENAME TABLE issuetransitiontemplate TO ISSUETRANSITIONTEMPLATE;
RENAME TABLE issuetransitiontemplateschema TO ISSUETRANSITIONTEMPLATESCHEMA;
RENAME TABLE mmaccess TO MMACCESS;
RENAME TABLE mmaccount TO MMACCOUNT;
RENAME TABLE mmcache TO MMCACHE;
RENAME TABLE mmfolder TO MMFOLDER;
RENAME TABLE mmgroupaccess TO MMGROUPACCESS;
RENAME TABLE mmmessage TO MMMESSAGE;
RENAME TABLE mmmsentto TO MMMSENTTO;
RENAME TABLE mmsender TO MMSENDER;
RENAME TABLE mmsent TO MMSENT;
RENAME TABLE paccess TO PACCESS;
RENAME TABLE pgroupaccess TO PGROUPACCESS;
RENAME TABLE project TO PROJECT;
RENAME TABLE projectwork TO PROJECTWORK;
RENAME TABLE sc_aff_commissions TO SC_aff_commissions;
RENAME TABLE sc_aff_payments TO SC_aff_payments;
RENAME TABLE sc_aux_pages TO SC_aux_pages;
RENAME TABLE sc_brends TO SC_brends;
RENAME TABLE sc_categories TO SC_categories;
RENAME TABLE sc_category_product TO SC_category_product;
RENAME TABLE sc_category_product_options__variants TO SC_category_product_options__variants;
RENAME TABLE sc_category__product_options TO SC_category__product_options;
RENAME TABLE sc_config_settings TO SC_config_settings;
RENAME TABLE sc_countries TO SC_countries;
RENAME TABLE sc_currency_types TO SC_currency_types;
RENAME TABLE sc_custgroups TO SC_custgroups;
RENAME TABLE sc_customers TO SC_customers;
RENAME TABLE sc_customer_addresses TO SC_customer_addresses;
RENAME TABLE sc_customer_reg_fields TO SC_customer_reg_fields;
RENAME TABLE sc_customer_reg_fields_values TO SC_customer_reg_fields_values;
RENAME TABLE sc_customer_reg_fields_values_quickreg TO SC_customer_reg_fields_values_quickreg;
RENAME TABLE sc_discount_coupons TO SC_discount_coupons;
RENAME TABLE sc_discussions TO SC_discussions;
RENAME TABLE sc_divisions TO SC_divisions;
RENAME TABLE sc_division_access TO SC_division_access;
RENAME TABLE sc_division_custom_settings TO SC_division_custom_settings;
RENAME TABLE sc_division_interface TO SC_division_interface;
RENAME TABLE sc_htmlcodes TO SC_htmlcodes;
RENAME TABLE sc_interface_interfaces TO SC_interface_interfaces;
RENAME TABLE sc_language TO SC_language;
RENAME TABLE sc_linkexchange_categories TO SC_linkexchange_categories;
RENAME TABLE sc_linkexchange_links TO SC_linkexchange_links;
RENAME TABLE sc_local TO SC_local;
RENAME TABLE sc_localgroup TO SC_localgroup;
RENAME TABLE sc_modules TO SC_modules;
RENAME TABLE sc_module_configs TO SC_module_configs;
RENAME TABLE sc_news_table TO SC_news_table;
RENAME TABLE sc_ordered_carts TO SC_ordered_carts;
RENAME TABLE sc_orders TO SC_orders;
RENAME TABLE sc_orders_discount_coupons TO SC_orders_discount_coupons;
RENAME TABLE sc_order_price_discount TO SC_order_price_discount;
RENAME TABLE sc_order_status TO SC_order_status;
RENAME TABLE sc_order_status_changelog TO SC_order_status_changelog;
RENAME TABLE sc_payment_types TO SC_payment_types;
RENAME TABLE sc_payment_types__shipping_methods TO SC_payment_types__shipping_methods;
RENAME TABLE sc_products TO SC_products;
RENAME TABLE sc_products_opt_val_variants TO SC_products_opt_val_variants;
RENAME TABLE sc_product_list TO SC_product_list;
RENAME TABLE sc_product_list_item TO SC_product_list_item;
RENAME TABLE sc_product_options TO SC_product_options;
RENAME TABLE sc_product_options_set TO SC_product_options_set;
RENAME TABLE sc_product_options_values TO SC_product_options_values;
RENAME TABLE sc_product_pictures TO SC_product_pictures;
RENAME TABLE sc_related_items TO SC_related_items;
RENAME TABLE sc_rpost_zones TO SC_rpost_zones;
RENAME TABLE sc_settings TO SC_settings;
RENAME TABLE sc_settings_groups TO SC_settings_groups;
RENAME TABLE sc_shipping_methods TO SC_shipping_methods;
RENAME TABLE sc_shopping_carts TO SC_shopping_carts;
RENAME TABLE sc_shopping_cart_items TO SC_shopping_cart_items;
RENAME TABLE sc_shopping_cart_items_content TO SC_shopping_cart_items_content;
RENAME TABLE sc_spmodules TO SC_spmodules;
RENAME TABLE sc_spmodules_settings TO SC_spmodules_settings;
RENAME TABLE sc_subscribers TO SC_subscribers;
RENAME TABLE sc_system TO SC_system;
RENAME TABLE sc_tagged_objects TO SC_tagged_objects;
RENAME TABLE sc_tags TO SC_tags;
RENAME TABLE sc_tax_classes TO SC_tax_classes;
RENAME TABLE sc_tax_rates TO SC_tax_rates;
RENAME TABLE sc_tax_rates__zones TO SC_tax_rates__zones;
RENAME TABLE sc_tax_zip TO SC_tax_zip;
RENAME TABLE sc_zones TO SC_zones;
RENAME TABLE sc__courier_rates TO SC__courier_rates;
RENAME TABLE sc__courier_rates2 TO SC__courier_rates2;
RENAME TABLE sc__intershipper_carriers TO SC__intershipper_carriers;
RENAME TABLE sc__module_payment_invoice_jur TO SC__module_payment_invoice_jur;
RENAME TABLE sc__module_payment_invoice_phys TO SC__module_payment_invoice_phys;
RENAME TABLE sc__module_shipping_bycountries_byzones_rates TO SC__module_shipping_bycountries_byzones_rates;
RENAME TABLE sc__module_shipping_bycountries_byzones_rates_percent TO SC__module_shipping_bycountries_byzones_rates_percent;
RENAME TABLE sms_balance TO SMS_BALANCE;
RENAME TABLE sms_credit_history TO SMS_CREDIT_HISTORY;
RENAME TABLE sms_history TO SMS_HISTORY;
RENAME TABLE ugroup TO UGROUP;
RENAME TABLE ugroup_user TO UGROUP_USER;
RENAME TABLE ug_accessrights TO UG_ACCESSRIGHTS;
RENAME TABLE unsubscriber TO UNSUBSCRIBER;
RENAME TABLE user_disk_quota TO USER_DISK_QUOTA;
RENAME TABLE user_settings TO USER_SETTINGS;
RENAME TABLE u_accessrights TO U_ACCESSRIGHTS;
RENAME TABLE wbs_user TO WBS_USER;
RENAME TABLE wg_param TO WG_PARAM;
RENAME TABLE wg_widget TO WG_WIDGET;
RENAME TABLE workassignment TO WORKASSIGNMENT;

рубрики: CMS, Администрирование, Полезности | 2 комментария

11 Июнь 2013

Какой vhost грузит систему — текущая активность mysql и apache

В статье Защита от DDOS — первые шаги был упомянут скрипт контроля LA, собственно который я успешно реализовал …
После написания он временами начал отрабатывать — и встал вопрос «Какой же именно виртуальный хост даёт нагрузку?»
Стандартные средства мониторинга нагрузки вроде ps -waux показывают только процессы грузящие систему — множественные httpd.
Как узнать какой же именно сайт создаёт нагрузку на сервер?
Для ответа на этот вопрос были установлены инструменты для мониторинга:
* mod_status — apache модуль с возможностью просмотра текущей нагрузки по виртуальным хостам
* MyTop: top для MySQL с возможностью просмотра какие именно запросы обрабатываются в данный момент к каким базам данных

Для сбора статистике в скрипте к mod_status я не придумал ничего кроме как дёргать его wget-ом c ключем -O для вывода результата в необходимый мне файл.
Для консольного запуска mytop используем ключ -b

В итоге для сбора статистики получилось такое:

ps -waux > ps-$(date +%Y%m%d%H%M)
mytop -b > mytop-$(date +%Y%m%d%H%M)
wget http://mod_status_server.ru:8080/modstatus/ -O wget-$(date +%Y%m%d%H%M)

В принципе можно грузящий процесс выудить ps-ом и грепануть на его наличие логи.

рубрики: SEO | Комментарии (0)

10 Июнь 2013

NGINX ограничиваем доступ к папке

Собственно, нужно правильно средствами NGINXа ограничить доступ к админке сайта.
В данном случае это Joomla и папочка /administrator/ которую последнее время сильно стали тревожить подозрительные запросы …
Пишу «правильно» т.к. года два назад написал конфиг преследуя эту же цель и «вроде бы» всё работало как надо!
На днях всплыло, что не как надо 🙂
Итак:

location /administrator/ {
	auth_basic "Hello, please login";
        auth_basic_user_file /site_userpass_path/.htpasswd;	    	    	    
}

Оказалось вообще не верным, т.к. работало только на /administrator/
И пропускало все атаки, переборы и т.д. на /administrator/index.php — которые уходили в секцию обработки скриптов

location ~ \.php$ { 

«Правильное» решение, сразу же найденное в сети — использование префикса ^~
то есть

location ^~ /administrator/ { ...

НО! в таком случае правило работает на все файлы находящиеся в /administrator/
и до location обрабатывающего статику а-ля

location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {

дело не доходит! а т.к. у меня fast-cgi то статика осталась вообще не удел
всё происходит из-за приоритетов обработки location
Правильно обработки папки /administrator/ имеет более высокий приоритет, и после его обработки дальнейшие location не обрабатываются

Подумал я и ничего лучше, чем обработку /administrator/ запихать в регулярку (для выравнивания приоритетов) не придумал
Финальный результат (закоментированные строки убирать специально не стал, т.к. имея статический IP — это самая лучшая защита админки)

location ~* ^/administrator/.+\.php {
#	    allow X.X.X.X;
#	    deny all;

            auth_basic "Hello, please login";
            auth_basic_user_file /site_userpass_path/.htpasswd;	    	    	    	    
	    
	    fastcgi_pass   unix:/tmp/php-fcgi.sock; 	
	    include        /usr/local/etc/nginx/fastcgi_params; 	    	
	    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name; 	    
	}	

Таким образом все php из /administrator/ «пройдут» через секцию с авторизацией, не помешав обработке статики.
Ч.т.д.

рубрики: CMS, NIX, security, Администрирование, Полезности | Комментарии (0)

5 Июнь 2013

JQuery — мультиселект и cлайдер бегунок

Задача — создать фильтр с красивым выпадающим списком с возможностью множественного выбора, а так же слайдер-бегунок для выбора числовых диапазонов.

Собственно, плотный поиск в сети конечно предоставит необходимые сведения, но может кому пригодиться найденный мною материал:

1. jQuery Dropdown CheckList — TESTING — собственно, готовое решение множественного выбора с различными демонстрационными примерами (мне например сильно пригодилась опция ‘firstItemChecksAll’
2. По слайдеру это вообще стандартное решение на JQuery — заходим на jQuery UI чекаем Slider — скачиваем, настраиваем. Посмотреть различные готовые варианты можно там же.

Пост больше «закладочный» для себя — поэтому без подробностей (на указанных ресурсах всё подробно) — будут подводные камни в реализации — добавлю.
Ну и как закончу фильтр — скину линк для критики.

рубрики: Вёрстка, Полезности, Программирование, Сайтостроение | Комментарии (1)

Яндекс.Метрика