12 сентября 2015 г.

Установка Redmine под Ubuntu 12.04

Недавно понадобилось установить Redmine для разработки всяких плагинов, и этот рпоцесс прошел с довольно-таки неплохими корчами. Кроме самого редмайна понадобится установить еще базу данных и сервер. Поехали.


Для начала нужно установить пакеты с бд, сервером и прочим стафом, который нам понадобится:       
sudo aptitude install mysql-server mysql-client libmysqlclient-dev gcc build-essential 
                      zlib1g zlib1g-dev zlibc ruby-zip libssl-dev libyaml-dev 
                      libcurl4-openssl-dev ruby gem libapache2-mod-passenger 
                      apache2-mpm-prefork apache2-dev libapr1-dev libxslt1-dev 
                      checkinstall libxml2-dev ruby-dev vim
 
Теперь скачаем и подготовим сам редмайн:
cd /opt/
sudo mkdir redmine
sudo chown -R $your_user redmine
cd redmine
wget $redmine.tar.gz
tar xzf $redmine.tar.gz
cd redmine-X.X.X
Если что-то работает не так, всегда можно распоковать менеджером архивов ;)

Теперь подготовим MySQL:
mysql --user=root --password=$password
CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';
exit
Вместо my_password здесь и далее не забудьте указать ваш пароль.
Сделаем конфиг для рейдмайн бд и попарвим его:
cp config/database.yml.example config/database.yml
В самом файле config/database.yml запишем: 
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: my_password 
Пора заняться бандлером. Установим его:
sudo gem install bundler
bundle install --without development test rmagick
Сгенерируем secret token:
bundle exec rake generate_secret_token
Подготовим бд и проинсталируем все таблицы:
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data
Пора протестить редмайн. Вместо $IP введите ваш внешний IP:
bundle exec ruby bin/rails server -b $IP webrick -e production
и посетите адрес http://$IP:3000.
Время для сервера. В нашем случае - Apach.

Apache работает с данными через www-data, так что нам нужно будет дать ей доступ к файлам:
sudo chown -R www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
Создадим ссылку между публичной папкой редмайна и рутом апача:
sudo ln -s /opt/redmine/redmine-X.X.X/public/ /var/www/html/redmine
Создадим новый конфиг VirtalHost:
sudo vim /etc/apache2/sites-available/master.conf
и запишем в этот файл следующее для редмайна:
<VirtualHost *:80>

ServerAdmin admin@example.com
Servername hostname
DocumentRoot /var/www/html/

        <Location /redmine>
                RailsEnv production
                RackBaseURI /redmine
                Options -MultiViews
        </Location>

</VirtualHost>
Сохраните и закройте вим. Чтобы это сделать в командной строке вима нужно прописать :q. Я недавно узнала, что некоторые от отчаяния перезагружают комп, чтобы закрыть вим. Не надо так)

Отключаем дефолтный виртуал-хост:
sudo a2dissite 000-default.conf
И подрубаем новый мастер виртуал-хост:
sudo a2ensite master.conf
Чтобы избежать ошибки доступа, пассенджер мод тоже нужно запускать как www-data. В файле /etc/apache2/mods-available/passenger.conf добавьте эту строку:
PassengerUser www-data
И перезапустите апач:
sudo service apache2 restart
Посетите http://$IP/redmine - счастье откроется вам.

7 сентября 2015 г.

Сканирование локальной сети (IP и MAC адреса)

Недавно возникла необходимость узнать IP и MAC адрес raspberry pi, которая была подключена к роутеру по ethernet с ноутбука, который подключен к тому же роутеру, но по wifi. Наиболее удобной оказалась утилита arp-scan, которая рассылает по сети ARP пакеты и отображает данные о хостах, от которых был получен ответ. Запускаем ее из консоли со следующими опциями:

sudo arp-scan --interface wlan0 --localnet

Для ее работы необходимы привилегии root, поэтому используем sudo. В результате работы получим список хостов в локальной сети с их IP и MAC адресами:
результаты работы arp-scan
Таким образом, можно быстро узнать адрес raspberry pi в сети (как и любого другой платы или компьютера). В опции --interface указываем интерфейс, на котором нужно произвести сканирование.

5 сентября 2015 г.

Клонирование SD/microSD карты для Raspberry PI

Возникла необходимость сделать полную копию microSD карты с дистрибутивом Raspbian, не потеряв настройки и установленные программы. Мне копия понадобилась, чтобы переехать на большую шуструю карточку, да и резервная копия тоже не помешает.
Под Ubuntu есть удобная утилитка dd, которая позволяет делать копию устройства побайтно (копируются не файлы в отдельности, а целиком вся файловая система, включая так же и таблицу разделов, по сути получается клон sd карточки). Ей мы и воспользуемся. Работа с ней выглядит следующим образом (естественно в консоли):

dd if=/dev/sdX of=/path/to/image bs=1M

If у нас указывает на путь к устройству, с которого мы будем делать копию, а of указывает на путь образа, куда будет сохранена копия, bs указывает на размер блока, который будет считываться за один раз, в данном случае 1 мегабайт.
Чтобы узнать путь к нужному устройству, введем команду lsblk в консоли:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298,1G  0 disk
├─sda1   8:1    0   100G  0 part
├─sda2   8:2    0    15G  0 part
├─sda3   8:3    0     1K  0 part
├─sda4   8:4    0    16M  0 part
├─sda5   8:5    0    17G  0 part /
├─sda6   8:6    0 161,1G  0 part /home
└─sda7   8:7    0     5G  0 part [SWAP]
sdb      8:16   1   3,8G  0 disk
├─sdb1   8:17   1    56M  0 part /media/edgar/boot
└─sdb2   8:18   1   3,7G  0 part /media/edgar/13d368bf-6dbf-4751-8ba1-88bed06bef


Чтобы понять, какое устройство нужное, смотрим на размер и путь, по которому примонтирована файловая система (если не работает автомонтирование, ориентируемся на размер). Тут у нас размер 3.8G, это как раз наша microSD карточка на 4 гигабайта. Так же тут видно, что raspbian использует отдельный раздел для boot, где лежит все необходимое для успешной загрузки. В итоге команда будет выглядеть вот так:

sudo dd if=/dev/sdb of=/home/edgar/raspbian_2015-09-04.img bs=1M

Для работы dd нужно привилегии root-пользователя, поэтому используем sudo. В конце работы утилитка выдала следующее:

3840+0 записей получено
3840+0 записей отправлено
скопировано 4026531840 байт (4,0 GB), 392,461 c, 10,3 MB/c


Тут у нас видно сколько было скопировано и на какой скорости. Теперь зальем образ на другую карточку. Отключим уже скопированную карточку и вставим новую, после чего еще раз запустим lsblk:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298,1G  0 disk
├─sda1   8:1    0   100G  0 part
├─sda2   8:2    0    15G  0 part
├─sda3   8:3    0     1K  0 part
├─sda4   8:4    0    16M  0 part
├─sda5   8:5    0    17G  0 part /
├─sda6   8:6    0 161,1G  0 part /home
└─sda7   8:7    0     5G  0 part [SWAP]
sdb      8:16   1   7,4G  0 disk
└─sdb1   8:17   1   7,4G  0 part /media/edgar/6632-3961

Новая карточка у нас имеет размер 8 гигабайт, и находится она по пути /dev/sdb. Теперь запустим копирование образа на эту карточку:

sudo dd if=/home/edgar/raspbian_2015-09-04.img of=/dev/sdb bs=1M

В результате получим:

3840+0 записей получено
3840+0 записей отправлено
скопировано 4026531840 байт (4,0 GB), 429,094 c, 9,4 MB/c

Таким образом, наш образ скопирован на новую карточку. Теперь отключим и заново вставим карточку и убедимся, что образ успешно скопирован (через lsblk):

sdb      8:16   1   7,4G  0 disk
├─sdb1   8:17   1    56M  0 part /media/edgar/boot
└─sdb2   8:18   1   3,7G  0 part /media/edgar/13d368bf-6dbf-4751-8ba1-88bed06bef


После этого можем смело вставлять карточку в raspberry и работать уже на ней, причем у нас осталась резервная копия всей системы на случай каких-то серьезных сбоев.