В прошлых частах мы рассмотрели как прошить cubitruck системой lubuntu-server а также как настроить роутер для обслуживания нашего мини-сервера. Следующий и завершающий этап - установка необходимого софт. Выбор программного обеcпечения полностью зависит от ваших нужд, я же остановлюсь на популярном наборе Linux Apache Mysql PHP. Для доступа к файлам на сервере будет выполнена установка SFTP (SSH FTP). Для проверки LAMP установим wordpress.  

Выполнять команды на сервере будем при помощи ssh, который по дефолту установлен и запущен на lubuntu-server в cubie. Установка ssh-клиента в linux обычно уже выполнена, а в винде можно использовать либо PuTTY, либо Unix-подобное окружение. Подключение по ssh будем выполнять только из локальной сети, если же вам нужно работать на сервере не из дома, то придется пробросить 22ой порт на роутере (так как это делалось с 80ым портом в статье про настройку роутера).

В установленной ОС есть пользователь linaro cо стандартным паролем linaro. Заходим под него:

ssh [email protected]

Yes, вводим пароль linaro.

Теперь сразу же установим пароль рута:

sudo passwd

Вводим пароль, затем повторяем его.

Ну и аналогично изменим пароль для юзера linaro:

sudo passwd linaro

Даже если все порты кроме 80ого будут закрыты, старайтесь уделять внимание безопасности, в частности надежности паролей, потому что все, что "слушает" интернет очень сильно подвержено всяким автоматизированным атакам, брутфорсам, ддосам и т.д. Как показывал лог одного сервера с которым я имел дело, даже почти никому неизвестный белый адрес являлся объектом различных атак. Одна из атак увенчалась успехом и внедрила rootkit, который привел Fedor-у буквально в непригодное состояние. Причиной вероятно стал открытый порт ssh и пароль типа qwerty. Не стоит думать что linux решит за вас проблемы с безопасностью если вы используете ненадежные пароли.

Обновление системы на cubietruck

Прошитая система lubuntu linaro нумеруется как 13.09 и использует репозитарии для дистрибутива raring (Ubuntu 13.04), срок поддержки которого закончился еще в январе 2014. Поэтому придется заменить зеркала пакетов на old-releases.ubuntu.com.

Для этого открываем файл зеркал для apt-get:

sudo nano /etc/apt/sources.list

Там сейчас должно быть:

deb http://ports.ubuntu.com/ubuntu-ports/ raring main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ raring main universe

Удаляем обе и вместо них вставляем:

deb http://old-releases.ubuntu.com/ubuntu/ raring main universe restricted multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main universe restricted multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-security main universe restricted multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-security main universe restricted multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main universe restricted multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main universe restricted multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse

Все, выходим, сохраняя файл: Ctrl+X, Y, <enter>.

Теперь обновляем систему:

sudo apt-get update
sudo apt-get upgrade

Для установки правильного времени настроим часовой пояс запустив:

sudo dpkg-reconfigure tzdata

Там можно выбрать например Europe а потом Kiev.

Проверим время:

date

Так как часы RTC питаются от батарейки на CT, и время было установлено на заводе, время и дата должны быть сразу правильными.

Дальнейшая настройка ничем не отличается от настройки web-серверов на любом дистрибутиве Ubuntu Server.

Настройка SFTP (SSH File Transfer Protocol) для загрузки файлов на сервер

Имея дело с веб-сервером частенько приходится загружать на сервер файлы. Обычно для этого используют FTP-сервер по протоколу FTP или FTPS. Но можно воспользоваться протоколом SFTP который поддерживается уже установленным openssh-сервером, его и предлагаю использовать, тем более что он считается более безопасным.

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

#создаем юзера web, присвоим ему директорию /var/www/web в качестве домашней (в ней и будут лежать сайты), 
#ключ -m сам создаст домашнюю папку, а -k с параметром /dev/null указывает что эту папку не нужно наполнять стандартными файлами пользователя
#да и интерпретатор этому юзеру не нужен (-s), зато юзера нужно зачислить юзера в группу www-data
sudo useradd -d /var/www/web -m -k /dev/null -s /bin/false web -G www-data
#зададим юзеру пароль 
sudo passwd web
#владельцем(owner-ом) директории с сайтами должен быть рут (так надо для sftp)
# а вот группа будет www-data
sudo chown root:www-data /var/www/web
# Еще для sftp нужно что бы права на все папки по пути до нашей web имели права 755 (rwx для овнера, rx для группы и остальных).
sudo chmod 755 /var /var/www /var/www/web
#Поставим флаг GID на папку, чтобы создаваемые в ней файлы и папки наследовали группу данной папки (www-data)
sudo chmod g+s /var/www/web

Теперь нужно отредактировать /etc/ssh/sshd_config, закомментировать в нем строку:

Subsystem sftp /usr/lib/openssh/sftp-server

А также:

UsePAM yes 

И добавить новые строки строки:

Subsystem sftp internal-sftp
Match User web
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp -u 0007

Тут мы создаем фильтр для пользователя web, для которого нужно выполнить изменение корня (chroot) в его домашнюю попку. Последняя строка задает umask для файлов и папок создаваемых клиентом sftp. umask равный 0007 задает права 770 для новых каталогов и права 660 для новых файлов. Таких прав будет достаточно для apache.

Рестартуем ssh сервер:

sudo service ssh restart

Все, пробуем подключится c помощью какого-нибудь FTP клиента к 192.168.1.168, указав протокол SFTP, пользователя web, и его пароль. Разумеется, FTP-клиент должен поддерживать протокол sftp. После подключения вы получаете доступ только к каталогу /var/www/web, однако обратите внимание что владельцем каталога является root, а право на запись в каталог (w) есть только у владельца. То есть создавать файлы в этом каталоге из клиента SFTP вы не можете (это может только владелец, а владелец - root). Для возможности записи мы должны будем от имени суперпользователя создать каталог в /var/www/web и назначить его владельцем юзера web. 

Создание сайта

После установки нужного софта, можем создать тестовый сайт.

Вместо имя_сайта и домен_сайта у вас должны быть свои значения.

Сначала создаем директорию для аплоада файлов сайта:

sudo mkdir /var/www/web/имя_сайта
sudo chown web /var/www/web/имя_сайта
sudo chmod 775 /var/www/web/имя_сайта

Далее создаем виртуалхост для apache /etc/apache2/sites-available/имя_сайта:

<VirtualHost *:80>
    DocumentRoot /var/www/web/имя_сайта
    ServerName домен_сайта
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/web/имя_сайта>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Запускаем сайт:

sudo a2ensite имя_сайта

Перезапускаем апач:

sudo service apache2 reload

Теперь для теста можно закинуть по SFTP файл index.php с таким содержанием:

<? echo phpinfo();

И зайти на домен_сайта в браузере. Если появится страница с инфой про PHP то все ок.

Создание БД в MYSQL

Для управления БД mysql можно либо установить php-админку PMA, либо создать базу вручную. Второй способ более безопасен и не требует дополнительных ресурсов, поэтому я покажу его.

После обновления системы mysql сломался, пришлось переустанавливать:

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5.5
sudo dpkg --purge mysql-server-core-5.5
sudo dpkg --purge mysql-client-core-5.5
sudo userdel mysql
sudo rm /etc/mysql/ -R
sudo rm /var/lib/mysql/ -R
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install linaro-lamp-server

На этапе переустановки спросило пароль для пользователя root БД.

Для первоначальной настройки mysql выполняем:

sudo mysql_install_db

И интерактивный скрипт настройки:

sudo mysql_secure_installation

На первый вопрос (о вводе пароля юзера root базы) введите просто ентер если пароль еще не задан. На следующий вопрос "Change the root password?" можно ответить n если текущий пароль вас устраивает, либо Y если хотите поменять либо пароль не задан. Далее рекомендую нажать четыре раза Y.

Теперь можно создать юзера и базу для вашего проекта. Аналогично вместо имя_бд, имя_юзера_бд, пароль_юзера_бд придумайте свои, их и нужно будет задавать при настройке CMS или драйвере БД.

mysql -u root -p
CREATE DATABASE имя_бд;
CREATE USER имя_юзера_бд@localhost;
SET PASSWORD FOR имя_юзера_бд@localhost= PASSWORD("пароль_юзера_бд");
GRANT ALL PRIVILEGES ON имя_бд.* TO имя_юзера_бд@localhost IDENTIFIED BY 'пароль_юзера_бд';
FLUSH PRIVILEGES;
exit

Развертывание Wordpress

Выполним установку пары модулей php, которые могут понадобится при работе с wordpress:

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt php5-gd

Включим mod_rewrite:

sudo a2enmod rewrite
sudo service apache2 restart

Далее подключаемся любым клиентом по SFTP и разархивируем архив с wordpress, взятый, например с главного сайта https://wordpress.org/.

Заходим на домен сайта, и выполняем шаги установщика. На шаге настройки бд указываем имя_бд, имя_юзера_бд, пароль_юзера_бд заданные в прошлом разделе. Хост базы данных localhost.

Использование SFTP в Wordpress

Wordpress сам умеет устанавливать для себя плагины и обновления, что делает его более удобным. Но для этого ему нужен доступ по FTP, а с SFTP по дефолту он работать не умеет. Но это очень просто решается благодаря плагину https://wordpress.org/plugins/ssh-sftp-updater-support/installation/ . Просто распакуйте папку ssh-sftp-updater-support из архива в wp-content\plugins\ по sftp и активируйте в админке вордпреса SSH SFTP Updater Support. Теперь при установке новых плагинов или обновлений через админку нужно выбрать SSH2 а в поля просто ввести localhost, пользователя web и его пароль.

Создание беккапов

После того как весь софт установлен, его крайне желательно забеккапить. Также если ваши сайты "живые" и вам важно гарантировать сохранность вашей информации, беккапы необходимо делать с определенной переодичностью (раз в неделю или день).

Харнить беккапы нуобходимо в определенном хранилище не зависимом от сервера (так как любой жесткий диск/ссд может посыпаться). Самый простой способ который можно придумать это беккап по SSH на вашу локальную машину. Как это сделать описано здесь. Комманда просто создаст полных дамп файловой системы в который войдут все файлы пользователя, все ваши базы данных и развернуты приложения.

Бонус: Отключение светодиодов на Cubietruck

su
for i in /sys/class/leds/* ; do echo 0 > "$i"/brightness ; done