понедельник, 17 ноября 2014 г.

Django + wsgi установка и настройка с нуля

ВСЕ ДЕЙСТВИЯ ПРОИЗВОДЯТСЯ ПОД УЧЁТКОЙ root, УБЕДИТЕЛЬНАЯ ПРОСЬБА ДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ ФАЙЛОВ КОНФИГУРАЦИИ ПЕРЕД ИХ ИЗМЕНЕНИМЯ

# Установка subversion
apt-get install subversion
# Качаем Django , желательно перейти в каталог /home
svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk
# Узнаём где лежит Питон, что добавить в него Django
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
# Делаем ссылку на скаченный Django в каталог с Питоном ниже ПРИМЕР
ln -s /home/django-trunk/django /usr/lib/python2.5/site-packages/django
# Проверяем работоспособность Django.
$ python
>>>import django
>>>django.VERSION
# Установка Серверной части используентся mod wsgi
aptitude install apache2 libapache2-mod-wsgi
# Делаем доступной команду django-admin.py из любго места
ln -s /home/django-trunk/django/bin/django-admin.py /usr/local/bin
# Делаем папки для будующих проектов
mkdir -p /home/django-projects/mysite/
# Создаём сам проект "site" в созданной папке /home/django-projects/mysite/
django-admin.py startproject site
# Скорректируем названия модуля для импорта
perl -pi -e 's/site.urls/urls/g' site/settings.py
# Назначаем права для папки проектов
chmod 0777 -R django-projects/
# Подлючаем проект к Серверу. Создаём файл "django.wsgi" в папке /home/django-projects/mysite/site
nano /home/django-projects/mysite/site/django.wsgi

####################################
# django.wsgi текст файла #
####################################
import os, sys
sys.path.append('/home/django-projects/mysite/')
sys.path.append('/home/django-projects/mysite/site')
os.environ['DJANGO_SETTINGS_MODULE'] = 'site.settings' # в этой строчке site - название твоего проекта

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()
# Сохроняем файл ctrl+o и выходим
# Теперь идём в папку с Apache /etc/apache2/ предварительно сделай резервную копию "apache2.conf"
# Редактируем файл конфигурации apache2.conf для соединения прокта django с веб сервером, для этого добавим VirtualHost
nano /etc/apache2/apache2.conf
############################################
# apache2.conf то что нужно добавить #
############################################
ServerAdmin my@email.com
ServerName mysite.com
ServerAlias www.misite.com

WSGIDaemonProcess mysite user=user_name group=user_name processes=5 maximum-requests=10000
WSGIProcessGroup mysite

Alias /media/ /usr/lib/python2.5/site-packages/django/contrib/admin/media/
#Alias /static/ /home/django-projects/mysite/static/
#Alias /files/ /home/django-projects/mysite/files/

WSGIScriptAlias / /home/django-projects/mysite/site/django.wsgi
Order deny,allow
allow from all

ErrorLog /var/log/apache2/mysite-error.log
LogLevel warn

CustomLog /var/log/apache2/mysite-access.log combined


# Сохроняем файл ctrl+o и выходим


# Перезапускаем сервер Apache
/etc/init.d/apache2 restart
идём в браузер, вписываем адрессвоего компа и радуемся






среда, 5 ноября 2014 г.

Изменение порядка отображения элементов списка li

Вот уже несколько месяцев работаю на новом месте, занимаюсь развитием сайта компании. Немного опишу сам проект, т.к. считаю его интересным. Сам сайт построен на Битрикс 14, функционал содержит интернет-магазин, особенность которого состоит в взаимодействии с SAP , от туда подтягиваются данные по остаткам, ценам и характеристикам в режиме реального времени.

Т.к. работаю совсем недавно, то каждая задача уникальна и интересна. Вот например:

И так, есть меню продукции, которое имеет 3 уровня вложенности.

Категория продукта 1
Категория продукта 2
  Под раздел 1
  Под раздел 2
  Под раздел 3
Категория продукта 3
Категория продукта 3  

Задача в "Категории продукта 2" вложенным пунктам задать необходимый порядок
Категория продукта 2
  Под раздел 3
  Под раздел 1
  Под раздел 2

Изначально мне казалось, что все просто - нужно задать порядок разделов в Битрикс, но вот облом не нашел я такой возможности, видел подобные вопросы на форуме без ответа.
Ладно, у нас же есть ещё и SAP нужно там задать нужный порядок и будет счастье, но и тут облом, в SAP все хорошо, а на сайте порядок не меняется.

Что же делать дальше, меню продукции выводит компонент Битрикс, нужно его скопировать и доработать с возможностью задавать порядок пунктам меню. Но это сложно пока для меня, поэтому решил задачу с помощью jQuery. Сложность состояла в выборе элементов списка, т.к. они не имеют уникальных ID.

И так имеем вот такой список
http://jsfiddle.net/gwocnepp/1/



Т.к. в конкретной задаче я знаю сколько всего элементов, и как они называются, то можно решить задачу "влоб"
Сначала получим нужные элементы, и положим в переменные.

var element1 =  $('ul:contains("Категория продукта 2")>ul>li:nth-child(1)').detach();
var element2 =  $('ul:contains("Категория продукта 2")>ul>li:nth-child(1)').detach();
var element3 =  $('ul:contains("Категория продукта 2")>ul>li:nth-child(1)').detach();

Если сейчас выполнить код то подразделы не будут отображаться, мы сделали удаление элемента без разрушения его содержимого   detach().

Теперь используя переменные element1, element2, element3, установим нужный нам порядок (3,2,1)

$('ul:contains("Категория продукта 2")>ul').append(element3);
$('ul:contains("Категория продукта 2")>ul').append(element1);
$('ul:contains("Категория продукта 2")>ul').append(element2);

Результат можно посмотреть тут http://jsfiddle.net/gwocnepp/1/


Добавляем этот скрипт в footer шаблона и наслаждаемся жизнью

Есть конечно минусы у такого решения:
- меню будет постоянно перерисовываться при открытии страницы
- не универсальность,т.е. стоит заголовку поменяться или появится новый пункт меню и сортировку придётся переделывать.

пятница, 15 октября 2010 г.

Sharepoint 2010 Let get start it - Шарик для новичков

SharePoint 2010

Sharepoint 2010Знакомимся и с новым продуктом от компании Microsoft – SharePoint 2010. На данной странице я собрал для Вас много полезнейшего материала который может пригодиться в процессе изучения SharePoint 2010. Самое вкусное по ссылке прочитать остальную часть записи :) .
Читать:
Видео:
Скачать:

четверг, 7 октября 2010 г.

Подготовка к переходу на Sharepoint 2010

Предыдущий пост был посвящен развёртыванию Sharepoint 2007 и переносу баз данных с действующего портала. Настало время  развернуть Sharepoint 2010. Для этих целей я взял статью .. http://www.winline.ru/articles/6943.php?MID=25320&result=not_approved#message25320

Первое что необходимо сделать - проверить на наличие ошибок конфигурацию портала с помощью команды.

stsadm -o preupgradecheck

Проверка показала наличие ошибок :

1. SiteDefinitionInfo
2. FeatureInfo
Описание проблемы и пути решения
http://dhruvshahsp.blogspot.com/2010/10/preupgradecheck-featureinfofailed.html
3.SiteOrphan

Забив на ошибки, я решил установить сверху новый шарик 2010. И он установился, предложил обновить старый шарик с изменением интерфейса. Всё было круто ....., но при открытии страницы узла или админки IIS вадаёт ошибку 500.19.

четверг, 30 сентября 2010 г.

Sharepoint 2007 to 2010 начало


Жила была компания  и стремилась она сделать жизнь своих сотрудников проще, а бесценный труд эффективнее. И появился из тёмных кузниц сурового Microsoft-а в чешуе как жар горя Sharepoint 2007.


Думаю что с лирикой пора завязывать и перейти к сути темы. У нас в компании развёрнут sharepoint 2007 который вполне справляется со своими обязанностями. Однако время не стоит на месте и вот Мелкософт опубликовал новую версию своего продукта с индексом 2010. Было принято решение о переходе на новую платформу с переносом существующих решений реализованных в 2007-ом шарике.

Настало время рассказать про техническую часть вопроса:

Sharepoint 2010 требует: 
64-х разрядную систему
4 гига ОЗУ
процессор адекватный современным требованиям

Имеющийся Шарик 2007 стоит на 32 битной системе. Для бесперебойного функционирования портала было решено развернуть дополнительный Шарик 2007 на отдельном сервере с 64 -ой ОС Windows Server 2008, установить туда же  MSSQL 2008, далее перенести зеркало базы данных. После этого провести ряд экспериментов по миграции на Sharepoint 2010.

Ниже будут описан ход экспериментов.

Итак поехали.
1) Windows Server 2008 установлен
2) MSSQL2008 установленн
3) Устанавливаем Sharepoint 2007, я использую в качестве руководства статьи с этого блога
Установка и настройка

Обновление (работа с системными утилитами stsadms.exe)


Возник ряд проблем. Пр подключении реальной БД с к новому приложению... Мы не смогли с первого раза отобразить базу контента из зеркала БД, предположительно из-за разных языковых версий шарика. Поэтому пришлось переустановить шарик, для установки потребовались обновления... подробно вопрос обновления рассмотрен здесь http://keirgordon.com/post/Installing-SharePoint-on-Windows-Server-2008-R2.aspx .

Ура! На русский sharepoint база контента подцепилась без проблем.
Теперь осталось подключить ssp (Sharepoint Services Provider). Подключается он так же и как и база контента:

1. В шарике создаётся новое приложение идентичное по названию БД.
2. Делаем подмену БД, т.е. отключаем только что созданную базу и подключаем "живую" с таким же названием.

Ниже приведена простая инстраукция по переносу баз:


  • Бекап всех схем БД на сервере №1. И бекап шарика в целом.




  • Restore всех схем БД на сервере №2. Восстановление учётных записей.




  • Используя команду Psconfig.exe –cmd configdb -disconnect отсоединяем БД SharePoint_Config




  • Используя команду psconfig.exe -cmd configdb  -connect -server "newsql" -database "SharePoint_Config" -dbuser "mossdbcreate" -dbpassword "Aaa123456" -user "DOMAIN\USER" -password "user_password" присоединяем БД конфигурации, указывая сервер №2




  • В случае, если в п.4 вылезает ошибка с проблемой соединения с БД и по вашему мнению все ок - можете запустить мастер настройки SP и указать новый сервер для SharePoint_Config вручную




  • Заходим в панель администрирования\операции\база данных конф. по умолчанию. Устанавливаем новый сервер.




  • Заходим в управление приложениями\базы данных содержимого. Последовательно отключая каждую БД от приложения создаем новый коннект указывая сервер №2.




  • Отключая БД SharePoint_AdminContent панель администрирования становится недоступной. Для завершения задачи требуется присоединить новую БД через stsadm команду addcontentdb.




  • Используя stsadm команду deletessp с ключом -force удаляем поставщика общих служб по умолчанию




  • Используя stsadm команду restoressp восстанавливаем поставщика об. служб, указывая в качестве сервера - сервер №2




  • Останавливаем все поисковые службы на сервере №1 и восстанавливаем эти службы с ссылкой на сервер№2




  • Отключаем сервер №1 и проверяем работоспособность системы





    1. Команды из консоли которые оказались полезными:

      Делаем доступной команду stsadm из любого места 
      set PATH="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN";%PATH%


      Проверяем какие БД подключены к указанному узлу
      stsadm.exe -o enumcontentdbs -url http://osr_test:28190


      Выполняем эту команду перед отсоединением БД от приложением
      stsadm -o preparetomove -contentdb osr_test:osr25_WSS_Content_28190


      Отсоединяем БД от приложения
      stsadm -o deletecontentdb -url http://osr_test:28190 -databasename osr25_WSS_Content_28190


      Присоединяем нужную БД к приложению
      stsadm -o addcontentdb -url http://osr_test:28190 -dn osr25_WSS_Content_28190 -ds osr_test


      Извлечение файлов обновления в папку updates дистрибутива Sharepoint
      officeserver2007sp2.exe /extract:"c:\sharepoint tools\mymossimage\Updates"

      Делает бэкап всего узла
      stsadm -o backup -url http://osr_test:28178 -filename c:\arhive.bak -backupmethod full -overwrite

      Удаляет ssp
      stsadm -o deletessp -title SharedServices1 -force



      понедельник, 22 марта 2010 г.

      Django + WSGI установка и настройка с нуля



      ВСЕ ДЕЙСТВИЯ ПРОИЗВОДЯТСЯ ПОД УЧЁТКОЙ root, УБЕДИТЕЛЬНАЯ ПРОСЬБА ДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ ФАЙЛОВ КОНФИГУРАЦИИ ПЕРЕД ИХ ИЗМЕНЕНИЯ

      # Установка subversion
      apt-get install subversion
      # Качаем Django , желательно перейти в каталог /home
      svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk
      # Узнаём где лежит Питон, что добавить в него Django
      python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
      # Делаем ссылку на скаченный Django в каталог с Питоном ниже ПРИМЕР
      ln -s /home/django-trunk/django /usr/lib/python2.5/site-packages/django
      # Проверяем работоспособность Django.
      $ python
      >>>import django
      >>>django.VERSION
      # Установка Серверной части используентся mod wsgi
      aptitude install apache2 libapache2-mod-wsgi
      # Делаем доступной команду django-admin.py из любго места
      ln -s /home/django-trunk/django/bin/django-admin.py /usr/local/bin
      # Делаем папки для будующих проектов
      mkdir -p /home/django-projects/mysite/
      # Создаём сам проект "site" в созданной папке /home/django-projects/mysite/
      django-admin.py startproject site
      # Скорректируем названия модуля для импорта
      perl -pi -e 's/site.urls/urls/g' site/settings.py
      # Назначаем права для папки проектов
      chmod 0777 -R django-projects/
      # Подлючаем проект к Серверу. Создаём файл "django.wsgi" в папке /home/django-projects/mysite/site
      nano /home/django-projects/mysite/site/django.wsgi

      ####################################
      # django.wsgi текст файла #
      ####################################
      import os, sys
      sys.path.append('/home/django-projects/mysite/')
      sys.path.append('/home/django-projects/mysite/site')
      os.environ['DJANGO_SETTINGS_MODULE'] = 'site.settings' # в этой строчке site - название твоего проекта

      import django.core.handlers.wsgi

      application = django.core.handlers.wsgi.WSGIHandler()
      # Сохроняем файл ctrl+o и выходим
      # Теперь идём в папку с Apache /etc/apache2/ предварительно сделай резервную копию "apache2.conf"
      # Редактируем файл конфигурации apache2.conf для соединения прокта django с веб сервером, для этого добавим VirtualHost
      nano /etc/apache2/apache2.conf
      ############################################
      # apache2.conf то что нужно добавить #
      ############################################
      ServerAdmin my@email.com
      ServerName mysite.com
      ServerAlias www.misite.com

      WSGIDaemonProcess mysite user=user_name group=user_name processes=5 maximum-requests=10000
      WSGIProcessGroup mysite

      Alias /media/ /usr/lib/python2.5/site-packages/django/contrib/admin/media/
      #Alias /static/ /home/django-projects/mysite/static/
      #Alias /files/ /home/django-projects/mysite/files/

      WSGIScriptAlias / /home/django-projects/mysite/site/django.wsgi
      Order deny,allow
      allow from all

      ErrorLog /var/log/apache2/mysite-error.log
      LogLevel warn

      CustomLog /var/log/apache2/mysite-access.log combined


      # Сохроняем файл ctrl+o и выходим


      # Перезапускаем сервер Apache
      /etc/init.d/apache2 restart
      идём в браузер, вписываем адрессвоего компа и радуемся