Делаем из нетбука карманный web-сервер.

28 ноября 2010
Рубрика: Debian, How-to, Заметки
Теги: , , , , , , , , , , ,

Softovick

На данный момент мощность большинства мобильных устройств класса ноутбук или нетбук вполне достаточна для того, чтобы использовать их в качестве легкого, мобильного сервера. Я не вытерпел и сделал из своего нетбука Asus EeePC 900 сервер, который выступает в роли WEB-сервера (LAMP), хранилища для файлов (FTP) и кода (GIT, GitWeb)… И для этого достаточно пары-тройки часов времени, нетбук, интернет и дистрибутив Debian (в целом можно и другой, но я предпочитаю его, как простой и удобный).
Итак, поехали…

Подготовимся

Для начала подготовьте носитель, с которого будете ставить Debian. Один из самых простых вариантов — использование USB-накопителя (флешки, вполне достаточно 256Мб, если используете Debian netinstall) и программы Unetbootin (напоминаю, что эта утилита есть и для Windows и для Linux, доступна из стандартного репозитория Ubuntu).
Ставим на нетбук (или выбранное вами устройство) Debian. Для своего нетбука я выбрал Debian Lenny i386. Подробно описывать не буду, как ставить, об этом можно прочитать тут, но дам пару рекомендаций:

  • размечайте диски на свой вкус, но для /var выбирайте более быстродействующий диск (у меня на нетбуке первый физический диск более быстрый, чем второй);
  • при установке не выбирайте «Окружение рабочего стола», вполне достаточно будет «Стандартная система», ну и еще может «Для ноутбука» (если устройство действительно ноутбук);

Выберем ПО

Вкратце, чтоже мы будем ставить на наше устройство, чтобы превратить его в настоящий сервер? Итак, это:

  • В качестве WEB-сервера будем использовать Zend Server Community Edition. Эта сборка наиболее проста в установке и богата по функциональности;
  • В качестве FTP-сервер будем ставить vsftpd. Достаточно простой в настройке ftp-сервер;
  • В качестве почтового сервиса я по старой привычке использую sendmail с заглушкой в стиле Denwer, когда все письма складываются в отдельную папку, а не рассылаются по всему интернету. На всякий случай хочу сказать, что мои взгляды не все разделяют :);
  • Ну и для хранилища кода используем GIT вместе с Gitweb, чтобы просматривать через браузер.

Также для удобства не забудем поставить следующие утилиты:

  • mc — всего лишь удобный консольный двухпанельный файловый менеджер;
  • screen — утилита для запуска мультисессий в консоли;
  • htop — простая и наглядная утилита, показывающая нагрузку на сервер, расход памяти и список процессов;
  • mutt — очень простой консольный почтовый клиент, используем для чтения почты;

Устанавливаем ПО

  1. Zend Server Community Edition
  2. Понимающим английский язык я советую прочитать официальное руководство по установке сервера на deb-дистрибутив, а в своей заметки напишу вкратце.
    Итак, для удобства авторизуемся под пользователем root. Дальнейшие команды рассчитаны именно на привелегии суперпользователя, иначе в необходимых местах достаточно вписать sudo.
    Сначала подключаем к нашей системе репозиторий от компании Zend:
    добавим в список репозиториев nano /etc/apt/source.list
    там вписываем deb http://repos.zend.com/zend-server/deb server non-free
    теперь импортируем ключ и обновляем список пакетовwget http://repos.zend.com/zend.key -O- | apt-key add -
    aptitude update

    Затем устанавливаем основную часть и ставим дополнительные пакеты:
    для PHP 5.2
    aptitude install zend-server-ce-php-5.2
    aptitude install php-5.2-extra-extensions-zend-server control-panel-zend-server phpmyadmin-zend-server

    для PHP 5.3
    aptitude install zend-server-ce-php-5.3
    aptitude install php-5.3-extra-extensions-zend-server control-panel-zend-server phpmyadmin-zend-server

    В процессе установки дополнений (вторая строчка) понадобится также вписать пароль для суперпользователя root, имеющего неограниченный доступ к базам данных MySQL (не путайте с системным пользователем root, который имеет доступ ко всей системе). Установленного ПО более чем достаточно для полноценной работы в качестве WEB-сервера, а набор расширений для php удовлетворит практически 90% всех потребностей современных сайтов.

  3. vsftpd
  4. Ставится очень просто одной командой aptitude install vsftpd
    Затем отредактируем настроечный файл nano /etc/vsftpd.confгде включим следующие значения (достаточно убрать символ # перед строкой со значением):
    local_enable=YES
    write_enable=YES
    chroot_local_user=YES

    Эти значения позволят подключатся к сервер пользователям, заведенным в системе, записывать на сервер файлы и при этом не иметь возможности выйти за пределы своей домашней папки.
    Также на всякий случай отключим анонимный доступ, поставив символ # перед значением anonymous_enable=YES
    Теперь достаточно перезагрузить сервер командой /etc/init.d/vsftpd restart чтобы внесенные изменения стали доступны.

  5. sendmail
  6. Ставится также одной командой aptitude install sendmail хотя и придется принять решение об удалении Exim (можно смело удалять).
    Настройка заглушки делалась мной по следующей инструкции
    Для чтения писем я использую консольный почтовый клиент mutt, запуская его командой mutt -f /var/mail/sendmail

  7. git + gitweb
  8. Основное описание процедуры установки и настройки GIT я брал из это инструкции, но мой алгоритм немного отличается, потому взял на себя смелость воспроизвести весь путь полностью. Git достаточно поставить при помощи следующей команды aptitude install git-core perl perl-base perl-modules
    Создаем пользователя git и папку для хранения репозиториев
    useradd notes
    groupadd notes
    usermod -G notes notes
    passwd git
    mkdir /opt/git
    chown git:git /opt/git

    Проект создается по следующему алгоритму:
    на сервере авторизоваться под пользователем git и выполнить команды mkdir -p /opt/git/project.git
    cd /opt/git/project.git
    git --bare init

    Естественно, вместо project выставить нужное вам название.
    Затем на клиенте инициализируем и передаем на сервер файлы (если проект уже есть, либо следует создать хотя бы один пустой файл, чтобы коммит прошел) cd project
    git init
    git add .
    git commit -m 'First commit'
    git remote add origin git@git.yourserver.com:/opt/git/project.git
    git push origin master

    Важно понять, что я только лишь для упрощения не настраиваю и на рассматриваю доступ через ssh к серверу по ключам, поэтому каждый раз при подключении к серверу надо будет вводить пароль пользователя git. Вот в общем то и вся процедура.
    В целом этого уже достаточно для работы GIT-репозитория, но для удобства мы настроим Gitweb для доступа через браузер.
    Итак, скачиваем исходные коды gitweb cd /tmp
    git clone git://git.kernel.org/pub/scm/git/git.git

    компилируем скрипт cd git/
    make GITWEB_PROJECTROOT="/opt/git" prefix=/usr gitweb/gitweb.cgi
    и устанавливаем в папку для доступа из браузера cp -Rf gitweb /var/www/www.yoursite.com/html
    chown -Rc git:www-data /var/www/www.yoursite.com/html
    Естественно, вместо www.yoursite.com вам следует вписать имя своего сервера. Также для доступа надо будет настроить виртуальный хост в apache. Достаточно создать файл /etc/apache2/sites-available/www.yoursite.com со следующим содержимым:

    <VirtualHost *:80>
    ServerAdmin webmaster@www.yoursite.com
    ServerName www.yoursite.com
    DocumentRoot /var/www/www.yoursite.com/html
    DirectoryIndex index.php index.html gitweb.cgi
    ErrorLog /var/log/apache2/error.www.yoursite.com.log
    CustomLog /var/log/apache2/access.www.yoursite.com.log combined
    <Directory ‘/var/www/www.yoursite.com/html’>
    AllowOverride All
    <Files gitweb.cgi>
    SetHandler cgi-script
    </Files>
    </Directory>
    </VirtualHost>

    и включить виртуальный хост a2ensite www.yoursite.com

Перезагружаем сервер целиком и пользуемся. Удачи!

2 комментария для “Делаем из нетбука карманный web-сервер.”

  1. Сергей20 июня 2016 ~ 13:43

    А вместо Debian покатит Ubuntu с вышеперечисленным ПО ?

  2. Zeboton21 июня 2016 ~ 16:13

    Да, только статье уже скоро 6 лет исполнится и, возможно, заметка Ubuntu-Nginx-PHP7-Symfony будет вам полезнее.

    P.S.
    Небольшие ошибки в заметке по ссылке автор скоро поправит 😉

Ваш комментарий

*