PostgreSQL
coub
express.js
freeware
git
jquery
laravel
links
linux
macos
mysql
node.js
php
powershell
python
ubuntu
vim
virtualbox
анекдот
блог
игры
интересно
стихи
цитаты
Как получить md5 хэш строки или файла в консоли, Ubuntu
December 25, 2012
Это полная ерунда понятное дело, но я забываю постоянно. Поэтому законспектирую.
# для файла совсем просто md5sum file.txt # для строки чуть замороченнее echo -n 'string ololo jj' | md5sumЧтобы понять почему так и что за ключи смотрим man md5sum и man echo.
Базовая настройка sendmail, Ubuntu
December 25, 2012
Я не администратор, поэтому относитесь к этой заметке с осторожностью.
Рассматривается такя ситуация: надо заставить sendmail сервера отправлять почту, но ничего в ответ не принимать. Строго для оповещений с сайтов. У меня вдс-ка с предустановленным exim4 на который, насколько я понимаю, "ссылается" sendmail. Т.е. фактически работает exim4.
Сначала настраиваем хост (my-host-name это имя нашего хоста с которого все будет ездить)
Теперь надо настроить сам sendmail. В моем случае, нужно перенастроеить exim4. Делается это примерно так:
Идем проверяем свою почту. Если письмо пришло - все ок и ура. Если нет - идем гуглить дальше :)
Дальше надо убедиться что на нашем сервере недоступен smtp, для этого нам надо сходить с локальной машины постучаться в 25 порт сервера и получить отлуп. Делается это например так:
Ещё маленькая фишка. Бывает так что по каким-то причинам, сервис рулящий веб-приложением надо перезапускать регулярно. В моем случае это node.js и делаю я это по крону раз в N времени. Так вот если перезапустить процесс кроном, то sendmail перестает работать, потому как приложение не знает где он, в path пути до него просто нет и соот-но он просто не находится. Точно так же можно передавать любые другие настройки переменных окружения. Как это делать смотрим ниже.
Сначала посмотрим где sendmail
Пользовался вот этим источником. Рекомендую на него взглянуть, надеюсь он ещё дышит.
Рассматривается такя ситуация: надо заставить sendmail сервера отправлять почту, но ничего в ответ не принимать. Строго для оповещений с сайтов. У меня вдс-ка с предустановленным exim4 на который, насколько я понимаю, "ссылается" sendmail. Т.е. фактически работает exim4.
Сначала настраиваем хост (my-host-name это имя нашего хоста с которого все будет ездить)
sudo mcedit /etc/hostsВ файле должны быть строки вида
127.0.0.1 localhost 111.111.111.111 hostname.my-hoster.net my-host-nameДалее меняем имя хоста в файле
sudo mcedit /etc/hostnameФайл должен выглядеть вот так (полностью, т.е. только имя хоста и все)
my-host-nameТеперь перегружаем службу которая грубо говоря обновляет имя хоста глобально
sudo /etc/init.d/hostname.sh stop sudo /etc/init.d/hostname.sh start # если такого скрипта нет, то пробуем иначе: sudo service hostname restartREM ещё такой вариант есть, для Debian 9 (stretch)
hostnamectl set-hostname my-host-nameТеперь выполняем команды
hostname hostname -fЕсли все правильно сделано, то они обе должны вернуть значение my-host-name (т.е. имя вашего хоста)
Теперь надо настроить сам sendmail. В моем случае, нужно перенастроеить exim4. Делается это примерно так:
sudo dpkg-reconfigure exim4-configПосле этого в мастере просто нужно выбирать значения (именно для exim4)
- internet site..
- вводим название вашего хоста (my-host-name)
- ip для smtp устанавливаем только 127.0.0.1 т.к. нам не нужны внешние подключения по smtp
- другие допустимые назначения оставляем по умолчанию
- домены для разрешенного релея - оставляем пустым
- машины для релея - оставляем пустым
- кол-во днс запросов на ваше усмотрение, я не ограничивал
- метод доставки я оставил тот же который был, т.е. /var/mail
- разделять не разделять файлы конфигурации - на ваше усмотрение, аргументы там описаны, я разделять не стал
sendmail -i my-email@my-host.comДалее вводим тект тестового сообщения. И по готовности нажимаем Ctrl+d
Идем проверяем свою почту. Если письмо пришло - все ок и ура. Если нет - идем гуглить дальше :)
Дальше надо убедиться что на нашем сервере недоступен smtp, для этого нам надо сходить с локальной машины постучаться в 25 порт сервера и получить отлуп. Делается это например так:
telnet my-host-name 25 Trying 111.111.111.111... telnet: Unable to connect to remote host: Connection refusedЕсли все так, то все тип-топ. Порт закрыт.
Ещё маленькая фишка. Бывает так что по каким-то причинам, сервис рулящий веб-приложением надо перезапускать регулярно. В моем случае это node.js и делаю я это по крону раз в N времени. Так вот если перезапустить процесс кроном, то sendmail перестает работать, потому как приложение не знает где он, в path пути до него просто нет и соот-но он просто не находится. Точно так же можно передавать любые другие настройки переменных окружения. Как это делать смотрим ниже.
Сначала посмотрим где sendmail
which sendmail /usr/local/bin/sendmailОк, видим путь. Если вдруг не видим то идем смотреть тоже самое но под sudo. Теперь идем в кронтаб и добавляем переменные окружения там.
crontab -eОткроется редактирование заданий для текущего пользователя. То есть все задания будут выполнены с правами текущего пользователя и сервис запустится с правами этого пользователя, если он запускается конечно согласно вашему плану :)
# это переменная которая рассказывает где искать sendmail, # другие нужные пути можно писать через разделитель - двоеточие # там будут искаться необходимые нам утилиты PATH=/usr/local/bin # это пример переменной окружения которую будет использовать само приложение NODE_ENV=production # это собственно само задание, гуглим по формату crontab чтобы понять что к чему # в данном случае скрипт будет срабатывать в 30 минут каждого четного часа */30 */2 * * * /home/user/blog/scripts/restart.shНу вот примерно так. Прошу не воспринимать эту заметку как полное руководство к действию, вполне возможно что для вашего случая все будет значительно отличаться. Но возможно это как-то поможет или хотя бы наведет на мысли в нужном направлении :) Успехов!
Пользовался вот этим источником. Рекомендую на него взглянуть, надеюсь он ещё дышит.
setuid и setgid на папках
December 17, 2012
Стыдно не знать таких вещей. Биты setuid и setgid, установленные для папок (chmod g+s) заставляет новые папки и файлы, созданные в ней, наследовать ID группы этой папки вместо ID группы пользователя создавшего файл. Новые подпапки также наследуют бит setgid. Это позволяет создать общее рабочее пространство для группы без неудобств членам группы явно менять их текущую группу для создания новых файлов и папок. Наследование устанавливается только для новых файлов и папок. Уже существующим файлам и папкам этот бит нужно устанавливать вручную, например:
find /path/to/directory -type d -exec chmod g+s {} \;Вики: http://ru.wikipedia.org/wiki/Suid
Удобный бесплатный таск-трекер
December 11, 2012
Недавно искал бесплатный удобный таск-трекер. Чтобы поменьше интерфейса и побольше простоты и чтобы было похоже на тудушницу простую, но чтобы можно было таски комментировать и делать с ними всякое и чтобы можно было шарить проекты между людьми и хотел даже сам писать и вуаля, это уже сделано, причем в классном интерфейсе и бесплатно. Я опять опоздал с реализацией идеи, но пока я бы собирался уже бы борода выросла до колен, а тут уже таки велкам. В общем адрес этой замечательной штуки asana.com. Продуктивного вам планирования!
Как сделать вывод GIT цветным?
December 07, 2012
Это очень просто:
Это я нагуглил и решил записать. А то голова как унитаз..
И раз пошла такая пьянка..
Книжка со всем необходимым про Git живет тут.
Онлайн курсы по Git можно найти например тут.
git config --global --add color.ui trueЭта инструкция добавит глобальную настройку в ваш конфигурационный файл ~/.gitconfig и сделает вывод цветным для всех операций со всеми вашими репозиториями.
Это я нагуглил и решил записать. А то голова как унитаз..
И раз пошла такая пьянка..
# установить имя пользователя для всех своих репов config --global user.name ijin # установить email config --global user.email mail@mail.com # посмотреть лог коммитов за последнее время git log --since="30 minute ago" # откатить последний коммит в git (поправить коммент например) git reset --soft HEAD^ # посмотреть список локальных тегов git tag -l # удалить все локальные теги и получить все теги с удаленного репозитория git tag -l | xargs git tag -d git fetch # создать тег git tag tagName # отправить новые теги в удаленный репозиторий вместе с новыми коммитами git push --tags # удалить локальный тег git tag -d tagName # удалить тег в удаленном репозитории (origin) git push --delete origin tagName # выкатиться с тега git fetch --tags git checkout tagName # откатиться на предыдущий установленный тег, круто для отката на боевой при контроле установки тегов git checkout tagName^ # посмотреть текущий тег проекта git describe --tags # посмотреть настройки для текущего репозитория git config -l # посмотреть глобальные настройки Git git config --global -l # установить простой глобальный алиас для вывода лога, см. git help log # теперь в репозиториях будет работать git ll git config --global alias.ll "log -20 --pretty='%Cred%h %Cblue%an %ar %Cgreen%s'" # смотрим путь к удаленному репозиторию git remote -v git config -l # правим путь к удаленному репозиторию git config remote.origin.url "git@192.168.1.100:repo.git" # если нужно добавить файлы к последнему коммиту или поправить комментарий git commit --amendВообще Git очень нравится. Очень продвинутая VCS, просто песня.
Книжка со всем необходимым про Git живет тут.
Онлайн курсы по Git можно найти например тут.