26 нояб. 2012 г.

Hello world! с помощью mod_python

Написание сайта с использованием mod_python состоит из двух этапов: конфигурирование сервера (apache) и собственно написание кода.

1. Конфигурация сервера:

Вначале установим модуль, если его еще нет:

aptitude install libapache2-mod-python
a2enmod python

Подредактируем, например, на Debian файл /etc/apache2/sites-available/default :


<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory /var/www/>
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddHandler mod_python .py        #говорит апачу передавать обработку файлов *.py в mod_python
                PythonHandler index                     #говорит, в каком файле находится обработчик хэндлеров.
                DirectoryIndex index.py                #указывает, какой файл отображается по-умолчанию в директории
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        AddHandler mod_python .py
        PythonHandler mod_python.publisher
        PythonDebug On                                  #включает выведение ошибок в браузер - удобно пр иотладке
        DirectoryIndex index.py
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Кодинг на Python в NetBeans (7.2.1)

Я перепробовал много IDE для написания кода на питончике - начиная с обычного nano и заканчивая платными продуктами - PyCharm и WingIDE. Но в итоге выбор пал на бесплатный NetBeans, т. к. выкладывать 100 баксов за платную ИДЕ как-то не хочется... Итак, приступим (описанное здесь я тестировал на ОС Debian 7 и Oracle Linux 6.3).

1. Качаем Java SE SDK с официального сайта Oracle и устанавливаем

2. Качаем с оф. сайта последнюю стабильную версию (на момент написания статьи это была версия 7.2.1) - http://netbeans.org/downloads/ и качаем любую версию, устанавливаем. При установке может попросить указать папку с Java SDK - указываем (если мы качали .tar.gz).

3. А теперь сама "Магия" :) Запускаем наш свеженький NetBeans и переходим в меню Tools > Plugins, вкладка Settings и нажимаем Add, указываем какое-то вменяемое имя и как URL - http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz


4. Переходим на вкладку Available Plugins и в поиску набираем python. Будет 3 плугина - устанавливаем, презапускаем IDE, ждем пока она проиндексирует питоновские модули, и кодим на питоне с автодополнением и т. п. :)


12 нояб. 2012 г.

Отключения службы фаерволла в Windows Server 2008 и 2012 без потери доступа по RDP

Если просто остановить службу, то у нас отвалится RDP  и порт 3389 будет блокирован на сервере.

Чтобы этого не допустить, то надо не сразу останавливать службу, а вначале выполнить команды в консоли с правами администратора:

netsh firewall set portopening protocol=TCP port=3389 mode=ENABLE
netsh advfirewall set allprofiles state off

Иначе прийдется бежать за монитором :)

Как получить в Python текущее время в наносекундах

Код такой:

>>> import time 
>>> print "%.9f" % time.time()
1352732708.160078049

7 нояб. 2012 г.

SSH tunneling

Пробросить порт с помощью ssh довольно просто:

ssh -R localip:localport:remoteip:remoteport localuser@localip

пример: 192.168.1.1:8080:192.168.2.1:80 root@192.168.1.1

Т. е. порт на той машине, где запущена эта команда будет форвардиться на порт на удаленной машине. Например, локальная машина имееть vpn-подключение, недоступной другим машинам и они могут через нее коннектиться к какомуто серверу на другом конце vpn.
В примере все запросы на порт 8080 машины 192.168.1.1 будут идти на порт 80 машины 192.168.2.1 и, соответственно, ответы будут приходить обратно. В общем, примерно то же, что и port forwarding в роутере.