вторник, 25 июня 2013 г.

Создаем загрузочную флешку с Linux или Vmware Esxi под macos

Через Дисковую утилиту, создаем MSDOS(FAT) раздел на флешке (схема раздела: Основная загрузочная запись)

В консоле, находим куда примонтирован наша флешка и отключаем ее
diskutil list
diskutil unmountDisk /dev/disk2

# Делаем активным первый раздел на флешке
sudo fdisk -e /dev/SOMEdisk2
print
f 1
write
print
exit

diskutil unmountDisk /dev/disk2

# Для быстроты заливания образа через утилиту dd используем /dev/rdisk1 вместо /dev/disk1 (внимание на параметр bs=1m)
пример: sudo dd bs=1m if=2013-05-25-wheezy-raspbian.img of=/dev/rdisk1
наблюдаем за процессом из другой консоли: sudo killall -INFO dd

# Или скачиваем\устанавливаем UnetBootin и через него записываем образ
http://unetbootin.sourceforge.net
Через UnetBootin записываем на флешку Linux, Vmware esxi или другой диструбутив.

# Отключаем готовый диск
diskutil eject /dev/rdisk1

вторник, 18 июня 2013 г.

X-Forwarded-For при использовании Nginx + Apache (+LogFormat)

При использовании связки Nginx(proxy)+Apache, в Apache всесто реального IP клиента передается IP nginx. Что мешает чтению логов и написанию нужного кода.

В виртуал хосте nginx, добавляем proxy_set_header
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://192.168.100.102:8882;
}

На сервере с Apache2 устанавливаем mod-rpaf
aptitude install libapache2-mod-rpaf

# vim /etc/apache2/mods-available/rpaf.conf
RPAFenable On # включаем механизм
RPAFsethostname On # включаем передачу заголовка X-Host
RPAFproxy_ips 127.0.0.1 # указываем адрес "front-end"

Меняем формат логов
# vim /etc/apache2/apache2.conf
LogFormat "%v:%p %{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" common

Осталось рестартануть apache
/etc/init.d/apache2 restart

четверг, 13 июня 2013 г.

Добавляем PositiveSSL в nginx

Генереруем ключ и сразу удаляем из него пароль(чтобы не вводить его при перезапуске сервера):
openssl genrsa -des3 -out server-tmp.key 1024
openssl rsa -in server-tmp.key -out server.key

Создаём запрос для подписания (certificate signing request, CSR):
openssl req -new -key server.key -out server.csr

Отправляем server.csr в Commodo (я использую https://www.gogetssl.com/ )

Получаем от них письмо в котором содержится:
- sitename.crt
- AddTrustExternalCARoot.crt
- PositiveSSLCA2.crt

Сохраняем sitename.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt и в один файл.
cat  sitename.crt PositiveSSLCA2.crt AddTrustExternalCARoot.crt >> /etc/nginx/ssl/server.crt

Рядом сохраняем server.key

В nginx добавляем следующие строки:
listen 443 ssl;
ssl_certificate     /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;

Перечитываем конфиг в nginx
/etc/init.d/nginx reload

Можно добавить перенаправление с http на https
server {
    listen 80;
    server_name  server.ru;
    return 301 https://server.ru$request_uri;
}

P.S. Создание самозаверенного сертификата
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout mysitename.key -out mysitename.crt

понедельник, 10 июня 2013 г.

Копирование структуры mysql на другой сервер

Заходим на http://schemasync.org/ и скачиваем Schema Sync.
Устанавливаем его:

apt-get install python-mysqldb
tar xvzf SchemaSync-0.9.2.tar.gz
cd SchemaSync-0.9.2
sudo python setup.py install

Получаем структуру, создаем patch.sql и revert.sql(чтобы восстановить базу, если патч будет плохим):
schemasync mysql://user:pass@dev-host:3306/dev_db mysql://user:pass@prod-host:3306/production_db

Далее необходимо перенести и применить патч на продакшен сервере:

mysql -uroot -p
use production_db;
source dev_db.patch.sql;


четверг, 6 июня 2013 г.

Обновление Ubuntu 12.04 до 12.10, 13.04, 13.10

LTS релизы, такие как 12.04, по-умолчанию могут обновляться только из LTS репозиториев.
Включить возможность обновления до более свежей версии, например 12.10, очень просто.

vim /etc/update-manager/release-upgrades

меняем Prompt=lts
на Prompt=normal

Для обновления выполняем команду:
do-release-upgrade -d