Веб сервер на Debian и Hachberry A10

Установка

Открываем терминал… для тех кто не знает жмем комбинацию клавиш Ctrl+Alt+T далее качаем дистрибудив и распаковываем. Не переживайте если будет зависание при распаковке так как он из 200 метров станет 4гига. (вставить скопированный текст в терминал можно нажатием Ctrl+Shift+V)

wget http://dl.miniand.com/jas-hacks/debian_wheezy_3.0.36.img.gz
gunzip debian_wheezy_3.0.36.img.gz

далее сразу качаем обновления:

wget http://dl.miniand.com/jas-hacks/uboot/1gb/sunxi-spl.bin
wget http://dl.miniand.com/jas-hacks/uboot/1gb/u-boot.bin

вставляем флешку в комп после чего пишем в терминале:

sudo dd bs=4M if=debian_wheezy_3.0.36.img of=/dev/mmcblk0

это может занять прилично времени и при этом может казаться что нет не каких процессов.
теперь ставим обновления:

sudo dd if=sunxi-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=1024 seek=32

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

ssh root@192.168.x.x (пароль по умолчанию password)

определить ip можно через сканер сети или посмотрев логи устройства.


Начальные настройки Debian

Для начала давайте поменяем пароль, для этого пишем:

passwd root (и указываем новый пароль)

создаем нового пользователя и меняем имя хоста c добавлением записи в /etc/hosts:

adduser [ник латиницей]
hostname server-hb
echo server-hb > /etc/hostname

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

dpkg-reconfigure tzdata
aptitude install locales
dpkg-reconfigure locales

устанавливаем сервер точного времени npt:

aptitude install ntp
ntpd -q -g
hwclock —systohc

теперь давайте обновим ядро и все установленные пакеты, и поставим sudo:

aptitude update
aptitude upgrade
aptitude install sudo
visudo

вставить строчку после строчки root «имя вашего пользователя ALL=(ALL:ALL) ALL» и сохранить

Безопасность

Настраиваем элементарную безопасность ssh, для этого нам необходимо отредактировать конфигурацию ssh:

sudo -i
nano /etc/ssh/sshd_config

далее правим следующие строчки и добавляем AllowUsers:

Port [любой порт в пределах 32768 — 61000] #стандартный порт ssh 22 но это не безопасно
LoginGraceTime 60 #Время неактивности при установленном соединении
PermitRootLogin no #запретить логин под пользователем root
PermitEmptyPasswords no #запретить пустой пароль
AllowUsers [ник вашего пользователя] #список пользователей которым разрешен вход

пример подключения к ssh по нестандартному порту:

ssh -p [порт] [имя пользователя]@192.168.x.x

Устанавливаем вафлю (только для HackBerry)

Не будет лишнем поднять вафлю так как это дополнительное соединение через которое мы можем в дальнейшем работать как альтернатива.
Для начала получаем права root если их нету и меняем отребиты доступа к файлам:

sudo -i
chmod 644 /etc/modules
chmod 644 /etc/network/interfaces

теперь загружаем модуль WiFi карты в ядро:

modprobe 8192cu

проверяем появился у нас модуль 8192cu

lsmod

если не установилось и нету в списке то пробуем установить так:

insmod /lib/modules/3.0.36+/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko rtw_power_mgnt=0 rtw_enusbss=0
depmod -a

выводим список сетевых устройства

iwconfig

у вас должно будет что то подобное:

lo no wireless extensions.
eth0 no wireless extensions.
tunl0 no wireless extensions.
wlan1 unassociated Nickname:»»
Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

теперь включаем WiF:

ifconfig wlan1 up
ifconfig

Сканируем точки доступа тем самым проверяем работает ли наш WiFi:

iwlist wlan1 scan

Настраиваем подключение через wpa-supplicant для этого нам необходимо создать конфигурационный файл:

nano /etc/wpa_supplicant/wpa_supplicant.conf

теперь вставляем код только заменив под свои параметры точки доступа.
вот пример подключения к роутеру с WPA2 и шифрованием TKIP и AES:

ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1

network={
ssid=»networkname»
scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=TKIP
psk=»ibetyouwouldliketoknow»
}

сохраняем и выставляем chmod 600 на этот файл так как в нем наш пароль:

chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf

мы можем сделать ручной тест запустив с параметром -d (для выхода нажимаем ctrl+c) и если все нормально запускаем в фоновом режиме с параметром -B:

wpa_supplicant -i wlan1 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -d
wpa_supplicant -i wlan1 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf -B

проверить работу можно с помощи ifconfig, если ip не присвоен то сделаем это вручную и опять проверим:

ifconfig
dhclient wlan1
ifconfig

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

nano /etc/modules

так же добавим записи в /etc/network/interfaces:

nano /etc/network/interfaces

auto wlan1
iface wlan1 inet dhcp
wpa-driver wext
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

и праписываем в /etc/rc.local

nano /etc/rc.local

ifdown wlan1
ifup wlan1
exit 0

готово пользуемся =)
кстати рекомендую на этом этапе сделать backup, для этого вставте флешку в свой стационарный комп и в терминале выполните следующее:

sudo dd if=/dev/mmcblk0 of=my_hackberry.img bs=4M

Предварительная подготовка

Перед тем как начать установку связки Apache, PHP и MySQL необходимо поставить несколько полезных пакетов, без которых ничего не заработает:
Первым делом стоит получить права рута и обновить список доступных для установки файлов с удаленного сервера. Для этого выполните следующую команду

sudo -i
apt-get update

Далее обязательно установить пакет build-essential. Этот пакет включает в себя все необходимые пакеты для работы языков программирования: gcc, g++, make, perl, patch и др. В этом нам поможет следующая команда

dpkg —get-selections | grep essential #проверяем есть ли у нас данный пакет
apt-get install build-essential

Теперь доустановим оставшиеся пакеты, которые не входили в предыдущую сборку, но могут пригодится в процессе работы с сервером. Для этого выполните следующую команду

apt-get install mc tcl8.5 tcl8.5-dev openssl libssl-dev libncurses5-dev ftp telnet traceroute nmap

Установка FTP-сервера

Для связи с сервером одного терминала не достаточно, желательно иметь возможность загружать необходимые файлы и для этого как раз отлично подойдет FTP-протокол. Чтобы наладить по нему связь нужно поднять FTP-сервер и организовать к нему доступ. Для этого существует много способов, но я рекомендую использовать наиболее простой, который в будущем не вызовет геморроя. Таким способом является установка FTP сервера — vsftpd. Его преимущество в том, что логины и пароли к SSH-доступу идентичны логинам и паролям для FTP-доступа. Т.е. созданный ранее пользователь будет работать как для SSH, так и для FTP. Обращаю ваше внимание на то, что для работы по FTP в любом случае необходимо создать пользователя, т.к для root’а FTP-доступ работать не будет из-за соображения безопасности.

В принципе, установка и конфигурация сервера элементарна и не должна у вас вызвать затруднений. Для установки пакета vsftpd необходимо запустить в терминале следующую команду:

apt-get install vsftpd

После этого FTP-сервер готов к работе. Логин и пароль для доступа такие же что и для доступа по SSH. Но желательно произвести несколько необходимых изменений в файле конфигурации /etc/vsftpd.conf. Открываем его в своем любимом редакторе

nano /etc/vsftpd.conf

Теперь необходимо отредактировать или добавить некоторые строчки в файле. Сперва, выключим анонимный доступ к FTP-серверу:

anonymous_enable = NO
local_enable = YES # дадим возможность заходить на сервер локально
write_enable = YES #дадим возможность FTP-серверу записывать что-либо на сервер, это позволит пользователям закидывать файлы на сервер

На этом конфигурацию FTP-сервера можно завершить, а чтобы все изменения вступили в силу его необходимо перезапустить:

/etc/init.d/vsftpd restart

Скажу только одно, что vsftpd является наиболее простым решением для установки FTP сервера, но не самым лучшим. Поскольку он не очень гибкий, но если у вас пока не очень много знании про Linux системы или вы будете одним единственным администратором сервера, то можете пока не париться об этом — vsftpdвам хватит за глаза. Но если у вас более обширные задачи с разграничениями доступа для разных пользователей, установкой различных прав и т.д., то я рекомендую установить ProFTPd.

Установка MySQL-сервера

Теперь после предварительной настройки сервера можно приступить непосредственно к установке связки Apache, PHP и MySQL. И начнем мы с последнего, потому что он самый простой и не требует особых настроек. Для установки пакета с MySQL необходимо в терминале выполнить следующую команду:

apt-get install mysql-server mysql-client libmysqlclient15-dev

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

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

root@localhost:~# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): # введите пароль пользователя root для MySQL, установленный выше.
Set new root password? [Y/n] # задать новый парооль root’а? Да
New password: # ввести пароль
Re-enter new password: # подтвердить пароль
Remove anonymous users? [Y/n] # удалить анонимных пользователей? Да
Disallow root login remotely? [Y/n] # запретить удаленных вход под root’ом? Да
Remove test database and access to it? [Y/n] # удалить тестовую БД? Да
Reload privilege tables now? [Y/n] # перезагрузить привилегии? Да

После внесения изменений в настройки необходимо перезапустить MySQL, чтобы они вступили в силу:

/etc/init.d/mysql restart

Установка Веб сервера

Начинается самое интересное, нам нужно поставить непосредственно сам веб сервер, а так же я бы порекомендовал сделать backup, для этого вставте флешку в свой стационарный комп и в терминале выполните следующее:

sudo dd if=/dev/mmcblk0 of=my_hackberry.img bs=4M

В этой статье мы будем реализовывать веб сервер из связки apache2 + php но в продолжении к этой статье я расскажу как поставить связку веб сервер nginx + php-cgi + eaccelerator + memcache.

Веб сервер Apache и PHP

Теперь настала пора ставить сервер Apache и интерпритатор PHP. Начнем с Apache. Существует несколько различных пакетов этого сервера, отличающихся некоторыми свойствами. Я рассмотрю два из них, остальные вы при желании сами изучите:

apache2-mpm-worker — особенность этого пакета в том, что на каждый новый процесс создается несколько потоков. Количество потоков на процесс регулируется с помощью конфига Apache. Поскольку для ОС поток более простая и легкая структура, они более эффективно используют память и работают быстрее. Но в то же время этот пакет более подвержен сбоям, так как любой поток имеет доступ ко всей памяти процесса и в случаи падения одного потока обрушается весь процесс с остальными потоками. Но из-за быстроты работы его рекомендуют для высоконагруженных систем.
apache2-mpm-prefork — особенность этого пакета в том, что на каждый отдельный процесс создается только один поток. Получается, что в данном случаи процесс, как более сложная и большая структура, использует больше ресурсов потому и медленнее работает, но зато он менее подвержен сбоям.
Какой пакет вы будите использовать будет зависеть от конкретного проекта и его задач. В данном мануале мы будем ставить apache2-mpm-prefork, как наиболее надежный и устойчивый в работе. Правда, установка одного совершенно не отличается от установки другого, только название пакета поменять. Ладно, не важно. Чтобы установить Apache необходимо выполнить в терминале следующую команду (плюс там еще пара нужных пакетов ставиться):

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

После выполнения этой команды сервер Apache должен встать без проблем. Теперь осталость установить интерпритатор PHP, плюс некоторые основные модули, которые пригодятся в работе:

apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-mysql php5-gd php5-mcrypt php5-xmlrpc

проверим все ли у нас хорошо:

nano /var/www/i.php

#в код вставим
‹?php phpinfo(); ?›

Продолжаем…

Создание виртуального хоста

Теперь перед нами стоит задача зделать так что бы наши заранее зарегистрированые домены ссылались на наш новоиспеченный сервер. Я опишу самый простой способ как это сделать.

Для этого нам понадобится воспользоваться DNS серверами регистратора домена или DNS серверами какого нибудь хостера к которому уже привязаны домены. В любом случае для того что бы наши домены начали ссылаться на наш сервер необходимо добавить A записть с IP адресом нашего сервера. Обновление DNS обычно занимает 6ч-24ч.

Предположем что DNS обновились и домены все ссылаются на наш сервер но они все отображают содержимое папки /var/www/. Теперь нам нужно сбросим файлы, которые по умолчанию ищут корень сайта в /var/www следующей командой:

rm -f /etc/apache2/sites-enabled/*

Создаем директории которые нам нужны, я буду создавать их в папке своего пользователя которого я создавал в начальных настройках Debian, например regname:
mkdir /home/regname/www/
mkdir /home/regname/~logs/

Что бы в дальнейшем у нас небыло ошибок при перезапуске apache нам нужно добавить строчку в файл /etc/apache2/conf.d/vhosts.conf
nano /etc/apache2/conf.d/vhosts.conf
ServerName 127.0.0.1
и
nano /etc/apache2/conf.d/virtual.conf
NameVirtualHost *
Теперь для каждого домена создаем следующие папки
mkdir /home/regname/www/site1/
mkdir /home/regname/www/site1/htdocs/
mkdir /home/regname/www/site1/cgi-bin/
mkdir /home/regname/www/site1/logs/

папка htdocs будет корневой для сайта в ней мы создаем временный индексный файл
nano /home/regname/www/site1/htdocs/index.php
‹?php echo «site1»; ?›

также для каждого домена создаем конфиг непосредственно виртуального хоста

nano /etc/apache2/sites-available/site1.conf

‹VirtualHost *›
ServerAdmin you@mail.box
ServerName www.you-site.ru
ServerAlias yousite.ru

# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /home/regname/www/site1/htdocs/

# CGI Directory
ScriptAlias /cgi-bin/ /home/regname/www/site1/cgi-bin/
‹Location /cgi-bin›
Options +ExecCGI
‹/Location›

# Logfiles
ErrorLog /home/regname/www/site1/logs/error.log
CustomLog /home/regname/www/site1/logs/access.log combined
‹/VirtualHost›

Включаем наш, только что созданный, новых виртуальный хост. Для этого делаем символическую ссылку:

ln -s /etc/apache2/sites-available/site1.conf /etc/apache2/sites-enabled/site1.conf

осталось только перезапустить сервер, чтобы новый хост заработал:

/etc/init.d/apache2 restart

и так для каждого другого домена…

Устанавливаем и настраиваем phpMyAdmin

Можно поставить phpMyAdmin в папке каждого сайта но это глупо, по этому я предлагаю поставить его в одном месте и сделать доступным на отдельном поддомене. предположим что у нас же есть подомен который ссылается на наш сервер.

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

apt-get install phpmyadmin

теперь как и для виртуального хоста создадим конфиги внего скопируем

nano /etc/apache2/sites-available/phpmyadmin.conf
‹VirtualHost *›
ServerAdmin you@mail.box
ServerName www.phpmyadmin.yousite.ru
ServerAlias phpmyadmin.yousite.ru

# Indexes + Directory Root.
DocumentRoot /usr/share/phpmyadmin/

# Logfiles
ErrorLog /home/do0zy/~logs/phpmyadmin.error.log
CustomLog /home/do0zy/~logs/phpmyadmin.access.log combined
‹/VirtualHost›

создаем так же ссылку

ln -s /etc/apache2/sites-available/phpmyadmin.conf /etc/apache2/sites-enabled/phpmyadmin.conf

так же можно поставить mod_rewrite не будет лишним:

Mod_Rewrite

apt-get install php5-rewrite
a2enmod rewrite

Тэги: , , ,

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