четверг, 26 ноября 2009 г.

Календарь выходных дней в украине (ical)

Сделал календарь всех государственных праздников Украины которые обьявляются выходными. Почему то готового не нашел - в списке предустановленых календарей в Google Calendar Украины вобще нету, а на тех сайтах которые где есть подобные календари, в них собраны все украинские и церковные праздники включая день врача итп. Всего 150 штук. Попробывал добавить - и так достаточно плотно забитый календарь стал еще менее читаемым.

Вобщем если кому пригодится - делюсь - календарь с десятью украинскими праздниками-выходными (в формате ical)

http://www.google.com/calendar/ical/di.mon.net.ua_fmu2s45fdua3123662ufd5p2gs@group.calendar.google.com/public/basic.ics

На всякий случай уточняю. В календаре забиты праздники, а не выходные, те если праздник попадает на выходной там так и написано. А выходные дальше переносятся:

Согласно ч. 3 ст. 67 КЗоТ Украины, если праздничный или нерабочий день совпадает с выходным, выходной день переносится на следующий после праздничного или нерабочего.

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

* 4 апреля (выходной день в воскресенье) переносится на 5 апреля (понедельник);
* 1, 2 мая (выходные дни в субботу, воскресенье) переносятся на 3, 4 мая (понедельник, вторник);
* 9 мая (выходной день в воскресенье) переносится на 10 мая (понедельник);
* 23 мая (выходной день в воскресенье) переносится на 24 мая (понедельник).

понедельник, 23 ноября 2009 г.

vim

Когда я начинал работу с Linux и выбирал редактор, я отказался от vim в пользу редактора nano из-за того что он мне показался более "Windows like" и из-за того что мне было лень разбиратся как работает vim. Но недавно мне пришлось работатать с удаленным сервером на коором был устанолен только vim. Поэтому волей-неволей пришлось разбиратся.

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

Все супер просто и логично - в обычном - командном режиме вы редактируете текст - удалнние символов, строк, вырезать/скопировать/вставить, итд итп - список действий которые можно совершить огромен. То что делается в стандартных редакторах нажатием сумашедших клавиатурных сокращений тут нажатием одной кнопки.

Если надо ввести текст просто нажимаем i и начинаем печатать. Допечатали - esc - и продолжаем редактирование.

Освоить основы можно с помощью специального обучающего файла который запускается командой vimtutor. Который представляет по сути собой текстовый файл открытый в vim в котором в несколько уроков можно потренироватся работать с редактором. Все очень наглядно и понятно.

Вот также несколько полезных ссылок для изучения и использования редактора:
Мини учебник на wikibooks
Список команд редактора

Ну и сразу несколько необходимых действий которые надо сделать что бы все функции редактора (например подсветка синтаксиса и онлайн помощь) были доступны.
1. Устанавливаем полную версию редактора (в ubuntu по умолчанию идет обрезанная)
sudo apt-get install vim
2. Делаем vim редактором по умолчанию
$ sudo update-alternatives –config editor

В появившемся меню выбираем usr/bin/vim.basic
3. Включаем подсветку синтаксиса:
sudo vim /etc/vim/vimrc
Расскометировать строки:
"syntax on

Для этого становимся курсором на знак кавычки в начале строки и нажимаем x(удалить символ под курсором) После этого сохраняемся и выходим:
:wq

вторник, 17 ноября 2009 г.

FTP сервер на базе PureFTPd и MySQL

PureFTP - отличный и легконастраиваемый фтп сервер. Сначала я установил его для работы без MySQL. Это оказалось очень не удобно, поэтому решил передеставить его таким образом что бы все логины пароли хранились в базе. Это дает отличную гибкость и удобство добавления/удаления пользователей, раздача доступов итп.

В инете масса информации как установить и настроить вышеупомянутый сервер. Вот подробный мануал по которому я ставил: http://forum.ubuntu.ru/index.php?topic=16733.0

Одно из немногих отличий в моем конфиге, это то что я не шифрую пароли:
MYSQLCrypt cleartext

так значительно удобнее управлять аккаунтами, но страдает безопасность.

mysql - GROUP_CONCAT

Есть таблица такого вида:
video_name    | genre

--------------+---------------

video1        | боевик

video2        | ужасы

video1        | мелодрамма

video1        | арт-хаус

video2        | триллер


Для того что бы посмотреть каккой диск к каким жанрам отностится нам поможет запрос вида:

SELECT video_name, GROUP_CONCAT(genre) as zhanr
FROM table
GROUP BY name

video_name    | zhanr

--------------+---------------

video1        | боевик, мелодрамма, арт-хаус

video2        | ужасы, триллер


Некоторые особенности. По умолчанию максимальная длина строки 1024. Если список жанров будет сильно длинным, то после 1024 знака строка обрежится. Для того что бы сделать длину строки больше, нужно один раз в начале сессии с mysql дать команду:

SET group_concat_max_len = 10000000;

среда, 11 ноября 2009 г.

Работаем с mysql

Подключение к базе:
mysql -h HOSTNAME -uUSERNAME -pPASSWD -DDATABASE ;
Просмотр доступных баз:
show databases;
Переключение на работу с нужной базой:
use DATABASE;
Просмотр таблиц:
show tables;
Просмотр структуры интересующей таблицы:
show columns from TABLENAME;
Выборка данных:
select КАКИЕ ПОЛЯ ПОКАЗАТЬ from ИМЯ_ТАБЛИЦЫ where УСЛОВИЯ;

Полезные штуки:
select count(*) ...
посчитает кол-во строк удовлетворяющих условиям

... group by КОЛОНКА
сгрупирует записи у которых если повторяющиеся значения в каком-то поле

... order by КОЛОНКА
отсортирует по полю

select date_format(time, '%Y-%m-%d')
форматирует поле с датой в нужном нам формате

limit 0, 30
ограничивает кол-во строк для вывода в формате: номер строки с которой начинать выборку, кол-во строк которые надо вывести

select sum(КОЛОНКА)
ссумирует значения в колонке

Примеры из жизни:

 select date_format(TIME, '%Y-%m-%d'), count(url) 
from ERRORS 
where code=504 or code=502 
group by to_days(TIME) 
order by TIME;
+-------------------------------+------------+
| date_format(TIME, '%Y-%m-%d') | count(URL) |
+-------------------------------+------------+
| 2009-11-06                    |        814 | 
| 2009-11-07                    |       1591 | 
| 2009-11-08                    |        761 | 
| 2009-11-09                    |       1145 | 
| 2009-11-10                    |       1917 | 
| 2009-11-11                    |       1438 | 
+-------------------------------+------------+

mysql> select count(*) 
from errors 
where code=504 and time between '2009-11-09 00:00:27' and now();
+----------+
| count(*) |
+----------+
|     4467 | 
+----------+
1 row in set (0.02 sec)

mysql> select sum(BYTESCOUNT) 
from CONTENTTRAFFIC 
where DATE = date_format(NOW(), '%Y-%m-%d');


mysql> select * 
from SITECALLSTATDETAILED 
group by REQUESTURL 
order by CNT desc 
limit 10 ;

mysql> select sum(BYTESCOUNT)  
from CONTENTTRAFFIC 
where DATE between '2009-10-10 00:00:00' and '2009-10-10 23:59:59';

mysql> select ROUND(sum(BYTESCOUNT)/1024/1024/1024), DATE  
from CONTENTTRAFFIC 
group by DATE 
order by DATE;

среда, 26 августа 2009 г.

SVN up

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

Создадим в папке home подпапку svn. Внутри этой основной папки лежат папки непосредственно с сайтами, каждую такую папку мы в SVN сделаем отдельным проектом таким образом, что бы можно было разным девелоперам давать доступ на соответствующую папку без возможности доступа к другим проектам.

Итак у меня уже установлен вебсервер поэтому осталось только установить и настроить SVN и прописать для него виртуал хост.

Сначала ставим Subversion:

sudo apt-get install subversion

и для поддержки доступа к SVN по http протоколу устанавливаем libapache2-svn

sudo apt-get install libapache2-svn

Дальше создаем виртуальный хост для SVN

$ nano /etc/apache2/sites-enabled/svn.conf

с такими параметрами:
<VirtualHost *:80>
    ServerAdmin admin@mysite.com
    ServerName svn.mysite.com

    ErrorLog /var/log/apache2/svn.mysite.com-error.log
    CustomLog /var/log/apache2/svn.mysite.com-access.log combined

<Location />
    # говорит апачу какой модуль использовать для обработки информации.
    DAV svn
    # разрешить просматривать корневой каталог (не работает при включении
    # анонимного доступа)
    SVNListParentPath on
    # корень SVN сервера, где будут храниться репозитории.
    SVNParentPath /home/svn
    # тип авторизации. basic - использовать авторизацию по htpasswd
    AuthType Basic
    # сообщение в окне авторизации :)
    AuthName "My SVN Server"
    # фаил содержащий пароли для авторизации.
    AuthUserFile /home/svn/svn-passwd
    # фаил с настройками прав доступа к репозиторию.
    AuthzSVNAccessFile /home/svn/svn-access
    # Доступ на чтение/запись только после авторизации
     Require valid-user
  </Location>


</VirtualHost>


Создаём репозиторий.Первым проектом будет папка dev. Потом все файлы импортнем в SVN.

$ sudo svnadmin create /home/svn/dev

И меняем овнера (apache user) и права на папку:

$ sudo chown -R www-data:www-data /home/svn/dev
$ sudo chmod -R g+rws
/home/svn/dev

Последняя команда для того что бы все новые файлы которые создаются в репозитории создавались с правильными правами.

Теперь создаём фаил-базу с паролями для нашего репозитория.
$ htpasswd -cm /home/svn/svn-passwd admin

Здесь:
htpasswd - утилита Apache`a, для генерации нужных нам паролей.
-cm - ключи
ключ c - создать новый фаил, если уже есть - перезаписать.
ключ m - использовать md5.
admin - имя пользователя, для которого будет добавлена запись.

Для добавления новых пользователей используйте команду:

$ htpasswd -m /home/svn/svn-passwd user-name

Создаём фаил с привелегиями пользователей для репозитория.

$ nano /home/svn/svn-access

# блок, содержащий группы.
[groups]
# группа для менеджеров
managers = admin, vadim
# группа разработчиков magento в подпапке dev/magento
magento = developer

# корень нашего SVN сервера
[/]
# запрещаем доступ для анонимов
* =
# директория проекта dev
[dev:/]
# запрет для всех пользователей.
* =
# группе managers глобально разрешено чтение\запись
@managers = rw
# директория magento в репозитероии dev
[dev:/magento]
# группе magento разрешено чтение\запись.
@magento = rw

Теперь проверяем что у нас получилось:

заходим броузером на http://svn.domain.com/dev

Если мы видим
dev - Revision 0: /
Powered by Subversion version 1.5.1 (r32289).

то все ок :)

Теперь осталось перенести проект в SVN:

Для начала создадим 3 папки в каталоге проекта в SVN:

trunk — основная линия разработки. Здесь будет актуальный на данный момент код, здесь будут выполняться мелкие задачи и правки багов.
branches — ветка для разработчиков. гсуто ветвится другими ветками. Именно в ней вы будете создавать свои ветки.
tags — ветка тэгов. Тут создаются всякие метки, отмечающие значимые вехи развития проектов, проще говоря его стабильные и не очень версии. Нужна она для того, что бы всегда можно было вернуться до какой нибудь версии, например что бы посмотреть «почему эта хрень раньше работала а потом перестала, сцуко»

И импортируем наш проект в папку trunk

svn import . file:///path/to/project/trunk -m "Initial Import"

Документы для прочтения:
https://help.ubuntu.com/community/Subversion
http://www.lissyara.su/?id=1669

http://www.developers-life.com/svn-%D0%BD%D0%B0-ubuntu-mini-howto.html
http://svnbook.red-bean.com/nightly/ru/svn-book.html
http://habrahabr.ru/blogs/development_tools/45203/

пятница, 31 июля 2009 г.

Размеры папок

Задача: Узнать размер каталога

$ du -hs /home/

Всех каталогов а определенной директории:

$ du -hs /home/*

Задача: узнать размеры папок в каталоге

$ du -h --max-depth=1 /mnt/storage/folder/ > size.txt

Данная команда запишет список папок с указанием размера каждой в каталоге folder в текстовый файл size.txt

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

Кстати, посмотреть размеры всех устройств в системе можно командой df -h

А посчитать количество файлов в папке можно посчитав количество строк в результате работы команды ls -l таким образом:

$ ls -l | wc -l

От полученного результата нужно отнять 1 - первую информационную строку которую выдает LS

четверг, 30 июля 2009 г.

Конвертим видео для просмотра на телефоне

Решил переконвертить несколько видео для просмотра на телефоне. У меня HTC Dream, а у жены Iphone. Оба эти телефона обьединяет одинаковое разрешение экрана и практически одинаковое железо, поэтому параметры кодирования которые я опишу дальше подойдут для обоих телефонов.

Итак приступим. Для перекодирования видео воспользуемся замечательной программкой ffmpeg, программа относительно быстрая и она отлично себя зарекомендовала в рабочих проектах.

Итак устанавливаем: $ sudo apt-get install ffmpeg

И дальше запускаем с такими параметрами (ниже я опишу что какой параметр делает):

$ ffmpeg -i file_to_convert.mpg -f mp4 -s 480x320 -b 384000 -r 29.97 -ar 48000 -ab 128000 final_file_name.mp4

И вот объяснение параметров:

-i file_to_convert.mpg - путь к исходному файлу

-f mp4 - формат конечного файла

-s 480x320 - разрешение видео

-b 384000 - битрейт видео. 384kbps - оптимальный по размеру видео, но если хочется качество повыше, то поставте 768000.

-r 29.97 - frame rate - оптимальным считается показатель близкий к 30ти, но для уменьшения размера файла можно уменьшить это значение до 24 или 20 или даже 15.

-ar 48000 - audio rate 48000 Hz - оптимально

-ab 64000 - audio bitrate Может быть от 32kbps до 320kbps.

final_file_name.mp4 - имя конечного файла

Решение проблем:

На моем сервере конвертирование в mp4 сразу не заработало. Попытка конвертации завершалась с ошибкой:

Unsupported codec for output stream #0.0

Проблема в том что по умолчанию не была установлена поддержка кодирования формата mp4. Проблема решилась установкой пакета libavcodec-unstripped-51

$ sudo apt-get install libavcodec-unstripped-51

AM/PM

Этот пост не касается линукса. Просто на память вещь которую я всегда путаю - время в американском формате - AM PM когда что :)

Итак - 12АМ - это по нашему 0:00, а 12PM это соответсвенно 12:00.

четверг, 21 мая 2009 г.

SSH по ключу

При удаленном коннекте к серверу по SSH по умолчанию используется аунтификация пользователя по паролю. Это далеко не всегда удобно. Например мой хостер не разрешает хранить пароли в ssh клиенте (я не знаю как это сделано - но факт) а пароли длинные и незапоминающиеся. Поэтому каждый раз, когда я хочу подключится к серверу, приходится лезть в программу которая хранит пароли и копиропать этот пароль оттуда. Что согласитесь совсем не удобно.

Идеальным решением в данном случае будет использовать способ аунтификации по ключу. Его то я и настрою у себя на сервере.

Давайте сконфигурируем сервер таким образом, что бы пользовательские ключи хранились в домашних папках пользователей в файле
~/.ssh/authorized_keys

Для этого:
в файле
/etc/ssh/sshd_config
раскомментируем строчку
AuthorizedKeysFile %h/.ssh/authorized_keys

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

PermitRootLogin no # запрещаем логин под рутом
PasswordAuthentication no # запрещаем входпо паролю

Теперь, когда сервер сконфигурирован, добавим публичный ключ на сервер в файл /home/user_name/.ssh/authorized_keys
и поменяем права на файл:
chmod 600 /home/user_name/.ssh/authorized_keys

Подробно про настройку ssh можно почитать в этой статье.

среда, 20 мая 2009 г.

Как вывести конфиг без закомментированных строк

Часто при отладке работы приложений необходимо просмотреть конфиг файлы. Но интересуют нас естественно только раскомментированые правила.

В этом случае очень помагает подсветка синтаксиса в редакторе (о том как настроить подсветку синтаксиса в редакторе nano я писал в этом посте )

Но есть еще более простой и быстрый вариант. Нужно перенаправить вывод команды cat в команду grep которая отфильтрует все закомментированые строки.

cat /etc/ssh/sshd_config | grep -v '^#'

вторник, 19 мая 2009 г.

Как узнать версию дистрибутива Linux

Для того что бы узнать какая версия дистрибутива Linux установлени на сервере в большенстве дистрибутитивов можно прочитать файл в названии которого есть слово release:

cat /etc/*release*

или если это не сработает (например в Slackware), тогда

cat /etc/*version*


В FreeBSD сработает команда

uname -rs


Везде где я смог это потестить метод сработал:

Результаты команд на различных системах:

Ubuntu:

$ cat /etc/*release*
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"

ALT Linux:

$ cat /etc/*release*
ALT Linux Sisyphus (20081222)

Gentoo:

$ cat /etc/*release*
Gentoo Base System release 1.12.9

Fedora:

$ cat /etc/*release*

fedora-release:Fedora release 10 (Cambridge)

Slackware:

$ cat /etc/*version*
Slackware 12.2.0

FreeBSD:

$ uname -rs
FreeBSD 7.0-RELEASE-p5


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

понедельник, 18 мая 2009 г.

Настраиваем Samba server

Немного расскажу о том для чего мне нужна Samba. Мне нужно организовать доступ из домашней локальной сетки к двум папкам находящимся в /home

/pub - тут будет хранится кино, музыка и другие общие файлы
и
/www - тут будут хранится виртуальные хосты вебсервера

Доступ к www мне нужен для упрощения процесса вебразработки - я подключу разшаренную папку как отдельный диск и буду работать с ним на удаленной машине как с локальным, что очень удобно.

Доступ в /pub должен быть гостевым. В /www - по паролю.

Доступ на сервер должен быть ограничен локальной сетью.

Итак для организации вышесказанного делаем следующее:

Открываем конфикурационный файл Samba сервера для редактирования:

dimon@server:~$ sudo nano /etc/samba/smb.conf

Сначала парочку "косметических" настроек:

workgroup = WORKGROUP
server string = %h

Теперь несколько настроек аунтентификации:

security = user
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
map to guest = bad user
usershare allow guests = yes
hosts deny = ALL
hosts allow = 10.10.10.

Нам нужно настроить гостевой аккаунт который будет пускать всех пользователей из нашей локальной сети в папку /pub без пароля.

[pub]
comment = Wellcome
browseable = yes
path = /home/pub/
guest ok = yes
read only = no
create mask = 0777
directory mask = 0777

а в www с паролем от имени пользователя dimon

[www]
comment = Web
browseable = yes
valid user = dimon
path = /home/www/
read only = no
create mask = 0755

На этом настройка конфига самбы закончена.

Теперь нам надо добавить пользователя dimon в файл паролей самбы:
dimon@server:~$ sudo smbpasswd dimon

Рестартим самбу:
dimon@server:~$ sudo service samba restart

И вуаля, в сетевом окружении в виндах находим наш сервер, заходим в него и видим 2 наших папочки :)

воскресенье, 17 мая 2009 г.

Создание пользователя MySQL

Мне понадобилось создать пользователя MySQL с правами доступа к конкретной базе данных.
Название базы ysa

Для этого позключаемся к MySQL rootом:

dimon@server:~$ mysql -u root -p

Проверяем, на всякий случай, существует ли нужная наб база:

mysql> show databases;

Если базы нету, создадим ее:

mysql>create database ysa;
и теперь создаем нового пользователя с правами на работу с базой ysa с помощь команды GRANT

mysql> GRANT ALL PRIVILEGES ON ysa.* TO ysa@localhost IDENTIFIED BY 'user_pass';

Неплохое How to можно найти по тут и тут

Пример настройки виртуального хоста Apache2 и с пояснениями


Как известно с выходом второй версии вебсервера Apache его разработчики приложили выносить все настройки виртуальных хостов непосредственно в файле конфигурации виртуального хоста. Ниже пример подобной настройки с пояснениями.


<VirtualHost *:80> # Адрес почты который будет показывать сервер пользователю например при ошибках ServerAdmin admin@site.com # Основной адрес по которому будет открыватся сайт ServerName site.com # Дополнительный адрес по которому будет открыватся сайт ServerAlias www.site.com # Папка в которойнаходятся файлы сайта DocumentRoot /home/www/www.site.com # Настройки поведения всех папок сайта <Directory /> Options FollowSymLinks AllowOverride None </Directory> # Настройки поведения основной папки сайта и подпапок <Directory /home/www/www.site.com/> # Настройки # -Indexes - запрещаем показывать содержимое папок если в них нет индексного файла. # Если бы впереди не было знака минуса, то показывать содержимое было бы разрешено # FollowSymLinks - данная деректива разрешает использование симлинков на сайте # -MultiViews - данная опция может показывать несуществующие страницы сайта # Например: если на сайте есть страница www.site.com/link.php, то в случии активации диррективы # MultiViews эта страница откроется и по такому адресу - www.site.com/link/ # Ничего полезного в данной опции не вижу, поэтому отключаю. Options -Indexes FollowSymLinks -MultiViews # Указываем кодировку по умолчанию IndexOptions Charset=UTF-8 # Разрешаем использование .htaccess AllowOverride All Order allow,deny allow from all </Directory>

# Указываем куда будем писать лог ошибок сайта ErrorLog /var/log/apache2/www.site.com-error.log

# Указываем какие ошибки писать # Possible values include: debug, info, notice, warn, error, crit, alert, emerg. LogLevel warn

# Указываем куда записывать лог доступа к сайту CustomLog /var/log/apache2/www.site.com-access.log combined </VirtualHost>


Хорошый мануал по настройке http://rus-linux.net/MyLDP/BOOKS/MDKman/ch10s02.html

nano

Одним из первых вопросов которым я задался в самом начале работы с Linux - какой консольный редактор использовать. Сначала я попробывал vim, и, откровенно говоря, пришел в дикий ужас от совершенно непривычной, для человека которыйвсю жизнь проработал с Windows, логике работы с редактором и системой команд. И хотя на большинстве форумов которые я перелопатил сторонники этого редактора говорили что это лишь дело привычки научится работать с vim, я привыкать не стал.

В результате я перепробывал еще некоторые редакторы, и решил что самым удобным для меня является редактор nano. Система команд впринципе похожа на ту, к которой я привык, только хоткеи другие. Поэтому сейчас я работаю именно с этим редактором.

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

Скачать архив можно по этой ссылке: http://bigvo.dyndns.org/nanosyntax.tar.bz2

Установка очень простая:

1. Скопируйе все файлы с расширением *.nanorc в /usr/share/nano
2. Скопируйте nanorc в /etc

четверг, 14 мая 2009 г.

Mounting CD-ROM

После того как предидущий сервер пал смертью храбрых в неравной борьбе с программой Partition Magic мне удалось все таки вытащить некоторую информацию с переразмеченного винта.

Эта информация была слита на CD котрый теперь надо подмаунтить к системе. Оказалось что это проще простого:

sudo mount /dev/cdrom

Не забываем sudo :)

и все, можно пользоватся:

mc /media/cdrom

Устанавливаем необходимый софт

По умолчанию в состав дистрибутива Ubuntu не включен такой полезный инструмент как конфольный файл менеджер Midnight Commander А зря :) Очень полезный инструмент.

Поэтому устанавливаем:

sudo apt-get install mc

Дальше
установим поддержку zip и rar архивов:

sudo apt-get install zip unrar-free

sudo

При установке Ubuntu я разрешил логин под рутом и создал обычного юзера. Проблема в том что этот юзер по умолчанию не может работать от имени рута с использованием команды sudo

dimon@server:~$ sudo ls
[sudo] password for dimon:
dimon is not in the sudoers file. This incident will be reported.

Для начала проверим к каким группам принадлежит пользователь dimon с помощью команды id

dimon@server:~$ id
uid=1000(dimon) gid=1000(dimon) groups=4(adm),20(dialout),24(cdrom),46(plugdev),122(sambashare),126(lpadmin),1000(dimon)

Мы видим что наш пользователь принадлежит к группе adm поэтому добавим эту группу в список разрешенных в конфиг файл программы sudo.

Вобще то в Linux обычно для таких целей используется группа wheel, но в моем файле /etc/group такой группы нет. И хоть ее и не сложно добавить, думаю что можно обойтись без этого - группа adm отлично подойдет для нашей цели.

Для того что бы добавить пользователя dimon в список пользователей которым разрешено использование команды sudo заходим под рутом (команда su) и открываем для редактирования файл /etc/sudoers

root@server:/home/dimon# nano /etc/sudoers

Добавляем такую строчку:

%adm ALL=(ALL) ALL


А для того что бы разрешить использование команды sudo без ввода пароля пользователю dimon добавим строчку

dimon ALL=NOPASSWD: ALL


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

%adm ALL=NOPASSWD: ALL

Но вообще, считается, что разрешать выполнение sudo без пароля не безопасно :) Так что решайте надо ли оно вам :)

Buffer I/O Error

После установки Ubuntu Server при загрузке системы начали появляться множественные ошибки Buffer I/O Error несмотря на которые линукс все же загружался.

Нагуглил несколько предположений, самое неприятное из которых - сдыхает винт.

В результате оказалось, что просто нужно было вытащить диск из CDRom! Зачем убунте понадобился сидиром при загрузке так и осталось для меня загадкой, но факт на лицо - без диска загрузка проходит без проблем :)

Что было раньше

Хочу сразу оговорится, что до домашнего сервера дела с Linux я практически не имел, если, конечно не считать периодическую работу с виртуальным хостингом по SSH, который ограничивался запуском MC и работой с архивами. Но и пару раз запускал Linux с LiveCD - так сказать для ознакомления.

Поэтому даже еще до покупки нового компа (сервер я сделал на базе своей старой машинки) я начал шататься по форумам и читать статьи в поисках подходящего дистрибутива. В конце концов было решено использовать Ubuntu Server. И был скачан образ Ubuntu Server версии 8,04

И вот компьютер установлен, вся необходимая информация перенесена с винчестера старого на новый комп, старый 300гиговый винчестер отфарматирован и избавлен от лишних разделов. Все готово к установке.

И тут и начался облом. Попытка установки Ubuntu обрывалась с самого с сообщением Kernel Panic. Никакие дополнительные опции при установке ни помогли. Поиск в интернете и вопросы на разных форумах также не дали результатов.

Тогда я стал пробовать разные дистрибутивы. Были испробованы Runtu, Ubuntu Desktop, Feodora, Gentoo, FreeBSD (описание ошибки), Mandriva 2009, Mandriva 2007.

Забегая вперед скажу что из всего вышеперечисленного установить удалось только 2 - Gentoo и старенький дистрибутив Mandriva 2007.

Сначала хотел оставить Gentoo, начал с ней возится, 2 раза вручную устанавливал, собирал ядро. Но система стала только со второго раза и то без сетевой карты и необходимого софта. Промучавшись несколько ночей (сервер домашний и соответственно заниматься им могу только после работы, да и то не каждый день) плюнул на это дело :)

Вобщем от знакомства с Gentoo у меня осталось только одно воспоминание - красные глаза :)

Так у меня на сервере поселилась Mandriva 2007 И началась борьба с системой :) Начну с того что мне так и не удалось осилить ее менеджер пакетов - то ли репозитории не те указывал то ли еще что то, но обновить Apache, PHP, установить rTorrent мне так и не удалось.

Из того что мне все таки удалось в конце концов сделать - поднять http server с php4 и настроить Samba server. На первых порах меня это вполне устроило, но в конце концов необходимость установить сайт который требовал php5, а также разные мелкие глюки (например почему то постоянно работал винчестер, даже если сервер находился в покое описание проблемы на форуме) и неудобства заставили меня опять искать решения проблемы с установкой других дистрибутивов.

В конце концов после долгих мытарств ответ был найден. Вернее не найден, а подсказан хорошим человеком :) Unic привет

Всего на всего надо было взять 64битный дистрибутив! (у меня процессор Athlon64 3000+)

Вобщем в результате на сервере поселилась Ubuntu Server 8.10 которую через месяц я успешно запорол неудачным переразбиением винчестера :) И вот третяя реинкарнация :)

Для чего этот блог

Я решил поставить домашний linux сервер. Задчи вкратце: вебсервер, файл сервер, торренты.

Решение это я принял некоторое время назад, недавно купил новый компьютер, а старый домашний отдал под вышеупомянутый сервер.

Так получилось что к моменту когда я пишу этот пост, мне пришлось третий раз переустанавливать систему, причем в этот раз с потерей всех конфигов.

Поэтому и решено было завести этот блог - я буду в каждом посте описывать решенную задачу или проблему с которыми я столкнусь. Поэтому если прийдется еще разок переустановить систему, у меня будет полное руководство по настройке :)

Ну и может кто то в процессе поиска мануала или ответа на вопрос набредет на эти записи и найдет необходимую информацию :)