Порой все что я делал на Ubuntu Trusty на работе и дома я хотел бы повторить, но ориентировавшись на купленный в этом году миникомпьютер Raspberry Pi 3 Model B+. Мне просто интересно, как он себя поведет, справлюсь ли я с той ответственной задачей. Вот недавно я для домашнего использования разобрал шаги, как заставить работать персональное облако под файлы на Raspberry Pi 3. Я все задокумментировал, если вдруг мне понадобится переустанавливать или разворачивать знакомым, потому как я уже убедился и не раз, что если ты даешь инструкцию со всеми необходимыми действия, то для тебя это кажется легко, а вот для некоторых нет. И не важно какая это инструкция, столь подробная как это или какая-либо другая. Просто подготовка каждого человека отличается. Чего же я добился данной задачей, а то что теперь мой сервис для хранения заметок располагается на маленькой плате с подключенным к ней либо внешним жестким диском, либо домашним хранилищем WD My Book Live Duo.
Вся работа была проделана на связке дистрибутива jessie + owncloud + nginx
С чего обычно начинают если поставлена задача, это со сбора всей доступной информации, а после с подготовки системы, которую можно проделать обратившись к этой заметке. Ну, а далее разбираю, как поставить OwnCloud
на свой миникомпьютер Raspberry Pi 3 Model B+
Итак, моя система:
pi@raspberrypi:~ $ uname -a && lsb_release -a
Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
pi@raspberrypi:~ $ sudo usermod -a -G www-data www-data
Начинаю заметку с установки необходимых пакетов для выполнения задачи:
pi@raspberrypi:~ $ sudo apt-get install nginx openssl ssl-cert php5-cli php5-mysql php5-gd php5-common php5-cgi php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-curl php5-gd php5-fpm memcached php5-memcache varnish -y
Создаю SSL сертификат, чтобы доступ к собственному облаку был по URL ссылке вида https, а не http:
pi@raspberrypi:~ $ sudo openssl req $@ -new -x509 -days 3650 -nodes -out /etc/nginx/server.pem -keyout /etc/nginx/server.key
Common Name (e.g. server FQDN or YOUR name) []: 10.7.8.53
На заметку: указываю либо IP адрес, либо полное DNS имя с суффиксом, к примеру: raspberry.polygon.local, но т. к. данный сервис owncloud будет внутри локальной сети, а доступ к нему из вне посредством проброса порта, то правильнее будет указать IP адрес текущей системы как сделал Я.
pi@raspberrypi:~ $ sudo chmod 600 /etc/nginx/server.pem
pi@raspberrypi:~ $ sudo chmod 600 /etc/nginx/server.key
pi@raspberrypi:~ $ cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
processor : 2
processor : 3
pi@raspberrypi:~ $ sudo nano /etc/nginx/nginx.conf
worker_processes 4;
worker_connections 1024;
pi@raspberrypi:~ $ sudo su root bash -c "cat > /etc/nginx/sites-available/default"
^C (Нажимаю сочетание клавиш Ctrl + C)
pi@raspberrypi:~ $
pi@raspberrypi:~ $ sudo unlink /etc/nginx/sites-available/default
pi@raspberrypi:~ $ sudo nano /etc/nginx/conf.d/owncloud.conf
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name 10.7.8.53;
return 301 https://$server_name$request_uri; # enforce https
}
server {
listen 443 ssl;
server_name 10.7.8.53;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; ";
ssl_certificate /etc/nginx/server.pem;
ssl_certificate_key /etc/nginx/server.key;
# Path to the root of your installation
root /var/www/owncloud;
client_max_body_size 2000M; # set max upload size
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
deny all;
}
location / {
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
}
location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
access_log off;
}
}
pi@raspberrypi:~ $ sudo vi /etc/php5/fpm/php.ini
upload_max_filesize = 2000M
post_max_size = 2000M
pi@raspberrypi:~ $ sudo nano /etc/php5/fpm/pool.d/www.conf
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000
Увеличиваем размер swap файла со 100Мб до 512Мб:
pi@raspberrypi:~ $ sudo nano /etc/dphys-swapfile
#CONF_SWAPSIZE=100
CONF_SWAPSIZE=512
pi@raspberrypi:~ $ sudo reboot
Теперь разворачиваем программное обеспечение owncloud на подготовленную систему Raspbian:
pi@raspberrypi:~ $ sudo mkdir -p /var/www/owncloud
pi@raspberrypi:~ $ wget https://download.owncloud.org/community/owncloud-9.1.4.tar.bz2
pi@raspberrypi:~ $ bzip2 -d owncloud-9.1.4.tar.bz2
pi@raspberrypi:~ $ tar xf owncloud-9.1.4.tar
pi@raspberrypi:~ $ sudo mv owncloud/ /var/www/
pi@raspberrypi:~ $ sudo chown -R www-data:www-data /var/www
pi@raspberrypi:~ $ rm owncloud-9.1.4.tar
pi@raspberrypi:~ $ sudo nano /var/www/owncloud/.htaccess
#php_value upload_max_filesize 513M
php_value upload_max_filesize 2000M
#php_value post_max_size 513M
php_value post_max_size 2000M
#php_value memory_limit 512M
php_value memory_limit 2000M
После не забываем сохранить внесенные изменения.
Теперь нужно установить MySQL, т. к. для работы OwnCloud нужна база:
pi@raspberrypi:~ $ sudo apt-get install mysql-server -y
New password for the MySQL "root" user: 712mbddr@
Repeat password for the MySQL "root" user: 712mbddr@
pi@raspberrypi:~ $ sudo mysql_secure_installation
pi@raspberrypi:~ $ mysql -u root -p712mbddr@
mysql> create database db_owncloud character set utf8;
mysql> create user 'us_own'@'localhost' identified by '612mbddr@';
mysql> grant all on db_owncloud.* to 'us_own'@'localhost';
mysql> flush privileges;
mysql> exit;
Далее проверяю что Web–сервис nginx работоспособен с текущими настройками которые я проделал выше:
pi@raspberrypi:~ $ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
pi@raspberrypi:~ $ sudo service php5-fpm restart
pi@raspberrypi:~ $ sudo service nginx stop && sudo service nginx start
pi@raspberrypi:~ $ sudo netstat -tulpn | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 7843/nginx -g daemon
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7843/nginx -g daemon
Теперь открываем браузер со своей рабочей станции и в строке адреса указываем http://IP&DNS (сменится на https://IP&DNS) адрес сервера где шагами выше развернули сервис персонального облака на собственном железе, точнее миникомпьютере Raspberry Pi 3 Model B+.
И указываю параметры настройки:
Create an admin account:
- Username: ekzorchik
- Password: 712mbddr@
- Data folder: /var/www/owncloud/data
Т.к. у меня только MySQL установлена, то и установщик говорит мне об этом: Only MySQL/MariaDB is available.
- Database user: us_user
- Database password: 612mbddr@
- Database name: db_owncloud
localhost
и нажимаю Finish Setup, ожидаю:
Да не быстро происходит установка, но это же не ноутбук и не компьютер, а все таки миникомпьютер Raspberry Pi 3 Model B+
Но спустя несколько минут, я успешно провалился в Web-интерфейс управления развернутого сервиса по организации персонального облака файлов/наработок, по сути это аналог Dropbox,Yandex-диск,Mail-диск, за исключение что все Ваше и платить не нужно. Ваше железо, бесплатный софт и Ваша квалификация на поддержку всего и вся.
Проверяю, каково использование системы после разворачивания программного обеспечения owncloud на Raspberry Pi 3 Model B+ операционной системе Raspbian:
pi@raspberrypi:~ $ free -m
Вывод: всё же 1Gb оперативной памяти для собственного хранилища как-то маловато, да и насилие над картой памяти MicroSD не внушает доверие по размещению важной информации в собственном облаке. Все же лучше использовать либо собранный под эту задачу компьютер с возможностью организации RAID. Ведь не столь ценно железо, как информация хранимая на нем. Если хочется просто поэкспериментировать, то такой вариант использования Owncloud на Raspberry Pi 3 Model B+ может сгодится.
Вообще задумка данной заметки была в том, чтобы через USB подключить к миникомпьютеру внешний жесткий диск и все файлы хранить на нем. Плюс к этому раз в день делать резервную копию каталога data на внешнее хранилище.
Отлично, задача выполнена. Вот собственно и всё, с уважением Олло Александр aka ekzorchik.