Как использовать passwd

Standard

Коротка заметка ( в будущем наполню):
1) Заходите в document root сайта и выполняете htpasswd -c .passwd someuser
где .passwd — файл к-ый будет создан и someuser — имя пользователя
2) В .htaccess вашего document root пропишите

AuthType Basic
AuthBasicProvider file
AuthUserFile /path/to/your/file/.passwd
Require user someuser

Проблемы с proftpd

Standard

Если у вас появилась такая строка «proftpd unable to determine ip address».

Это значит, следующее: ftp берет название вашего хоста из /etc/hostname и дальше пытается определить его ip-адрес, но не может. Скорей всего эта ошибка появится когда вы измените hostname на серваке. Решение — простое, добавьте в /etc/hosts строку:

127.0.0.1 YourHostname.

Как подключиться по openvpn в ubuntu

Standard

Только что пришлось подключаться через vpn,  в windows постоянно были какие-то косяки, и хаки с openvpn клиентом. Сел за ubuntu, и все завелось в пару команд.

Итак наши  действия:

  1. Устанавливаем openvpn: sudo apt-get install openvpn
  2. Подключаемся используя конфиг-файл: openvpn —config your_config_file

Вычисляем md5 и sha1 строки в консоли

Standard

Часто бывает необходимо вычислить md5 (или sha1) значение строки (для паролей, к примеру). Раньше мне приходилось идти в браузер набирать в поисковике «md5 online», теперь использую только консоль. На маке есть чудесная программа openssl, ее мы будем использовать для вычисления. Т.к. взять аргумент в alias нельзя, приходиться создавать функции, итак мои функции для вычисления sha1 и md5 в ~/.bash_profile :

sha1(){
echo -n "$1" | openssl sha1;
}
# Назвал не md5 тк такая прога уже есть в консоли мака,
# чтобы не затереть выбрал km5
km5(){
echo -n "$1" | openssl md5;
}

чтобы начать их использовать — набирите source ~/.bash_profile. Теперь можно вычислить sha1 от строки 111:

sha1 111
# => 6216f8a75fd5bb3d5f22b6f9958cdede3fc086c2

Как добавить / убрать слеш из урла

Standard

Сегодня речь пойдет о редиректах насущных, в прошлый раз я упомянал как сделать редирект с www на без www, сейчас задача убрать из урла слеш (или добавить), например должен отсылать 301 редирект на /.

Пропишите это в .htaccess:

# Чтобы убрать слеш
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Это чтобы добавить слеш
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

Как поменять название хоста в shell

Standard

У меня появилось 3 сервера, все на том же hetzner. Тк по умолчанию названия у них почти одинаковые (название ОС + архитектуры) можно запутаться с каким сервером работаешь в shell. Чтобы этого избежать выполняем такую команду:

hostname SOMENAME

После чего, перезагружаем shell (у меня — bash):

exec bash -l

к слову, стандартная перезагрузка (shell source ~/.bashrc) не изменяет название хоста.
К сожалению приведенные выше команды изменяют название до следующей перезагрузки ОС. Чтобы сделать изменения перманентными — задаем необходимое название в этом файле:

/etc/hostname

После этого, перезапуск apache может выдать такую ошибку: «apache2: apr_sockaddr_info_get() failed for somename» — пропишите в /etc/hosts строку «127.0.0.1 somename».
У вас также может быть ошибка «apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName» чтобы избавиться добавьте строку ServerName localhost в файл /etc/apache2/httpd.conf .
В итоге у меня все работает по такому принципу: я даю серверу имя в панели управления hetzner, затем прописываю это имя в конфиге ssh (статья как работать с ssh) и наконец: изменяю имя хоста на самом сервере, как я описал выше.

Как закрыть от роботов весь dev сервер

Standard

Задача: на сервере разработки или staging-сервере, необходимо закрыть все сайты от индексации роботами. Шаг #1: добавляем следующие строки в httpd.conf

SetHandler None
Alias /robots.txt /var/www/robots.txt

Шаг #2: создаем robots.txt по вышеупомянутому пути, со следующими строками

User-agent: *
Disallow: /

Шаг #3: перезагружаем apache

apachectl restart

Что интересного в терминале Mac OS X ?

Standard

Под виндой можно работать в putty, но это не тоже самое, что работа в терминале мака. Терминал имеет множество преимуществ, помимо стандартных утилит из unix мира, в нем присутствуют и свои.

Очень полезная команда open — служит чтобы открывать стандартными программами файлы, например вы находитесь в директории /users/someuser/ и хотите открыть эту папку в Finder — просто наберите open . и терминал откроет Finder с этой папкой. Обратное кстати тоже верно — если вы перетащите папку в терминал, он автоматически вставит путь к этой папке. Если  в выводе есть ссылка, нажмите cmd + двойной щелчок по мышке, откроется браузер с этой ссылкой. Тут я описывал как добавить wget на mac os.

Новые команды, к-ых нет в Linux:

1) ditto:

ditto myfile.txt Documents Копирует файл myfile.txt в Documents
ditto Documents "Documents Backup" Создает копию директории Documents называемой "Documents backup"
ditto archive.zip Documents Распаковывает контент archive.zip директорию Documents.
ditto Documents archive.zip Создает новый сжатый архив содержащий директорию Documents

2) cal / ncal :
Выводят календарь в терминал:

3) say:
Произносит необходимую фразу, к примеру say «Как вам этот блог ребята?»
4) afplay:
Проигрывает музыкальный файл из консоли — afplay sound.mp3

Сказ о переезде к Hetzner хостеру

Standard

Недавно, блог вашего покорного слуги был недоступен дня два, а вместе с ним порядка 20 сайтов. Причина как мне объяснил хостер «Вы ставили что-то из deb http://ftp.us.debian.org/debian/ sid main … в итоге недоступна сеть» на первый взгляд показалась мне сомнительной, но позже вспомнил, что устанавливал gearman сервер. После довольно долгой дискуссии с техподдержкой мне вручили бекап бд и сайтов. Слава Богу бекап оказался актуальным. Этот инцидент был последней каплей, и я решился переехать к немцам в hetzner, благо цены там вполне доступные.

Пару слов об hetzner — фирма уже давно работает на этом рынке и явное отличие — малые цены. Цена обусловленна тем, что в отличии от других хостеров, hetzner не гнушается использовать вместо брендованных серваков — обычные desktop машины. Кто-то жалуется на то, что падают часто, в частности вот ссылка на хабр qa (к слову, у моего бывшего хостера vps довольно часто падал), у кого-то таких проблем нет. В общем для меня надежность не на первом месте, особенно при таких ценах, и я решил переехать.

Все довольно просто — заполняете форму, вбиваете данные кредитки, позже прийдет письмо с просьбой прислать скан паспорта, как только вы пришлете — сервер доступен. По ценам: у отечественного хостера я брал сервер за 600 руб. в месяц со следующей конфигурацией: 1024 mb RAM, 15 GB hdd, 2000 Mhz проц., у hetzner`a подобная конфигурация (1024 RAM, 40 GB hdd, по процу не ясно) стоит 11 евро — т.е. 440 руб. притом, что места на жестком в 3 раза больше !!! да и доп. место под бекап около 4 евро (еще один камень в сторону отечественного хостера). По пингу — для веб-сервера вообще не заметно (из Москвы 100ms, раньше из столицы к отечественному хостеру 40 ms). Теперь об инсталляции — выбрал Debian 64 LAMP,  зашел на сервер и был несказанно рад, что ничего устанавливать не пришлось, все уже настроено и работает за меня, только кидай бд и файлы сайтов. Кстати у них там даже bash настроен, типа alias ls=’ls —color’, короче мне сразу понравилось.

Другой момент как перенести бд — мне задампили /var/lib/mysql/ директорию, внутри папки с названиями баз данных + пара других файлов (ib_logfile0, ib_logfile1, ibdata1 и др.). Изначально скопировав только папки с бд, обнаружил занятную вещь: базы отображаются в общем списке на сервере, включая внутренние таблицы, однако при попытке выполнить SQL запрос над любой из таблиц выскакивала ошибка: ‘Table not found ….’, оказалось файлы (ib_*) тоже нужно скопировать. После выполнил команду mysqlcheck чтобы убедиться в исправности, если замечены ошибки — mysqlrepair.

Вообщем вот так, мораль сей басни такова — делайте бекап (особенно папок /var/www и /var/lib/mysql), дешевые хостеры — в Германии.

Curl вместо wget на Mac OS X

Standard

На маке нет wget — вместо него curl. Итак, как же обойтись курлом, чтобы он скачивал страницы также как и wget ? Решение: curl -O > kirugan.html чтобы по запросу wget у вас сразу выполнялась вышеупомянутая команда, выполните (вместо .bash_profile можете указать .bashrc):

echo 'alias wget="curl -O"' >> ~/.bash_profile
source ~/.bash_profile