Как стать автором
Обновить

Домашний сервер для веб-разработчика: настройка Ubuntu 9.04

Время на прочтение 10 мин
Количество просмотров 7.4K

Содержание:

  1. Вступление;
  2. Железо;
  3. Готовим флешку;
  4. Установка Ubuntu 9.04, стартовая настройка;
  5. Домашняя SAMBA;
  6. Apache, PHP, MySQL, phpMyAdmin;
  7. (будет дополнено 23.09.2009) SVN (Subversion);
  8. (будет дополнено 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). Последний был выбран по причине наличия под него автоматизированного скрипта управления пользователями. А также сейчас готовится отдельный блог, одной из первых тематик — будет это руководство. Куда будут размещены эти статьи, а также остальные части этого руководства. Также планируется разместить некоторую философию и требования к установке тестового и домашнего сервера веб-разработчика.
Теги:
Хабы:
+18
Комментарии 37
Комментарии Комментарии 37

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн