Просто о сложном

Новый домашний зверёк

27 июня, 0:28

Шкаф на 2х1366 ушёл к новому «счастливому» владельцу.
Теперь наконец-то дома будет тихо :)

Но нужно же что-то использовать для экспериментов?)
Воть собственно новый домашний зверёк:

Внутрях — P10S-i + i3-6100 + 16GB DDR4 ECC

Пока без HDD, хочу поставить M2 на 128Гб для кеша ESXi.
По iSCSI монтируется раздел для установки VM и по NFS общие папки.
Кушает вся радость примерно 80Вт в полной нагрузке.

Возвращение к Эгее

5 июня, 21:32

Не так давно Илья Бирман и ко проапдейтили Эгею до последней версии.
Движок и раньше был супер по скорости работы и простоте, как по мне, теперь стал ещё шустрее.
А тут ещё появилось и̶з̶в̶р̶а̶щ̶ё̶н̶н̶о̶е̶ интересеное желание попробовать все домашние сервисы (блог, проксю, почтовики и прочие интересности) повесить на новую DS414.
Ghost запускается без проблем, вопрос в forever и его автостарте, но позже поковыряюсь, может и подниму опять его.
Пока буду снова наполнять Эгею :)

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

О «дружбе» мегакорпораций...

14 февраля 2016, 21:45

Есть у одной известной американской корпорации, лидера в своей отрасли, один продукт, предназначенный для другой американской корпорации, тоже лидера в своей области...

Скачиваем продукт, как в старой сказке утка(zip архив весом 7.7 гига) в яйце(zip архив 7.4 гига), и есть ещё «заяц» — сам OVA весом 4 с копейками гига...

Дальше начинаются чудеса — при попытке скормить программе второй корпорации софтинку первой нас ждёт сюрпрайз (забегу вперёд — на esxi резалт абсолютно такой же)

Приходится как всегда делать «ректальную тонзилактомию» — деплоить OVA в VirtualBox, дальше оттуда экспортить в OVF 2.0 и заново загонять в наш чудо продукт, это я про Fusion если по скриншотам не узнали...

Возврат к ESXi

13 февраля 2016, 21:53

Собственно посидев некоторое время с OMV и Virtualbox решил я снова приобщиться к великому и ужасному прекрасному VShpere.

Для различных экспериментов Microserver подходит с трудом, вернее подходит он практически нормально, если бы не одно но — N40L, который остался на уровне развития Celeron D и тянет всю конструкцию на дно.

После некоторых экспериментов и закупки частично на местых барахолках, частично на ebay.com, вот что получилось:

Chieftec Mesh medium tower
Chieftec APS-500S
Crucial M4 64GB
Seagate 250GB
Intel S5500BC
Intel Xeon E5649
4Gb DDR3 ECC (едет ещё 24GB)

Для управления на OS X использую CLI + Embended Host Client Снимок экрана 2016-02-13 в 23.12.58
Microserver используется как storage server и NFS для ESXi.
После прибытия памяти смогу поднять VCSA и попробовать VMotion.

Далее в планах заменить Microserver на более интересную железку с IPMI и адекватным процом.

Pebble как будильник

23 ноября 2015, 21:55

Более полугода юзаю pebble, самую обычную, пластиковую, первую модель.
Самая полезная фича для меня — не пропускаю входящих при прогулке/в транспорте/и т. д.
Телефон 95 процентов времени находится в беззвучном режиме, посему вызовы я пропускал довольно часто.
Решил недавно попробовать Gentle Wake.
Часы нужно не затягивать, тогда, лично у меня неудобств не ощущается.
Отключается нажатием двух кнопок. Кнопки на первой версии нажимаются довольно туго, так что шансы проснуться очень велики.
Огромный плюс в том, что просыпаюсь только я, окружающие не страдают :)

Переезд на Ghost

18 ноября 2015, 22:02

Устал я от монструозности WP, для ведения простого блога это явный перебор.
Сначала смотрел в сторону различных статических движков, аля jekyll или octopress. Но писать блог и так лень, а если для написания нужно чего-то собирать на локальной машине, потом деплоить на сервер и т. п., то шансы наполнять его будут сводится к нулю...

Наткнулся на статью на хабре про Ghost решил попробовать его.
Плюсы:

Легковесность
Наличие дополнительных тем
Возможность редактирования практически всего
Недостатки:

Сложность в разворачивания для неподготовленного пользователя
Для «глобальной» подстройки блога под себя необходимы «прямые руки» и желание копаться в коде.
И если первый момент легко решается наличием большого количества готовых VPS, например от DO, то второй момент может оттолкнуть часть пользователей.

Собственно deploy.
У меня в VirtualBox на сервере есть чистая машина с FreeBSD 10.2, которую я просто клонирую и обновляю, когда хочется поэкспериментировать.
Ghost основан на node.js, а как DB использует sqlite3 посему установка сводится к нескольким моментам — установки Ghost(node.js/sql/npm), запуск ghost как сервиса.

Подготовка к установке Ghost
Собственно логинимся под root, далее идём в /usr/ports/www/node и устанавливаем:

cd /usr/ports/www/node012
make install clean
Лирическое отступление: по пути в каталог node012 вы можете увидеть что есть ещё несколько версий node.js, но сразу скажу что корректно и без «бубна» заработает только с 012 версией.

По окончании банкета установки поставим npm (node package manager):

cd /usr/ports/www/npm
make install clean
После ставим sqlite:

cd /usr/ports/databases/sqlite3/
make install clean
Проверяем установленные компоненты:

node —version
npm —version
sqlite3 —version
Если после каждой комманды видна версия, значит всё стало корректно и можно идти дальше.

Установка Ghost
По умолчанию используем /var/www/

mkdir -p /var/www/
cd /var/www/
Качаем и распаковываем последнюю версию движка с оф сайта:

fetch https://ghost.org/zip/ghost-0.7.1.zip
unzip ghost0.7.1.zip
Перед установкой самого движка нужно собрать модули sqlite3 для node.js

setenv CXX c++ ; npm install sqlite3 —sqlite=/usr/local
Ну и собственно ставим Ghost:

npm install —production
Базовая настройка:

//копируем стандартный конфиг
cp config.example.js config.js
//разблокируем доступ к серверу в 25й строчке
nano config.js
//меняем 25ю строчку на host: '0.0.0.0',
Сейчас запустимся:

npm start —production
Далее заходим по адресу адрессервера:2368 и видим приветсвенную страницу.

Запуск как сервиса FreeBSD
Устанавливаем forever

npm install forever -g
Переходим в /usr/local/etc/rc.d/ и создадим файл со скриптом для запуска/остановки сервиса.

cd /usr/local/etc/rc.d/
nano ghost
Туда скопируем нижеприведённый текст:

#!/bin/sh

PROVIDE: ghost
KEYWORD: shutdown

PATH=«/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin»

. /etc/rc.subr

name=«ghost»
rcvar=«ghost_enable»
extra_commands=«status»

load_rc_config ghost
: ${ghost_enable:=«NO»}

status_cmd=«ghost_status»
start_cmd=«ghost_start»
stop_cmd=«ghost_stop»
restart_cmd=«ghost_restart»

ghost=«/var/www/ghost»
log=«/var/www/ghost/ghost.log»
ghost_start() {
sh -c «cd /var/www/ghost/ && NODE_ENV=production forever start index.js»
}

ghost_stop() {
sh -c «cd /var/www/ghost/ && NODE_ENV=production forever stop index.js»
}

ghost_status() {
sh -c «NODE_ENV=production forever list»
}

ghost_restart() {
ghost_stop;
ghost_start;
}

run_rc_command «$1»
Далее делаем файл исполняемым:

chmod +x ghost
Добавляем скрипт в автозапуск:

sysrc ghost_enable=YES
и пробуем запустить

service ghost start
Если в ответ выдало «forever processing file: index.js», то всё хорошо.

Остановим ghost командой service ghost stop и отредактируем файл config.js

nano /var/www/ghost/config.js

url: 'http://test.com' меняем на свой домен
port: '2368' меняем на любой по желанию или не трогаем
По итогу мы получили настроенный в базовом варианте Ghost, работающий как сервис FreeBSD. Дальнейшие настройки по ссылке http://вашсайт:вашпорт/ghost
Я у себя использую на отдельной машине frontend-proxy, на nginx, посему тут я больше ничего не делал.

Дальше расскажу про темы, их базовую настройку.

P.S. часть материалов взято и переведено отсюда

Nginx как frontend proxy

18 ноября 2015, 21:59

Когда количество девайсов управляемых с вебморды перевалило за несколько штук остро встал вопрос в удобной адресации.
Согласитесь — не всегда удобно снаружи сети идти по адресам типа: тест:123; тест:124 и т. п.
Да и торчать наружу большим количеством портов — признак дурного тона :)
Перво наперво я поднял в metarouter openwrt и развернул там nginx, чтобы независимо от работы сервера и прочих факторов всё проксировалось. Но практика показала, что openwrt под Mikrotik штука довольно сырая, а при падении метароутера падает и сам микротик, что уже гораздо менее приятно...

В общем остановился я на FreeBSD, а я как раз в то время перевёл websrv с Ubuntu на эту ось.

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

Итак собственно установка.
Нам потребуется чистая, обновлённая, FreeBSD 10.2

Снова отступление: Всё ставлю из портов, дело привычки, но мне почему-то так удобнее.

Идём в порты, конфигурируем(оставляем по умолчанию) и ставим nginx:

cd /usr/ports/www/nginx/
make config
make install clean
Добавляем в /etc/rc.conf одну строчку для автозапуска

nginx_enable=«YES»
Проверяем

service nginx start
Если ошибок не выпало, то могу вас поздравить, осталось настроить виртуальные хосты.

Настройка производится в файле /usr/local/etc/nginx/nginx.conf

Кто-то рекомендует создавать отдельные файлы для каждого хоста, как в apache, и их уже подключать в глобальном конфиге. Может это и по православному правильно, но при небольшом количестве хостов можно спокойно всё добавлять в nginx.conf

Итак

nano /usr/local/etc/nginx/nginx.conf
//там видим примерно следующее:
user www www; ## Default: nobody
worker_processes 5; ## Default: 1
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 8192;

events {
worker_connections 4096; ## Default: 1024
}

http {
include conf/mime.types;
include /etc/nginx/proxy.conf;
include /etc/nginx/fastcgi.conf;
index index.html index.htm index.php;

default_type application/octet-stream;
log_format main '$remote_addr — $remote_user [$time_local] $status '
'«$request» $body_bytes_sent «$http_referer» '
'«$http_user_agent» «$http_x_forwarded_for»';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 128; # this seems to be required for some vhosts

server { # php/fastcgi
listen 80;
server_name domain1.com www.domain1.com;
access_log logs/domain1.access.log main;
root html;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:1025;
}
}

server { # simple reverse-proxy
listen 80;
server_name domain2.com www.domain2.com;
access_log logs/domain2.access.log main;

location / {
proxy_pass http://192.168.1.17:8080;
}
}

}
«server { # php/fastcgi» — этот блок отвечает за отображение локального содержимого, например в прошлом посте я писал про установку ghost, если на ту же машину поставить nginx и в этом разделе прописать localhost:2368, то ghost будет отдавать готовые страницы nginx, которые уже будут отображаться пользователям.

Отступление: также nginx это прекрасный web-сервер для отображения статики, его можно настроить >на отображение крупных файлов(видео, изображения) минуя основной движок, но это уже другая >история

server { # simple reverse-proxy — а этот блок как раз пример проксирования.
Например:

server {
listen 80;
server_name domain1.com www.domain1.com;
access_log logs/domain1.access.log main;

location / {
proxy_pass http://192.168.1.17:80;
}
}
server {
listen 80;
server_name domain2.com www.domain2.com;
access_log logs/domain2.access.log main;

location / {
proxy_pass http://192.168.1.18;
}
}
При обращении к domain1 запросы будут перенаправлены на локальную машину 192.168.1.17, а при обращении к domain2 — 192.168.1.18 Таким образом в мир у вас смотрит только одна машина и одним портом( если точне, то двумя, ещё — 443, но это уже из другой песочницы) + на одном статическом внешнем ip адресе можно «повесить» множество локальных веб серверов. В моём случае я обошёлся некоторым количеством поддоменов вида xxx.yyy.com,которые мне легко запоминать.
Крутиться всё это на 1м ядре и 256мб оперативной памяти.

Дальше расскажу про проксирование https и новые эксперименты с arduino.
До скорых встреч :)