Когда делаешь что-то для себя то получается намного практичнее чем ищешь в сети информацию как сделать что-то. Вот к примеру я, листая различные статьи стал натыкаться на аббревиатуру NextCloud и соответственно загорелся желанием разобрать самолично что это есть такое. Оказывается это ответвление от проекта owncloud который я использую для доступа к домашним заметкам. Может оно окажется более удобным или приятным в использовании чем OwnCloud.
Разбор шагов установки на Ubuntu Trusty
- HDD = 70Gb (SATA)
- RAM = 4Gb
- CPU = 1процессор, 2 ядра
Подготавливаю систему:
ekzorchik@srv-host:~$ sudo rm -Rf /var/lib/apt/lists/
ekzorchik@srv-host:~$ sudo apt-get update && sudo apt-get upgrade -y
ekzorchik@srv-host:~$ sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial -y
ekzorchik@srv-host:~$ sudo rm /etc/localtime
ekzorchik@srv-host:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ekzorchik@srv-host:~$ sudo reboot
ekzorchik@srv-host:~$ uname -a && lsb_release -a
Linux srv-host 4.4.0-57-generic #78~14.04.1-Ubuntu SMP Sat Dec 10 00:14:47 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
Устанавливаю Web–сервер: Apache + MySQL + PHP
ekzorchik@srv-host:~$ sudo tasksel install lamp-server
- New password for the MySQL “root” user: 712mbddr@
- Repeat password for the MySQL “root” user: 712mbddr@
ekzorchik@srv-host:~$ sudo nano /etc/apache2/apache2.conf
ServerName srv-host
ekzorchik@srv-host:~$ sudo apt-get install libapache2-mod-php5 php5-gd php5-json php5-mysql php5-curl php5-intl php5-mcrypt php5-imagick unzip -y
Скачиваю самую последнюю версию пакета NextCloud:
ekzorchik@srv-host:~$ wget https://download.nextcloud.com/server/releases/nextcloud-11.0.0.zip
ekzorchik@srv-host:~$ unzip nextcloud-11.0.0.zip
ekzorchik@srv-host:~$ sudo mv nextcloud /var/www/html/
Создаю базу данных, пользователя и пароль под разворачиваемый сервис:
ekzorchik@srv-host:~$ mysql -u root -p712mbddr@
mysql> create user 'user_nextcloud'@'localhost' identified by '612mbddr@';
mysql> create database if not exists db_nextcloud;
mysql> grant all privileges on db_nextcloud.* to 'user_nextcloud'@'localhost' identified by '612mbddr@';
mysql> flush privileges;
mysql> exit;
Описываю сайт для доступа к разворачиваемому приложению:
ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-available/000-default.conf
ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf
ekzorchik@srv-host:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf
ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
DocumentRoot "/var/www/html/nextcloud"
ServerName 10.7.8.122
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
Satisfy Any
</Directory>
</VirtualHost>
ekzorchik@srv-host:~$ sudo a2ensite nextcloud.conf
ekzorchik@srv-host:~$ sudo service apache2 reload
Подгружаю модули:
ekzorchik@srv-host:~$ sudo a2enmod rewrite
ekzorchik@srv-host:~$ sudo a2enmod headers
ekzorchik@srv-host:~$ sudo a2enmod env
ekzorchik@srv-host:~$ sudo a2enmod dir
ekzorchik@srv-host:~$ sudo a2enmod mime
ekzorchik@srv-host:~$ sudo a2enmod setenvif
ekzorchik@srv-host:~$ sudo a2enmod ssl
Создаю каталог где будут храниться файлы собственного облака:
ekzorchik@srv-host:~$ sudo mkdir /var/www/html/nextcloud/data
ekzorchik@srv-host:~$ sudo chown -R www-data:www-data /var/www/html/nextcloud/
Теперь запускаю браузер и обращаюсь к URL вида: http://IP&DNS
и настраиваю, но в ответ мне вывод следующего содержания:
This version of Nextcloud requires at least PHP 5.6.0
You are currently running 5.5.9-1ubuntu4. Please update your PHP version.
Хорошо, устанавливаю PHP 5.6 в систему с подключение сторонних репозитариев:
ekzorchik@srv-host:~$ sudo add-apt-repository ppa:ondrej/php
ekzorchik@srv-host:~$ sudo apt-get update && sudo apt-get install python-software-properties -y
ekzorchik@srv-host:~$ php -v
PHP 5.5.9-1ubuntu4.20 (cli) (built: Oct 3 2016 13:00:37)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
ekzorchik@srv-host:~$ sudo apt-get install php5.6 php5.6-common php5.6-gd php5.6-json php5.6-curl php5.6-zip php5.6-xml php5.6-mbstring -y
ekzorchik@srv-host:~$ php -v
PHP 5.6.29-1+deb.sury.org~trusty+1 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
ekzorchik@srv-host:~$ sudo service apache2 reload
Возвращаюсь к браузеру с открытой странице конфигурирования: http://IP&DNS
увы все та же самая ошибка. Оказалось что нужно выгрузить модуль пятой версии и загрузить шестой.
ekzorchik@srv-host:~$ sudo a2dismod php5
ekzorchik@srv-host:~$ sudo a2enmod php5.6
ekzorchik@srv-host:~$ sudo service apache2 restart
После снова возвращаюсь к открытой странице инсталляции: http://IP&DNS и вот он долгожданный установщик, а нет из скриншота ниже видно что в системе не хватает драйвера для взаимодействия php интерфейса и базы данных, до устанавливаю:
ekzorchik@srv-host:~$ sudo apt-get install php5.6-mysql -y
ekzorchik@srv-host:~$ sudo service apache2 restart
После снова возвращаюсь к открытой странице инсталляции: http://IP&DNS и передо мной страница где нужно указать административного пользователя, его пароль, а также настройки подключения к базе данных:
Create an admin account:
- Login: ekzorchik
- Password: 712mbddr@
Data folder:
- Path: /var/www/html/nextcloud/data
Configure the database:
- Database user: user_nextcloud
- Database password: 612mbddr@
- Database name: db_nextcloud
- Месторасположение базы: localhost
а после нажимаю кнопку Finish setup, а после страница преображается в административный интерфейс развернутого форка owncloud и выглядит это также как и OwnCloud:
Пока конечно я в тестовой конфигурации погоняю данное приложение, а уже потом перейду на него, я за контроль и доверие только своему, а не вынесенному в облако. Предпочитаю все держать на своем контроле.
На этом все, нет не все, теперь нужно добавить доступ к хранилищу не через http, а https (зашифрованное соединение):
ekzorchik@srv-host:~$ openssl req -new -x509 -days 3650 -keyout nextcloud.key -out nextcloud.pem
writing new private key to ‘nextcloud .key’
Enter PEM pass phrase: 712mbddr@
Verifying – Enter PEM pass phrase: 712mbddr@
Common Name (e.g. server FQDN or YOUR name) []:10.7.8.122
ekzorchik@srv-host:~$ cp nextcloud.key{,.orig}
ekzorchik@srv-host:~$ openssl rsa -in nextcloud.key.orig -out nextcloud.key
Enter pass phrase for nextcloud.key.orig:712mbddr@
writing RSA key
ekzorchik@srv-host:~$ rm nextcloud.key.orig
ekzorchik@srv-host:~$ sudo cp nextcloud.pem /etc/ssl/certs/
ekzorchik@srv-host:~$ sudo cp nextcloud.key /etc/ssl/private/
ekzorchik@srv-host:~$ sudo chmod 0600 /etc/ssl/private/nextcloud.key
ekzorchik@srv-host:~$ sudo a2enmod ssl
ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/nextcloud
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/ssl/certs/nextcloud.pem
SSLCertificateKeyFile /etc/ssl/private/nextcloud.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
ekzorchik@srv-host:~$ sudo a2ensite nextcloud-ssl
ekzorchik@srv-host:~$ sudo apache2ctl configtest
Syntax OK
ekzorchik@srv-host:~$ sudo service apache2 restart
Теперь обращаюсь уже к странице вида, где URL адрес принимает вид: https://IP&DNS
Да работает, но работает и так и так http & https нужно это дело поправить, оставить только https:
ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerName 10.7.8.122
Redirect permanent / https://10.7.8.122/
</VirtualHost>
ekzorchik@srv-host:~$ sudo nano /etc/apache2/sites-available/nextcloud-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/nextcloud
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/ssl/certs/nextcloud.pem
SSLCertificateKeyFile /etc/ssl/private/nextcloud.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</IfModule>
</VirtualHost>
</IfModule>
ekzorchik@srv-host:~$ sudo service apache2 restart
После при обращении к URL странице хранилища произойдет автоматический редирект на требуемый URL вида: https://IP&DNS
Пока рано говорить стоит ли переходить с OwnCloud на NextCloud еще столько всего нужно проверить, но я не думаю что будет столь существенные отличия ведь это просто ответвление от исходного, а как я заметил шаги установки, необходимые пакеты, интерфейс все одно и тоже. Так что время покажет, а пока всё, с уважением автор блога — Олло Александр aka ekzorchik.