На данный момент мощность большинства мобильных устройств класса ноутбук или нетбук вполне достаточна для того, чтобы использовать их в качестве легкого, мобильного сервера. Я не вытерпел и сделал из своего нетбука 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 — очень простой консольный почтовый клиент, используем для чтения почты;
Устанавливаем ПО
- Zend Server Community Edition
- vsftpd
- sendmail
- git + gitweb
Понимающим английский язык я советую прочитать официальное руководство по установке сервера на 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% всех потребностей современных сайтов.
Ставится очень просто одной командой 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
чтобы внесенные изменения стали доступны.
Ставится также одной командой aptitude install sendmail
хотя и придется принять решение об удалении Exim (можно смело удалять).
Настройка заглушки делалась мной по следующей инструкции
Для чтения писем я использую консольный почтовый клиент mutt, запуская его командой mutt -f /var/mail/sendmail
Основное описание процедуры установки и настройки 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.cgicp -Rf gitweb /var/www/www.yoursite.com/html
Естественно, вместо www.yoursite.com вам следует вписать имя своего сервера. Также для доступа надо будет настроить виртуальный хост в apache. Достаточно создать файл /etc/apache2/sites-available/www.yoursite.com со следующим содержимым:
chown -Rc git:www-data /var/www/www.yoursite.com/html
<VirtualHost *:80>ServerAdmin webmaster@www.yoursite.comServerName www.yoursite.comDocumentRoot /var/www/www.yoursite.com/htmlDirectoryIndex index.php index.html gitweb.cgiErrorLog /var/log/apache2/error.www.yoursite.com.logCustomLog /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
Перезагружаем сервер целиком и пользуемся. Удачи!
А вместо Debian покатит Ubuntu с вышеперечисленным ПО ?
Да, только статье уже скоро 6 лет исполнится и, возможно, заметка Ubuntu-Nginx-PHP7-Symfony будет вам полезнее.
P.S.
Небольшие ошибки в заметке по ссылке автор скоро поправит 😉