Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

Vivazzi.ru

Личный сайт Мальцева Артема

Воображение — это самое главное, оно является отражением того, что мы притягиваем в свою жизнь.

Альберт Эйнштейн

IT Блог

Статьи на технические темы

Где находятся логи, пути, пакеты, конфигурационные файлы пакетов в Линуксе

Список путей к разным файлам и папкам, которые мне время от времени пригождаются.

Питоновская директория библиотек, куда устанавливаются зависимости (python dist-packages):

/usr/local/lib/python2.7/dist-packages
/home/username/.local/lib/python2.7/site-packages
/proc/3817/cwd/env/lib/python2.7/site-packages/

Исполняемый файл nginx:

/usr/local/sbin

Лог cron:

/var/log/syslog

Для вывода результата работы в файл: > path/to/file 2>&1, например:

* * * * * python /home/username/my_app/src/manage.py send_queued_mail > /home/log.txt 2>&1

Часто используемые команды shell

Когда дело доходит до администрирования системы Linux и, в частности, разворачивания сайтов на сервере, тогда встаёт вопрос об автоматизации своего труда. На помощь приходят shell скрипты. Так, например, они помогают мне делать автоматическое резервное копирование баз данных.

Вот список часто используемых мною команд.

Вывести на экран слово hello:

echo hello

Присвоить некоторое значение и вывести его на экран ($ - этот знак используется для получения значения переменной):

house_count=5
echo $house_count

word=lambada
echo $word

Записать результат выполнения в переменную:

DATE=`date +%Y%m%d`  # присвоит переменной DATE текущую дату в формате %Y%m%d (например, 20140215)
FILES=`find '/home/user/media...

Команды Linux

Команды, которые мне пригодились для настройки Linux. Список будет пополняться по мере использования команд.

Операции с файлами

Копирование файла с удалённого сервера

$ scp root@site.ru:/home/somefile.txt somefile.txt

Быстрая очистка файла

$ cp /dev/null file.txt

Просмотр нагрузки системы

$ top

Настройка производительности

Просмотр сведений о системе

$ cat /etc/*release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=14
DISTRIB_CODENAME=nadia
DISTRIB_DESCRIPTION="Linux Mint 14 Nadia"
NAME="Ubuntu"
VERSION="12.10, Quantal Quetzal"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu quantal (12.10)"
VERSION_ID="12.10"

Просмотр версии ядра

$ uname -r
2.6.32-042stab076.8
$ uname -a
Linux vivazzi 2.6.32-042stab076.8 #1...

pycharm run/debug configuration. Примеры конфигураций

Конфигурации бывают нескольких видов. В моей практике распространены две:

  1. Django server - для запуска самого сайта.
  2. Python - для выполнения различных скриптов, у меня чаще всего management-команд.

Расмотрим в отдельности.

Запуск Django приложения в PyCharm (Пример конфигурации Django server)

У меня лично этот процесс происходит автоматически, то есть при открытии папки проекта (через меню "File \ Open...") PyCharm самостоятельно создаёт конфигурацию Django server с необходимыми настройками:

Если у меня открыть настройки, то он будут такими:

Атоматически распознать Django server и проставить настройки помогает структура папок проекта. У меня она выглядит следующим образом:

collect_static - папка, куда собирается вся статика на боевом сервере для раздачи...

Ошибка PIL: decoder jpeg not available

При использовании PIL в Linux может возникнуть ошибка: decoder jpeg not available. Ниже описываются несколько способов, позволяющих решить данную проблему.

1) PIL требует наличие библиотеки libjpeg-dev

Попробуйте установить её (ключ -I в команде pip install выполняет переинсталяцию библиотеки):

$ sudo apt-get install libjpeg-dev​
$ pip install -I PIL

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

Для x64 разрядной системы:

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

Для x32 разрядной системы:

$ sudo...

Резервное копирование баз данных postgresql

Бекап базы данных

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

  1. Создание бекапа БД postgresql без пароля утилитой pg_dump.
  2. Написание скрипта, который создаёт бекап базы данных (с сжатием) картинкок.
  3. Добавление задания в cron.

Так как резервное копирование должно осуществляться периодически, например, каждый день, то необходимо сделать так, чтобы бекап происходил без пароля. На просторах интернета я наткнулся на примеры:

pg_dump -h localhost -p 5432 -U user_name -F c -b -v -f mydb.backup mydb...

Полезные и востребованные команды postgresql

Список команд, которыми я пользуюсь для управления posqresql 9.Х:

Создание нового пользователя:

su postgres
createuser -P -s postgreadmin
# и введите пароль

Создание владельца базы данных test_user

su postgres
psql
CREATE ROLE test_user WITH NOSUPERUSER LOGIN PASSWORD 'test_pass';

Изменения пароля пользователя postgresql:

# для root:
passwd postgres
# вводим два раза пароль (для подтверждения)
su postgres
psql  # вошли в клиент postgresql
alter user имя_пользователя with password 'пароль';

Расширение/ограничение прав пользователя:

alter user user_name superuser createrole createdb;  # расширяем
alter user user_name nosuperuser nocreaterole nocreatedb;  # ограничиваем

Запуск, перезапуск, остановка postgresql:

service postgresql start
service postgresql restart
service postgresql stop

список баз данных

psql...

Удалённый доступ к PostgreSQL

​В первую очередь нужно разрешить подключаться к postgresql с внешних ip. Для этого находим файл postgresql.conf (у меня находится в папке /etc/postgresql/9.1/main) и правим следующую строчку:

# /etc/postgresql/9.1/main/postgresql.conf
listen_addresses = '*'

Обратите внимание, что нужно убрать перед директивой listen_addresses знак комментария #.

А в файле pg_hba.conf (лежит в там же, что и postgresql.conf) добавляем следующую строчку:

# /etc/postgresql/9.1/main/pg_hba.conf
hostssl  all  postgreadmin  0.0.0.0/0  md5

где:
hostssl - подключаемся через SSL
all - разрешаем подключение ко всем базам
postgreadmin - имя пользователя, которому разрешаем подключение
0.0...


Добавляем сайт в поисковики google, yandex, mail, rambler, bing

Для того чтобы ускорить индексацию ваших сайтов, нужно их добавить в популярные поисковые системы. Для России на сегодняшний день популярны поисковики google, yandex, mail, rambler, bing. Далее приводится список ссылок, где вы можете добавить свой сайт на индексацию.

google
yandex
mail
rambler
bing


Рекурсивное удаление файла в python

Удаление файла

Стандартное удаление файла в python:

import os
os.remove(path)

path - путь до папки.

Удаление папки

Для удаления папки нужно подключить специальный пакет shutil:

import shutil
shutil.rmtree(path, True)

path - путь до папки.

Аргумент True в методе rmtree() позволяет команде игнорировать ошибки, которые могут встретиться при удалении каталога.

Рекурсивное удаление файлов и папок

Недавно надо было удалить ненужный файл placeholder из некоторого числа вложенных папок. Немного допилив чужой скрипт, у меня вышла следующая полезная функция, которая удаляет и файлы, и папки по заданному имени (при необходимости можно этот скрипт модифицировать для удаления только файла или только папки...

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте