Архив рубрики: Scripting/coding

HowTo и примеры использования bash, C, Python, Ruby и т.д.

NGINX: PHP-FPM — включение PHP server-status

8 октября 2014

По аналогии с Apache: включение server-status в связке NGINX+PHP-FPM тоже можно включить подробный вывод информации о выполняющихся скриптах PHP (для самого NGINX имеется другой модуль, в данном случае речь конкретно про PHP-FPM). По-умолчанию он отключён, а пример и описание можно взять в файле /etc/php-fpm.d/www.conf (CentOS) и настроить отдельно для каждого пула PHP-FPM.

NGINX: PHP-FPM — Unknown: Failed to write session data (files).

5 октября 2014

После переезда на NGINX+ PHP-FPM — в логе ошибок стали появляться записи вида: 2014/10/04 09:51:00 [error] 15762#0: *155337 FastCGI sent in stderr: «PHP message: PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0» while reading upstream, client: 37.***.***.56, server:… Читать далее »

NGINX: настройка сервера и PHP-FPM

2 октября 2014

Настройки NGINX Основные параметры конфигурации Первым запускается «мастер» процесс /usr/sbin/nginx, который открывает необходимые порты и запускает количество worker_processes, указанное в конфигурации от имени пользователя, который указан там же. Кроме того, он записывает свой PID в файл /var/run/nginx.pid: # ps aux | grep «nginx: master» | grep -v grep root 7599 0.0 0.0 47488 556 ?… Читать далее »

Python: утилита для создания нового Apache VirtualHost + пользователь + база MySQL

14 сентября 2014

Готовясь с переезду со старого сервера (FreeBSD) на новый (CentOS) — пришлось задуматься о том, сколько сайтов надо создавать вручную: добавить пользователя, создать директории, файлы логов, отредактировать файл конфигурации Apache HTTP. С целью упростить себе жизнь, а заодно — попрактиковаться в Python, задумался следующий скрипт. Предполагается, что Apache настроен с поддержкой suEXEC + mod_fcgid (CentOS:… Читать далее »

Python: зачем нужен if __name__ == «__main__» ?

12 сентября 2014

Во многих модулях можно встретить конструкцию вида: if __name__ == «__main__»: func() Её основное назначение — разделение кода, который будет выполнятся при вызове кода как модуля (при импортировании его в другой скрипт) — и при запуске самого модуля, как отдельного файла. Возьмём такой пример. Скрипт 1: #!/usr/bin/env python print(‘Script 1. My name is: %s’ % __name__)… Читать далее »

Python: скрипт LogParcer

11 сентября 2014

Задача скрипта — выполнять постоянную проверку лога приложения и, в случае обнаружения сообщений об ошибке подключения к базе данных, останавливать Tomcat. Т.к. после трёх неудачных попыток подключения аккаунт на Oracle-сервере блокируется — необходимо было жестко останавливать приложение до того, как аккаунт будет заблокирован. Для PROD-сервера — конечно, «убивать» приложение нельзя, поэтому — там скрипт только… Читать далее »

Ubuntu: установка PyCharm

8 сентября 2014

Устанавливаем Java, если ещё не установлена: # add-apt-repository ppa:webupd8team/java Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK6 / JDK7 / JDK8). There are no actual Java files in this PPA. … OK # aptitude update # aptitude -y install oracle-java7-set-default По ходу установки — принимаем условия лицензии.

Python: модуль pysed — расширенный аналог редактора sed

28 августа 2014

Страница проекта на PyPI. Там есть достаточно подробный HowTo с примерами, но мало показано применение модуля непосредственно в коде — больше в консоли. В Python есть строковый метод replace: Help on function replace in string: string.replace = replace(s, old, new, maxsplit=-1) replace (str, old, new[, maxsplit]) -> string Return a copy of string str with… Читать далее »

Python: работа с файлами

24 августа 2014

Для работы с файлами в Python используется встроенная функция open(): Help on built-in function open in module __builtin__: open(…) open(name[, mode[, buffering]]) -> file object Open a file using the file() type, returns a file object. This is the preferred way to open a file. С помощью open() создаётся новый объект, над которым потом можно выполнять… Читать далее »

Python: ООП — наследование классов

21 августа 2014

Наследование в ООП Понимание наследования в ООП и классах Python обязательно для понимания. Рассмотрим простые примеры наследования. Возьмём код из статьи Python: классы — краткий обзор: аргументы, методы и специальные методы, импорт классов: class thisIsClass: »’This is class documentation»’ # зададим два аргумента arg1 = ‘string’ arg2 = 100 # зададим два аргумента — changearg1, changearg2… Читать далее »