Содержание:
- Вступление;
- Железо;
- Готовим флешку;
- Установка Ubuntu 9.04, стартовая настройка;
- Домашняя SAMBA;
- Apache, PHP, MySQL, phpMyAdmin;
- (будет дополнено 23.09.2009) SVN (Subversion);
- (будет дополнено 23.09.2009) VSFTPD или FTP по-человечески;
1. Вступление.
Для чего нужен домашний сервер описывать не буду. Это каждый для себя решает сам.
Мои требования к ДС были такие:
- Железо – недорогое, небольшие размеры, бесшумность;
- Операционная система – Ubuntu 9.04 Desktop;
- Стандартный набор веб-разработчика (LAMP) + SVN;
- Расшаренные ресурсы под компьютеры в семье;
- Для предоставления доступа друзьям – FTP.
Облазив все доступные ссылки, я не нашел необходимой мне комплексной статьи руководства, для начинающего ubunt-овода, да и просто полной статьи. Поэтому по частям и собиралось данное руководство, так называемый «Step By Step Install» для себя. По завершению, решил попробовать описать чистую установку и настройку Ubuntu 9.04 с нуля, все в одной статье (а развитие, вскоре, будет в блоге).
Еще один момент. Домашний сервер подразумевает под собой наличие выделенного канала, и желательно еще и с выделенным IP-адресом, хотя кое-кому вполне подойдет использование DynDNS, но я предпочел оплату 10 грн/мес (1.2$) своему провайдеру, поэтому вопрос DynDNS в этой статье, пока что, не рассматривается. Наличие неплохой скорости – 4 Мбит/с на мир и 100Мбит/с на Украину (UA-IX), дает возможности использовать сервер в пределах Украины на полную катушку.
2. Железо.
Предупреждение:
Ваше железо может быть любым, единственное что Вы должны быть уверенны в том что есть доступ к Internet, что железо поддерживается в Ubuntu. Т.е. если у Вас какая-то экстра-гипер-модификация ARM не жалуйтесь что у Вас что-то не получается. Я лично предпочел купить для этого машинку отдельную.
По выбору железяки для ДС, я уже отписывался отдельной статьей (http://habrahabr.ru/blogs/hardware/68805/). Кому лень читать, то это:
Материнская плата – Zotac IONITX-A (Intel Atom N330);
Оперативка – 2 Gb;
Винчестер – Seagate-Maxtor DiamondMax 23 500Gb (7200rpm, 16Mb cache, SATA II, 3.5”);
Корпус – CFI A8989;
Пропеллер (на выдув) – Zalman Ultra Quiet 80мм.
Из дополнительного, была приобретена отдельная флешка на 1Гб, для того чтобы не играться с CD/DVD приводами, а производить установку напрямую с флешки.
PS: Прошу не указывать на то, что это винчестер Seagate-Maxtor, WD-шка конечно же лучше, но, к сожалению, у нас в городе они бесследно пропали на момент покупки, и пришлось взять временно хотя бы такой.
Wi-Fi на ДС – можно выкинуть сразу же. Оно не имеет никакого абсолютно смысла. 54Мбит выдадут Вам при 100% уровне сигнала всего-лишь 6.75Мбайт/с, а при делении канала на торренты + домашняя сеть (в которой вполне реальная ситуация – это просмотр видеофильмов и прослушивание музыки с сервера) реальная скорость – 1.5-2Мбайт/с, что есть – неприемлимым. Мой выбор – так как плата Zotac IONITX-A держит 1Gb Ethernet-порт, то будет прямое включение в роутер по Ethernet. Wi-Fi роутер был сменен с D-link DIR-615+ на D-Link DIR-655, по причине того что у последнего есть поддержка 1Gb WAN + 4 х 1Gb LAN Ethernet-порта. Вместе дало возможность достигнуть максимальной скорости передачи информации. Для усиления покрытия Wi-Fi, для домашних ноутбуков и wi-fi устройств, были использованы две антенны D-Link ANT-24 0070C (7dbi, вместо штатных 2dbi).
Роутер настроен на раздачу Интернета по DHCP (не хотелось морочится со статикой, да и не вижу смысла особого) и сервер естественно статикой, а также на роутере настроен проброс портов на внутренний фиксированный IP 192.168.0.66:
- SSH: 44000;
- HTTP/HTTPS: 80/443
- FTP: 21
PS: Пожалуйста, я не хочу холиварить по возможности установки Wi-Fi 802.11n, замена железа на 802.11n на всех устройствах, по-моему, будет просто лишней тратой денег. Со временем это будет обязательно, но пока что для домашнего сервера я выбрал – Ethernet. Считаете что я не прав? Вам и карты в руки. :)
3. Готовим флешку.
Лично я готовил флешку в Windows. Используемый софт:
- HP USB Disk Storage Format Tool (ищем последние версии в поисковиках);
- Unetbootin (http://unetbootin.sourceforge.net/)
Quick Install:
- Форматируем флешку в HP USB DSFT. Файловая система – FAT32 (обязательно!).
- Запускаем Unetbootin;
- Выбираем Distribution – Ubuntu -> 9.04 Live;
- Disk Image: ISO -> клац на троеточии -> выбираем диск с дистрибутивом Ubuntu 9.04;
- Type: USB Drive, Drive: имя диска флешки;
- Клацаем «ОК»;
- Читаем «из интереса» дальше, пока закончится копирование;
- Вытягиваем флешку, тыкаем в ДС.
4. Установка Ubuntu 9.04, стартовая настройка
Саму Убунту поставить может, наверное, даже ребенок. С флешки это еще быстрее и удобнее, думаю в BIOS выставить загрузку с USB Flash Drive сможет каждый, да? Самое приятное, что есть в Ubuntu, это то что почти все драйвера из «коробки». В моем случае не было только драйвера NVidia GeForce 9300M. Опишу некоторые моменты установки, которые лично я использую.
1. Наличие интернета при загрузке с LiveCD.
Зачем это надо? Я выбираю при установке язык — «Русский» (кстати, переключение по Alt+Shift, по-умолчанию, если потребуется). Убунту самостоятельно еще при установке подтягивает все необходимые файлы локализации. Играться в дальнейшем с их выискиванием я не пробовал и не имел ни малейшего желания. Поэтому беру за факт – подключение к Интернет должно быть при установке.
2. Разбивка жесткого диска.
Сколько документации было перерыто по этому вопросу, ведь хотелось всего-то на всего понять, как разбить диск в линуксе, чтобы, при дальнейших переустановках не потерять всю информацию на основном разделе.
Принято было такое решение, 500 Гб винт был разбит на:
Первичный раздел -> RaiserFS -> 300Mb -> «/boot»
Первичный раздел -> swap -> 4096Mb
Первичный раздел -> Ext3 -> 40000Mb -> «/»
Первичный раздел -> Ext3 -> …450 Гб т.е. все остальное место… -> «/home».
Все остальные моменты, например выбор языка инсталлятора и выбор имени и пароля, оставим как «домашнее задание». Заранее напишу, что название компьютера я поставил «homeserver» и логин администратора «odmin», в дальнейшем будем предполагать, что у Вас оно такое же.
Все после установки – вытягиваем флешку (чтобы 10 раз с неё не грузится) и ребут.
Voila! Чистая система запущена.
Теперь маленький финт ушами. Я привык к русскому меню в Ubuntu, и хочу использовать русскую локализацию системы, но меня жутчайше бесят названия папок типа «Рабочий стол», «Видео», да и вообще русские названия папок, хочу чтобы были «Desktop», «Video», «Documents». Как это по-другому делать не знаю, поэтому описываю то, как делаю, чтобы избавиться от этой проблемы. Топаем в пункт Система -> Администрирование -> Локализация. Попросит обновить пакеты локализации — обновляемся (повторяюсь – это пошаговое руководство для ЧИСТОЙ установки с нуля). После этого выбираем язык English (USA) в меню и в логине – давим кнопку «ОК». В процессе вероятнее всего выскочит на фоне окошко «Обновления системы» — пока его трогать не будем, ибо идем пошагово. Нажимаем «CTRL + ALT + F1» – переход в консоль. Логинимся, вводим команду:
sudo /etc/init.d/gdm restart
Этим мы перезагружаем Gnome Desktop Manager, оно же gdm. Логинимся в графическом режиме (если не перекинуло, давим CTRL + ALT + F7). После загрузки система выдаст окно с вопросом о смене имен под буржуйскую локализацию. Ставим галочку – «Не спрашивать больше» и выбираем «Update names» (это переименование папок). Топаем опять в пункт Локализации (System -> Administration -> Localization) и возвращаем «Русский» в меню и в логин. После этого делаем снова рестарт gdm-а.
На фоне печально все-таки пытается допроситься обновления система. Теперь удовлетворим её. Если она устала клянчить и не показала окно, то вызовем её из пункта Система -> Администрирование -> Обновление системы. Нажимаем «Проверить обновления» и после этого «Установить обновления». Система радостно захрюкает Интернетом, а мы спокойно можем, в зависимости от размера канала Интернет, пойти перекурить. На канале 4 Мбит/сек у меня, обновления на 157 мегабайт скачиваются, примерно, 2-3 минуты и после этого идет установка пакетов, еще минуты 4… плюс-минус, итого, где-то, предположим, 10 минут. Что равно – чашке кофе, заваренного самостоятельно в турке + сигарета. Возвращаемся – видим радостное сообщение, что система полностью удовлетворена и просит перезагрузиться, в чем мы ей и помогаем. Еще один этап пройден.
Поехали дальше – а дальше надо осознавать что у нас все-таки «Cервер», а значит негоже сидеть за графическим экраном, а сидеть надо удаленно… например в другой комнате и с ноутбука. Для этого нам нужен SSH, но какой SSH без Midnight Commander'a. Поехали в Терминал (для совсем незнающих, Терминал вызывается так: Программы –> Стандартные -> Терминал).
# Зачищаемся после обновления
sudo apt-get autoremove
# Устанавливаем SSH, MC
sudo apt-get install ssh mc
Теперь кое-какие правки в конфиге SSH
sudo mcedit /etc/ssh/sshd_config
Строку «Port 22» меняем на «Port 44000» и рестартим SSH.
sudo /etc/init.d/ssh restart
Все. С понтом, микро-защита от роботов-идиотов – есть.
На этом предварительная установка завершена. Отключаем монитор от сервера, сервер запихиваем под стол, а еще лучше завалить какими-то книжками, для создания полной атмосферы удаленности и невозможности доступа к серверу.
PS: В этом разделе я, правда, еще устанавливаю драйвера для NVidia GeForce, для моей материнской платы, но их установку опишу немного позднее.
5. Домашняя SAMBA
На этом пункте я сломал не один бубен. Мне необходимо было всего-то расшарить пару-тройку папок для общего доступа и несколько с парольным доступом (персональные для отца и для жены). Пока что я разобрался только как расшаривать доступ для всех в сети, но с помощью читающих гуру, я планирую дополнить этот раздел, поэтому я дополнил сразу же вопросы про приватные паролируемые папки.
После Windows, меня больше всего выбивает отсутствие разбивки на диски, что очень для меня неудобно, и порядок в папках я предпочитаю поддерживать. Поэтому я выработал себе такую структуру директорий для расшаренных папок.
- /home
- /home/samba
- /home/samba/public – общая папка, типа мусорки;
- /home/samba/private_father – приватная папка отца;
- /home/samba/private_wife – приватная папка супруги;
- /home/samba/private_my – приватное моё хранилище;
- /home/samba/video – папка с видео;
- /home/samba/music – папка с музыкой.
Учитывая, что папка /home у нас огромная, то туда элементарно будет складироваться вообще все. При переустановке её просто не форматируем. В дальнейшем добавим папки на внешних дисках.
Вернемся к установке и настройке samba.
# Устанавливаем
sudo apt-get install samba samba-tools
# Создаем главную папку (я говорил, что рассматриваем чистую систему)
sudo mkdir /home/samba
# Прикрепляем пользователя
sudo smbpasswd -a odmin
# Активируем пользователя:
# (я не все действия понимаю, знаю только, что они работают)
sudo smbpasswd -e odmin
# Создаем и открываем для правки файл /etc/samba/smbusers
# (тоже непонимаю зачем, но надо)
sudo mcedit /etc/samba/smbusers
# Содержимое файла /etc/samba/smbusers
#
odmin = Admin
Во всех инструкциях пишется про то что надо конфигурировать файл /etc/samba/smb.conf для добавления и удаления новых расшаренных папок, но у меня жесткое требование к задаче – как можно меньше замусоривать систему лишними задачами, командами и т.д., поэтому от редактирования конфигурационного файла я отказался. Вместо него я познакомился с замечательной командой – «net». Она удобна для меня тем что можно (если знать конечно все синтаксисы) добавлять пользователей и прочее через командную строку. Если я в чем-то неправ, повторюсь, пожалуйста поправляйте, и будем вместе дополнять это руководство. А пока что продолжим, то как я знаю:
# Создаем папку для расшаривания
sudo mkdir /home/samba/public
# Регистрируем эту папку в самбе, где:
# Syntax: net usershare share_name /path/to/share [acl] [<guest_ok=[y|n]>]
# Public – это название, под которым будет видна папка в Windows;
# /home/samba/public – это путь к нашей папке;
# Everyone:F – это некий страшный acl, назначение его я тоже не понимаю,
# но насколько понимаю именно в эту сторону необходимо ковырять
# для того, чтобы сделать доступ определенному юзеру к папке.
# guest_ok=y – это предоставление доступа всем «гостям».
sudo net usershare add Public /home/samba/public Everyone:F guest_ok=y
По аналогии добавляем папки Video и Music.
Для применения всех изменений делаем рестарт samba командой:
sudo /etc/init.d/samba restart
На этом все мои познания в samba заканчиваются, но этого достаточно для внутреннего расшаривания папки и направления куда копать.
PS: Я приношу свои извинения в случае если в этих решениях настоящие Гуру увидят проблемы безопасности, а также другие какие-либо проблемы. Я не администратор – я веб-разработчик, мне нужна домашняя система для тестирования. Я прошу помощи для создания скрипта автоматической настройки расшаренных папок. Если у кого-то проявится желание помочь сделать таковой, я могу скинуть что я бы хотел от него получить. Либо за него могу заплатить, в пределах разумного, но могу. В любом случае, прошу написать в личку номер ICQ или Skype как с Вами связаться и думаю решим этот вопрос. Естественно скрипт и Ваше Имя сразу же будет приложено к статье здесь и при перепечатке.
6. Установка Apache, MySQL, PHP и phpMyAdmin
Ну здесь все совсем просто.
Структура директорий, которую я выбрал опять же из всех своих требований удобности к расположению папок.
- /home
- /home/sites – папка в которой складируется все что касается веб-разработки;
- /home/sites/www – папка дефолтного сайта.
Консоль и поехали:
# Создаем папку для нашего сайта
sudo mkdir /home/sites
sudo mkdir /home/sites/www
# Меняем права доступа для удобства доступа с нашего аккаунта odmin
sudo chown -R odmin:www-data /home/sites/www
# Устанавливаем MySQL
# По окончанию скачивания, MySQL попросит ввести ваш root-пароль доступа
# к MySQL, вводите его сразу же здесь, зачем вызывать его смену потом?
sudo apt-get install mysql-server
# Устанавливаем Apache 2.2.xx и PHP 5.2.x
# Система сама выберет последние версии в официальном репозитарии,
# для других пока что я не заморачивался
sudo apt-get install apache2 php5 php5-mysql
# И упаковку модулей к PHP
sudo apt-get install php5-curl php5-adodb php5-gd php5-ffmpeg php5-imagick php5-memcache php5-xmlrpc php5-xsl
# Устанавливаем phpMyAdmin
sudo apt-get install phpmyadmin
# Лично я использую при работе еще и Image Magick, поэтому
sudo apt-get install imagemagick
Обновим файл /etc/apache2/httpd.conf для того чтобы при рестарте Apache у нас не появлялась ошибка.
sudo mcedit /etc/apache2/httpd.conf
# Содержимое файла /etc/apache2/httpd.conf
#
ServerName localhost
Правим файл /etc/apache2/sites-available/default на такой:
# Содержимое файла /etc/apache2/sites-available/default
#
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/sites/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/sites/www/>
Options -Indexes FollowSymLinks
ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
И конечно же делаем рестарт apache.
sudo /etc/init.d/apache2 restart
Вместо послесловия
Если Вы решите что подобное руководство будет полезным, то я продолжу её развитие, завтра добавлю руководство по установке SVN, а также vsFTPd(пользователи в MySQL). Последний был выбран по причине наличия под него автоматизированного скрипта управления пользователями. А также сейчас готовится отдельный блог, одной из первых тематик — будет это руководство. Куда будут размещены эти статьи, а также остальные части этого руководства. Также планируется разместить некоторую философию и требования к установке тестового и домашнего сервера веб-разработчика.